Hallo, ich hab da noch mal ne frage zu Dateien. Gibt es die möglichkeit wenn ich eine Datei geöffnet, die Anzahle der darin enthaltenen Zeichen abzufragen um die Größe eines Strings zur Laufzeit zu ermitteln.
int c, count; FILE *file=fopen("yoghurtquark.txt"); c=fgetc(file); for(count=0;c!=0;count++) c=fgetc(file); fclose(file);
edit: falls du den wert verwenden willst um einen entsprechend langen array zu deklarieren, solltest du count=1 initialisieren, sonst wird der 0-char nicht mitgerechnet... -- main($)??<-$<='?'>>2?main($-!!putchar( (("$;99M?GD??(??/x0d??/a:???;a"+'?'/4) ??($??)+'?'/3-2-1+$%2)??''?')):'?';??>Dieser Post wurde am 10.08.2003 um 18:05 Uhr von kronos editiert.
Sorry aber irgendwie versteh ich dein Code nicht so ganz.
In meiner Klasse habe ich einen String m_DataString[1024] deklariert und mit dieser Methode tue ich ihn füllen.
Da es aber sein kann das eine Datei mehr als 1024 Zeichen hat oder auch weniger wollte ich wie oben schon gefragt die Anzahle der Zeichen in der Datei ermitteln und den String zur Laufzeit erstellen.
Code:
bool CFILE::Read() { // Pruefen ob Datei geoeffnet if(m_File.is_open()) { // Pruefen ob Fehler beim lesen der Datei if(!m_File.read(m_DataString, 1024)) { cerr << "Fehler beim lesen der Datei" << endl; return false; } } else { cerr << "Datei zum lese nicht geöffnet" << endl; return false; }
@Heiko fopen erwartet zwei Parameter. Es ist wichtig, daß dieser zweite parameter den Wert "rb" hat. "r" oder "rt" tut nicht. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21)
@virtual jupp, den "rb" hab ich vergessen, die anderen tun nicht weil die glaub ich bei ascii 0x20 abschmieren das kommt davon wenn man einfach so aus dem kopf direkt ins Forum postet ohne zu testen. Klammer zu hab ich auch vergessen.
So hier die nun hoffentlich richtige version
C++:
int anzahlBytes(char* filename){ FILE *file int rv; if(!(file=fopen(filename,"rb")))return0; fseek(file,0,SEEK_END); rv=ftell(file); fclose(file); return rv; }
Gruss Heiko -- ...fleißig wie zwei WeißbroteDieser Post wurde am 11.08.2003 um 09:13 Uhr von Heiko editiert.
Um ganz sicher zu gehen, sollte fgetpos an Stelle von ftell verwendet werden: immerhin leben wir in einem Zeitzalter, wo Dateien ziemlich groß werden können, so daß ein fpos_t mit einem größeren Wertebereich mehr sicherheit bietet als ein plattes long. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21)