Fread
-
ganz einfache frage
int *x_size = 0; fread(x_size,sizeof(int),1,file_pointer);
wirft das nen fehler wenn im file nen char steht ?^^
-
Einfache Antwort:
Das gibt immer einen Fehler.
int *x_size = 0; size_t anz; printf("Lese anStelle %p\n", x_size); // :warning: anz = fread(x_size,sizeof(int),1,file_pointer); printf("gelesen: %lu\n", anz);
-
und wenn dieser fehler auftaucht sollte anz ungleich der anzahl der gelesenen "zeichen" sein, also ungleich 1 oder ?
-
weils mir grade, ich weis net warum auch hierbei den fehler wirft.
FILE *file_pointer = fopen(filename, "rb");
error: ‘file_pointer’ undeclared (first use in this function)
????
-
Sappel schrieb:
und wenn dieser fehler auftaucht sollte anz ungleich der anzahl der gelesenen "zeichen" sein, also ungleich 1 oder ?
Der Fehler ist, das du x_size mit 0 initialisierst.
x_size ist ein Zeiger auf int und den setzt du damit auf NULL.
Was du meinst ist:
int x_size = 0; size_t anz; printf("Lese anStelle %p\n", &x_size); // :warning: anz = fread(&x_size,sizeof(x_size),1,file_pointer); printf("gelesen: %lu\n", anz);
Und da gibt es keinen Fehler, wenn du weniger daten liest. anz ist aber ungleich sizeof(x_size). Dadurch kannst du das feststellen.
-
Sappel schrieb:
weils mir grade, ich weis net warum auch hierbei den fehler wirft.
FILE *file_pointer = fopen(filename, "rb");
error: ‘file_pointer’ undeclared (first use in this function)
????
Du hast vermutlich einen C89-Compiler, der Variablendeklarationen nur am Scope-Anfang erlaubt. Also pack die Zeile einfach ein wenig nach oben an den Anfang der Funktion.
-
@matze sry ich hätts vielleicht dazuschreiben sollen, ja ich hab den compiler, das geile is dran, das is die erste zeile^^
int readConfig(char *filename, int *x_size, int *y_size, char *prompt) { FILE *file_pointer = fopen(filename, "rb"); char *magic = NULL; . . . .
EDIT: ich trottel ich hab aus versehen für eine neue Funktion ein Makro definiert, welches FILE heist jetzt hat er hier nicht den Variablentyp sondern das Makro genommen, was dann im code natürlich keinen sinn mehr ergibt *move kopf to tisch*
-
Makros der Anfang allen Übels :p
#include <stdio.h> char foo(); #define foo main int foo(){ #undef foo #define main foo printf("foo\n"); printf("result %i\n", main()); return 0; } char main() { printf("main\n"); return 'A'; }
oder so:
#include <stdio.h> char foo(); #define foo main int foo(){ #undef foo printf("foo\n"); printf("result %i\n", foo()); return 0; } #define main foo char main() { printf("main\n"); return 'A'; }
-
HighLigerBiMBam schrieb:
...