0
Mit dem folgenden Code versuche ich 4 Bytes aus einer Datei zu lesen:Fehler mit fseek
FILE *f
uint32_t read_program(int A)
{
long i;
uint32_t strofprog;
uint8_t tmp;
i = 4*A;
fseek(f,i,0);// set a position in file
if((tmp = getc(f)) != EOF)
{
while((i%(4*A)) < 4)
{
fseek(f, i, SEEK_SET);
tmp = getc(f);
strofprog = tmp;
strofprog <<= 8;
i++;
}
return strofprog;
}
else
{
fclose(f);
return -1;
};
}
Allerdings, wenn ich es laufen, kommt es zu dem folgenden Fehler:
main.c: In function ‘read_program’:
main.c:77: error: incompatible type for argument 1 of ‘fseek’
/usr/include/stdio.h:722: note: expected ‘struct FILE *’ but argument is of type ‘FILE’
Was mache ich falsch, und wie kann ich es beheben?
Ist das der echte Code? Überprüfen Sie die Erklärung von "f". – littleadv
ja. Die Deklaration von f ist FILE * f; dann f = fopen ("file.bin", "r"); – Ivan
'if ((tmp = getc (f))! = EOF)' ist nur korrekt, wenn 'tmp' als' int' deklariert ist! Auch Ihre innere Schleife prüft nicht, ob 'tmp'' EOF' ist entweder – Anthales