sytax error
-
hallo hab folgendes problem. hab ein programm dass bis zu einer zeile läuft, wenn cih dann aber folgende funktion erstelle:
void fschreiben(FILE *ptr_datei, STUDENT* student)
{
zeichen_tauschen(student->perso.Vorname);
fprintf(ptr_datei,"%d",student->Matrikelnummer);
}kommt in der ersten zeile die fehlermeldung "syntax error: missing ";" before 'type'
aber wo soll da noch ein semikolon hin? im programmteil vorher kanns nciht sein, der läuft wenn mand ie funktion heir weglässt.
ausserdem gibt noch die fehlermeldung, dass ptr_datei und student undeclared identifier sind? ich hab sie aber doch durch den funktionsaufruf innerhalb der funktion deklariert?! STUDENT habe ich am anfang des programms der typedef als struktur definiert, das FILE habe ich aus nem anderen programm übernommen. kennt der compiler das so oder muss ich das auhc erst irgendwo deklarieren?
wäre nett wenn mir jemand helfen kann, dankewasserball
-
das problem ist, dass FILE und STUDENT nicht bekannt sind. Seltsam, da du sie ja anscheinend davor deklariert hast. Zeig vielleicht mal die deklaration der beiden Typen.
-
so hab ich student am anfang des programms deklariert, FILE habe ich nicht deklariert, ich dachte das würde c von haus aus kennen. wie muss ichd as denn deklarieren?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>#define MAX_PRUEFUNGEN 15
#define INITFILE "file1.cfg"typedef char STR30[30];
typedef struct student {
double Matrikelnummer;
PERSONALIEN perso;
int Fachsemesterzahl;
int Anzahl_angetr_Pruef;
PTR_PRUEFUNG ptrs_auf_pruef[15];
struct student *next_student;} STUDENT, *PTR_STUDENT;
-
schaut ganz vernuenftig aus.
mach mal ein minimal programm wo der fehler auftritt
denn der fehler heisst eigentlich, dass er entweder FILE oder STUDENT nicht kennt.
du koenntest aber auch in der funktion oberhalb von fschreiben() einen syntax fehler haben...
-
ich habs jetzt so, die fehlermeldung "missing ';' before 'type'" hat wohl was mit der funktion zeichen_tauschen zu tun, denn auch wenn ich die fuktion fschreiben weglassen, sagt der mir in der ersten zeile hinter der zeichen_tauschen funktion diese fehlermeldung.
aber auch so wie das programm jetzt ist, also reduziert auf ein minimum habe ich die fehlermeldungen ptr_datei und student sind undeclared identifier?!#include<stdio.h>
#include<stdlib.h>
#include<string.h>typedef char STR30[30];
typedef struct personalien {
STR30 Vorname;
STR30 Nachname;
STR30 Strasse;
int Hausnummer;
double PLZ;
STR30 Ort;} PERSONALIEN,*PTR_PERSONALIEN;
typedef struct student {
double Matrikelnummer;
PERSONALIEN perso;
int Fachsemesterzahl;
int Anzahl_angetr_Pruef;
struct student *next_student;} STUDENT, *PTR_STUDENT;
STUDENT *head = NULL;
void zeichen_tauschen(STR30 String) {
int i=0;
while((String+i) != '\0') {
if((String+i) == ' ')
{(String+i)= '_';}
else
if((String+i) == '_') {
*(String+i) = ' ';
i++;
}
}void fschreiben(FILE *ptr_datei, STUDENT* student)
{
zeichen_tauschen(student->perso.Vorname);
fprintf(ptr_datei,"%d",student->Matrikelnummer);
}void main()
{}
-
Du machst in zeichen_tauschen vier geschweifte Klammern auf, aber nur drei wieder zu.