Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

primitiver dateizugriff in c

the brain / 6 Antworten / Flachansicht Nickles

zeawus
ich will in meinem programm aus einer textdatei worte auslesen,
und sie als variablen(char) ganz normal weiterverarbeiten.
das proggi schaut jetzt so aus, was muss i ändern
#include "stdio.h"

main()
{
int c;
FILE *fp;

fp = fopen("/usr/local/bin/stp/input","r");
while (c != EOF){
c = getc(fp);
putc(c, stdout);
}
fclose(fp);
}

wie kann ich den output der datei in eine variable schreiben?

bei Antwort benachrichtigen
thomas woelfer the brain „hä? da komm ich jetzt nit ganz mit, ich will eigendlich nur den inhalt einer...“
Optionen

du _kannst_ den inhalt einer ascii datei nicht in einer variable vom typ char ablegen. eine variable vom typ 'char' kann genau _ein_ zeichen aufnehmen.

was du also brauchst ist ein speicherbereich der die datei auch aufnehmen kann. wieviel speicher du brauchst ist also von der groeser der datei abhaengig.

das bedeutet, du musst erst die dateigroesse ermitteln. dann must du speicher allozieren. die adresse des anfanges des allozierten blockes merkst du dir in einer char* variablen.

dann kannst du die datei in diesen block einlesen. das geht z.b. mit einem einzigen aufruf von fread().

danach kannst du mit dem speicherbereich machen was immer du willst.

z.b. (in c, unter win32):

DWORD dwFileSize;
char* pBuffer;
FILE* pStream;
dwFileSize = GetFileSize( hFile, NULL);
pBuffer = (char*)malloc( dwFileSize * sizeof(char));
pStream = fopen( "Name", "r");
fread( pBuffer, sizeof(char), dwFileSize, pStream);
fclose( pStream);

WM_HOPETHISHELPS
thomas woelfer

[Diese Nachricht wurde nachträglich bearbeitet.]

this posting contains no tpyos.
bei Antwort benachrichtigen