2017-06-11 16 views
-3

.txtファイルと領域情報を書き、動的ベクトルで作業したい。.txtファイル(C言語)にデータを書き込む

struct area{ 
    // struct n_area * prox; 
    char nome[20]; 
    int peso; 
    int pesoatual; 
    int jaula; 
    int nareas; 
    char **vizinhos; 

}; 
typedef struct area AREA; 
typedef AREA *PAREA; 

と機能::

PAREA criaArea(){ 
    PAREA area; 
    area = (PAREA)malloc(sizeof(AREA)); 
    printf("Nome: "); 
    scanf("%s", area->nome); 
    printf("Capacidade: "); 
    scanf("%d", &area->peso); 
    area->peso = 0; 

    return area; 
} 

私は、ファイルに表示する: エリア(名)、容量(kg)及び隣接する領域 は、私はこれらの構造を持つヘッダを持っています。 それは私にこれらのエラーを与えている:

funcoes.c: At top level: 
funcoes.c:65:7: error: conflicting types for 'criaArea' 
PAREA criaArea(){ 
    ^
funcoes.c:38:22: note: previous implicit declaration of 'criaArea' was here 
      case 49: criaArea(); break; 

答えて

1

「criaArea」の相反するタイプのエラーは、「criaArea」の二つの異なる宣言が存在することを意味します。したがって、 'criaArea'の宣言が互いに同じであることを保証することが、競合する型のエラーを修正するための鍵です。しかし、あなたのエラーはこの理由(矛盾するタイプ)によって引き起こされたようではありません。私は、このエラーは、Cファイルにヘッドファイルを含む間違った順序によって引き起こされると考えています。可能であれば、もっとコードを表示してください。関数criaAreaの宣言と定義は、ヘッダファイル(.h)とCファイル(.c)で別々に定義されています。英語が苦手で申し訳ありません!私はあなたを助けることを願っています!

+0

@Vasco Cardoso:この関数を宣言した同じファイルで呼び出す場合は、関数プロトタイプがあることを確認してください。それ以外の場合、関数はintを返すように暗黙的に宣言され、PAREAを返す定義と競合します。 –

+0

私はあなたに同意します。最善の方法は、関数の宣言またはC構造体のプロトタイプをCヘッドファイル(.h)に入れ、関数の定義をCファイル(.c)に入れることです。次に、これらの機能を使用する前に、ヘッドファイルをCファイルに含めます(関数の呼び出しや関数の定義を含む)。 – WangYang

+0

ありがとう、@ WangYangあなたは正しい、それは機能の順序だったああ –

関連する問題