004
06.11.2003, 11:59 Uhr
0xdeadbeef
Gott (Operator)
|
Ach ja, mein Fehler. Ich mach in letzter Zeit so selten C. Dafür ist der Rest des Codes Murks. Du liest, bis das erste mal die eingelesene Zeile das gleiche enthält wie C_HEADER, zählst i hoch (und erfüllst damit die Abbruchbedingung der Schleife) und schreibst das erste Byte des Strings "nix" in die Datei.
Du kannst natürlich versuchen, das direkt an der Datei zu machen, aber weil sich die Länge der Datei ändert, wird das auf die Art ziemlich kompliziert. Meistens ist es sinnvoller, die Ausgabe einfach in eine neue Datei zu schreiben und die dann ggf. auf die alte zu kopieren. Also:
C++: |
FILE *in = fopen("input.txt", "r"); FILE *out = fopen("output.txt", "w");
char linebuf[256]; int cnt = 0;
while(fgets(linebuf, 256, in)) { if(!strncmp(linebuf, C_HEADER, 255)) { ++cnt; } else { fputs(linebuf, out); } }
|
oder in C++:
C++: |
#include <fstream> #include <string>
//... std::ifstream in("input.txt"); std::ofstream out("output.txt");
std::string line; int cnt = 0;
while(in) { std::getline(line, in); if(line == C_HEADER) ++cnt; else out << line << std::endl; }
|
-- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 06.11.2003 um 12:06 Uhr von 0xdeadbeef editiert. |