Output statt auf Bildschirm in Datei schreiben
-
Hallo,
ich wollte ein Programm schreiben, das z.B. in einer HTML-Datei alle ö durch ö ersetzt.
Aus Datei einlesen und dann auf den Bildschirm ausgeben ist kein Problem, aber ich hab's nicht hingekriegt, in die Datei zurück zu schreiben.So sieht's im Moment aus:
#include <stdio.h> int main() { char c; FILE *fp; fp = fopen("test.html", "r"); while((c = getc(fp)) != EOF) { switch(c) { case 'ä': printf("ä"); break; case 'ö': printf("ö"); break; case 'ü': printf("ü"); break; case 'Ä': printf("Ä"); break; case 'Ö': printf("Ö"); break; case 'Ü': printf("Ü"); break; case 'ß': printf("ß"); break; default: putchar(c); } } fclose(fp); return 0; }
Wie kann ich das jetzt in die Datei zurück schreiben statt auf den Bildschirm?
Danke schonmal
ozzyrocks
-
nutze die Funktion fprintf() bzw fputc()
-
Also irgendwie klappt es nicht so recht.
Vielleicht stelle ich mich auch bloß zu blöd an ...So sieht es jetzt mit fprintf() und fputc() aus:
#include <stdio.h> int main() { char c; FILE *fp; fp = fopen("test.html", "r+"); while((c = getc(fp)) != EOF) { switch(c) { case 'ä': fprintf(fp, "ä"); break; case 'ö': fprintf(fp, "ö"); break; case 'ü': fprintf(fp, "ü"); break; case 'Ä': fprintf(fp, "Ä"); break; case 'Ö': fprintf(fp, "Ö"); break; case 'Ü': fprintf(fp, "Ü"); break; case 'ß': fprintf(fp, "ß"); break; default: fputc(c, fp); } } fclose(fp); return 0; }
-
du musst schon ne neue datei erstellen, so geht das nicht...
-
Und wenn ich es in der gleichen Datei ersetzen wollte, müsste ich sie vorher temporär kopieren?
So hab ich's jetzt (ohne kopieren):
#include <stdio.h> int main() { char c; FILE *fp, *fp2; fp = fopen("test.html", "r"); fp2 = fopen("test_neu.html", "w"); while((c = getc(fp)) != EOF) { switch(c) { case 'ä': fprintf(fp, "ä"); break; case 'ö': fprintf(fp, "ö"); break; case 'ü': fprintf(fp, "ü"); break; case 'Ä': fprintf(fp, "Ä"); break; case 'Ö': fprintf(fp, "Ö"); break; case 'Ü': fprintf(fp, "Ü"); break; case 'ß': fprintf(fp, "ß"); break; default: fputc(c, fp2); } } fclose(fp); fclose(fp2); return 0; }
Funktioniert aber immer noch nicht.
Z.B. aus "Württemberg" sollte ja "Württemberg" werden, es wird aber "Werg".
Ich habe keine Ahnung.EDIT:
Ich habe statt nach fp2 nach fp geschrieben (in Source-Code oben ist der Fehler noch zu sehen).
Es funktioniert jetzt.
Bleibt aber immer noch die Frage von oben:
Und wenn ich es in der gleichen Datei ersetzen wollte, müsste ich sie vorher temporär kopieren?