getc aus fread
-
Ich habe ein datei welche ich mit getc sehr einfach auslesen kann. Ich muss die Datei aber mit fread auslesen.
Deswegen soll ich fread so implementieren dass es genau so wie getc funktioniert.So sieht meine implementierung aus:
#include <stdio.h> main() { int *pic; FILE *fp1; fp1=fopen("garb34","rb"); fread(pic, sizeof(int), 1, fp1); printf("%d", *pic); fclose(fp1); }
Beim ausführen bekomme ich follgende Fehler: Segmentation fault
PS:Garb34 ist ein bin Datei.
Was mache ich falsch?
Danke
-
pic zeigt auf nichts. Alloziere Speicher mit malloc oder deklariere pic als array.
-
#include <stdio.h> main() { int *pic; FILE *fp1; fp1=fopen("garb34","rb"); fread(pic, sizeof(int), 1, fp1); printf("%d", *pic); fclose(fp1); }
Wenn man getc() nachbilden will, sollte man dann nicht
fread(pic, sizeof([b]char[/b]), 1, fp1);
verwenden?
EDIT:
und dann noch:printf("%[b]c[/b]", *pic);
-
Vielen Dank euch beiden!!
Die beide sind gleich:
fread(&pic[i][j], 1, 1, fp1); pic[i][j] = getc (fp1);
-
gast6 schrieb:
Ich habe ein datei welche ich mit getc sehr einfach auslesen kann. Ich muss die Datei aber mit fread auslesen.
Deswegen soll ich fread so implementieren dass es genau so wie getc funktioniert.Das ist doch Blödsinn.
1. Mit getc() kannst du keine Datei auslesen, nur mit fgetc()Um mal ein anderes Beispiel zu nehmen:
Angenommen, du hast 2 Strings:
char source[] = "Hello World!" char dest[30];
Gescheites Einlesen ist vergleichbar damit:
strcpy(dest, source);
fgetc() damit:
for(int i = 0; source[i] != '\0'; ++i) dest[i] = source[i]; dest[i] = '\0'
Und einzelnes fread damit:
int i = 0; for(;;) { char tmp; memcpy(&tmp, source + i, sizeof(char)); memcpy(dest + i, &tmp, sizeof(char)); if(tmp == '\0') return; ++i; }