http://www.pronix.de -> Forum -> C-Programmieren

Unterseiten

Forum: C-Programmieren

Moderatoren: juergen, Martin Conrad

Thema: Zeiger Problem!:(

  • (nur registrierte Mitglieder)

Zeiger Problem!:(

Maksi am 11.01.2012 um 21:26

Hallo alle zusammen!!
Habe hoffentlich nur ein kleines Problem in meinem Programm!
Kann bitte jemand drüber gucken.

typedef struct TStud {
char name[20];
char gebdat [20];
char st[20];
char semester[10];
} Tstud;
TStud a;
FILE *f;


char lesen(FILE*f){
fscanf(f,"%s %s %s %s",&(a.name),&(a.gebdat),&(a.st),&(a.semester));

return printf("%s %s %s %s\n" ,a.name ,a.gebdat ,a.st ,a.semester);
}


char schreiben(FILE*f){
char b[10];
scanf("%s %s %s %s %c",&(a.name),&(a.gebdat),&(a.st),&(a.semester),&b[10]);

return fprintf(f,"%s %s %s %s" ,a.name ,a.gebdat ,a.st ,a.semester);

}




int _tmain(int argc, _TCHAR* argv[])
{
TStud a;
FILE *f;
f=fopen("Stud.txt","a+");

while(!feof(f)){
lesen(f);
}


char b[10]="0";
while(b[10]!='EOF'){
schreiben(f);

}
fclose (f);
 

Re: Zeiger Problem!:(

Patrick am 12.01.2012 um 07:55

http://www.tty1.net/smart-questions_de.html und Programmtext formatieren

--
To follow the path: look to the master, follow the master, walk with the master, see through the master, become the master.

 

[EDIT] - Re: Zeiger Problem!:(

bcc-fan am 12.01.2012 um 18:06

Hier:
fscanf(f,"%s %s %s %s",&(a.name),&(a.gebdat),&(a.st),&(a.semester));

brauchst du kein & da du strings einliest. Schau noch mal in deine Unterlagen.

Und dann noch mal ansehen das mit
char b[10]

Mit welcher Zahl fängt man bei C und verwandten Sprachen an zu zählen?

Die Rückgaben deiner Funktionen solltest du auch noch mal überdenken.

Globale und locale Varible kennst du? Wenn ja, würde ich die Namen im Quelltext ein wenig anders wählen damit eine Gefahr für Fehler geringer wird. Hab das nicht getestet ob letzteres bei dir jetzt eine Rolle spielt.

MfG bcc-fan

--
C/C++
only just for fun

 

Re: Zeiger Problem!:(

Maksi am 12.01.2012 um 19:17

typedef struct TStud { char name[20]; char gebdat [20]; char st[20]; char semester[10]; } Tstud; TStud a; FILE *f; Tstud lesen(FILE*f){ // Heißt es das der Rückgabewert direkt an die TStud übergeben wird? fscanf(f,"%s %s %s %s",a.name,a.gebdat,a.st,a.semester); return printf("%s %s %s %s\n" ,a.name ,a.gebdat ,a.st ,a.semester); } char schreiben(FILE*f){ char b[0]; scanf("%s %s %s %s %c",&(a.name),&(a.gebdat),&(a.st),&(a.semester),&b[10]); return fprintf(f,"%s %s %s %s" ,a.name ,a.gebdat ,a.st ,a.semester); } int _tmain(int argc, _TCHAR* argv[]) { //TStud a; //FILE *f; f=fopen("Stud.txt""a+"); while(!feof(f)){ a=lesen(f); } char b[10]="0"; while(b[10]!='EOF'){ schreiben(f); } fclose (f);
 

Re: Zeiger Problem!:(

Maksi am 12.01.2012 um 19:20

Ich habe mir gedacht sonst erkennt die Funktion (TStud unf FILE*f) nicht weil diese dann erst in der main vorkommen.



[C-CODE] typedef struct TStud {
char name[20];
char gebdat [20];
char st[20];
char semester[10];
} Tstud;
TStud a;
FILE *f;


Tstud lesen(FILE*f){ // Heißt es das der Rückgabewert direkt an die TStud übergeben wird?
fscanf(f,"%s %s %s %s",a.name,a.gebdat,a.st,a.semester);

return printf("%s %s %s %s\n" ,a.name ,a.gebdat ,a.st ,a.semester);
}


char schreiben(FILE*f){
char b[0];
scanf("%s %s %s %s %c",&(a.name),&(a.gebdat),&(a.st),&(a.semester),&b[10]);

return fprintf(f,"%s %s %s %s" ,a.name ,a.gebdat ,a.st ,a.semester);

}




int _tmain(int argc, _TCHAR* argv[])
{
//TStud a;
//FILE *f;
f=fopen("Stud.txt","a+");

while(!feof(f)){
a=lesen(f);
}


char b[10]="0";
while(b[10]!='EOF'){
schreiben(f);

}
fclose (f);
[C-CODE]
 
  • (nur registrierte Mitglieder)