2017-06-11 2 views
-3

Ich möchte in eine TXT-Datei, eine Bereichsinformationen schreiben und mit dynamischen Vektoren arbeiten. Ich habe einen Header mit diesen Strukturen:Schreiben Sie Daten in eine TXT-Datei (C-Sprache)

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; 

und die Funktion:

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; 
} 

Was möchte ich auf die Datei anzuzeigen: Area (Name), Kapazität (kg) und die angrenzenden Gebiete . Es gibt mir diese Fehler:

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; 

Antwort

1

Der Fehler widersprüchlicher Typen für ‚criaArea‘ bedeutet, dass es zwei verschiedene Erklärungen von ‚criaArea‘. Das Sicherstellen, dass die Deklarationen von '' criaArea '' miteinander identisch sind, ist der Schlüssel, um den Fehler von in Konflikt stehenden Typen zu beheben. Aber Ihr Fehler scheint nicht von diesem Grund verursacht zu werden (widersprüchliche Typen). Ich denke, dass dieser Fehler durch die falsche Reihenfolge der Aufnahme der Kopfdatei in der C-Datei verursacht werden kann. Bitte zeigen Sie mehr Code, wenn Sie können. Sind Deklarationen und Definitionen der Funktion criaArea in Headerdatei (.h) und C-Datei (.c) getrennt definiert? Entschuldigung für schlechtes Englisch! Ich hoffe, das kann dir helfen!

+0

@Vasco Cardoso: Wenn Sie diese Funktion in derselben Datei aufrufen, in der Sie sie deklarieren, stellen Sie sicher, dass Sie einen Funktionsprototyp haben. Andernfalls wird die Funktion "implizit deklariert", um int zurückzugeben, und dies steht in Konflikt mit der Definition, die PAREA zurückgibt. –

+0

Ich stimme dir zu. Der beste Weg ist, dass Deklarationen von Funktionen oder C-Struct-Prototyp in die C-Kopf-Datei (.h) gestellt werden und Definitionen von Funktionen in die C-Datei (.c) gestellt werden sollten. Fügen Sie dann die Kopfdatei in die C-Datei ein, bevor Sie diese Funktionen verwenden (einschließlich Anruf oder Definieren der Funktionen). – WangYang

+0

Danke Jungs, @WangYang du hast Recht, es war die Reihenfolge der Funktionen ahah –

Verwandte Themen