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?
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
tja, ich vermute mal das du eigentlich den kompletten inhalt der datei lesen willst. da gibt es verschiedene moeglichkeiten. der einfachste weg waere die groesse der datei in byte festzustellen und dann entsprechend viel speicher zu allozieren. dann kannst du die gelesenen zeichen in diesem speicher ablegen...
WM_HOPETHISHELPS
thomas woelfer
hä?
da komm ich jetzt nit ganz mit, ich will eigendlich nur den inhalt einer ascii-datei in eine char variable schreiben, um das dann ganz normal weiter zu bearbeiten.
muss ich das jetzt mit getc() machen und den output von stdout in die char variable umleiten, oder gibts da eine andere funktion, die diese aufgabe wewältigt?
danke für alle antworten
MFG the brain
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.]
danke!
funzt das unter linux auch, oder muss ich da was ändern?
the brain
ich hab des jetzt mal compilliert, aber kriege nur fehlermeldungen:
test.c: In function `main':
test.c:3: `DWORD' undeclared (first use in this function)
test.c:3: (Each undeclared identifier is reported only once
test.c:3: for each function it appears in.)
test.c:3: parse error before `dwFileSize'
test.c:5: `FILE' undeclared (first use in this function)
test.c:5: `pStream' undeclared (first use in this function)
test.c:6: `dwFileSize' undeclared (first use in this function)
test.c:6: `hFile' undeclared (first use in this function)
test.c:6: `NULL' undeclared (first use in this function)
was daran ändern?
was ich nicht ganz versteh:
dwFileSize = GetFileSize( hFile, NULL);
was ist hFile, bzw woher kommt die variable, ist das eine vordefinierte(kann irgendwie nicht sein, weil man ja auch das file angeben muss, dessen grösse man wissen will)?
PS:
>eine variable vom typ 'char' kann genau _ein_ zeichen aufnehmen.
natürlich meinte ich einen zeichenvektor, tschuldige
MFG the brain
tschuldige alle fehler in zeile 3 passieren, weil ich vergessen habe stdio.h zu includieren!