B
sizeof(char) ist immer 1. Garantiert.
Der Fehler liegt an anderer Stelle. strcmp vergleicht Strings. Ein String ist definiert als eine Folge von chars, die durch ein NUL-char abgeschlossen wird. Wo ist denn bei dir bitte das Endezeichen? Es gibt keins, da dein Array nur für 1 Zeichen Platz hat, und du das immer per fread überschreibst.
Ums mal mit den Worten des Standards zu sagen: Das Verhalten ist undefiniert.. Das heißt im allgemeinen, dass alles passieren kann, und im besonderen, dass es auch zufällig so klappen kann, wie du dir das vorgestellt hast. Man könnte jetzt mutmaßen, warum es funktioniert hat, als die Schleife in der main stand, aber ich spar mir das.
Dein Code hat noch eine Reihe weiterer Fehler:
w ist beim ersten Prüfen der Bedingung nicht initialisiert
suchen ist vom Typ int, aber es wird kein Wert zurückgegeben
ftell liefert long, du gibst aber nur mit %d aus
Verbesserungsvorschlag:
#include <stdio.h>
void suchen(FILE *in)
{
char w = 0;
while (w != ';')
{
w = fgetc(in); puts("Funktion");
printf("%ld-%c\n", ftell(in), w);
}
}
int main(int argc,char *argv[])
{
FILE *in = fopen(argv[1],"r");
if (in) {
suchen(in);
fclose(in);
}
return 0;
}
[ Dieser Beitrag wurde am 20.10.2002 um 22:17 Uhr von Bashar editiert. ]