Problem bei fread
-
Hi, ich moechte eine datei mit fread auslesen, mein Code sieht dann folgendermaßen aus:
char c;
FILE *pfile;
pfile=fopen("name","rb");if(!pfile)
return;fread(&c,sizeof(char),1,pfile);
printf("%s",txt);
fclose(pfile);Was ist daran falsch? Wie kann ich das gelesene am schnellsten in Großbuchstaben umwandeln?
Danke im voraus!!
-
printf("%s") erwartet eine Zeichenkette. Versuch mal printf("%c");
Für Großbuchstaben gibts toupper in ctype.h.
Btw, hier wäre fgetc() mehr angebracht als fread().
-
Bei %c gibt der mir aber nur ein Zeichen aus und nicht den ganzen Text!!
-
Na weil du mit fread() nur ein Zeichen einliest. Mehr würde in ein char auch garnicht reinpassen.
-
Wie kann ich dann mit fread den ganzen Text einlesen?
Sorry , ich habe aber erst gerade angefangen zu programmieren!!
-
fread ist für lesen in binärdateien gadacht.
fread(&c,sizeof(char),1,pfile);
heisst soviel wie:
hole _1_ objekt der grösse _char_ (=1byte) aus der datei auf die _pfile_ zeigt undschreib das ganze an die stelle &cdas ist für das lesen austextdateien vielzu umständlich. nur notwendig wenn du "nicht-lesbare" binärdaten, etwa ein feld oder eine struktur in dateien speicherst.
für deine zwecke ist fgetc einfacher/besser ...
probiers mal damit
-
Deklarier doch "c" einfach mal als char-Zeichenkette und nicht als einzelnes Zeichen!
-
Hier ist mal ein kleines bsp zu fread ich habe es aber nicht getestet!
{
FILE *stream;
char *puffer;
int laenge;stream = fopen("C:\\test.bin", "wb");
if(stream != NULL)
{
fseek(stream, 0, SEEK_END);//ans ende der Datei
laenge = ftell(stream);//jetzt die groesse der Datei ermitteln
fseek(stream, 0, SEEK_SET);//wieder an den Anfangpuffer = (char*) malloc(laenge);/*den puffer so groß wie die Datei ist damit der ganze text reinpasst. */
fread(puffer, laenge, sizeof(char), stream);
printf("%s", puffer);
fclose(stream);
}
}Vielleicht konnte ich dir ein bischen helfen aber wie gesagt ist nicht getestet bei Fragen Frag!
MfG Schirrmie