austauschen
-
hallo ich bin gerade dabei ein c-programm zu schreiben, es soll ein text eingelesen werden und alle ä,ö,ü und ß in einer text copie ausgetauscht werden. mein problem dabei ist wie kann ich denndie zeichen tauschen.
ich habe es mit einer if anweisung probiert da kamm aber ein fehler raus "illegale charackter". wenn ihr eine lösung für das problem wisst das sagt mir bitte wie das geht. danke.
-
zeig uns doch mal was du schon hast.
-
soweit bin ich schon:
#include <stdio.h> void main (void) { char eingabedatei[20]; /* definition welche datei gewählt wird*/ char *ausgabedatei ="C:\\user\\eingabe.txt"; /*ziehl*/ char c, str[400]; FILE *in, *out; /* definition von lesen und schreiben*/ printf ("\n Geben Sie die zu bearbeitende datei ein \n"); scanf ("%s",eingabedatei); in = fopen (eingabedatei,"r"); out =fopen (ausgabedatei,"w"); if ((NULL==in)||(NULL==out)) { puts ("fehler beim offnen der Dateien"); return; } while (c=fgetc (in) != EFO) { fputc (c,out); } }
Edit by AJ: mit cpp siehts besser aus als mit i
-
Vor main() gehört ein int und das return sollte dann auch entsprechend einen Fehlercode (z. B. -1) zurückgeben.
Aber das ist erstmal nebensächlich. Bisher kopierst du ja nur die eingegebene Datei. Wie würde deine Abfrage aussehen?
Ist das EFO ein Abschreibfehler oder hast du das so wirklich im Quellcode stehen? Sollte eigentlich EOF heißen :).
In welcher Zeile ist der Fehler? (Am besten du kopierst die genaue Fehlermeldung rein, wenn sie noch kommt.)
-
sehr schön.
der ansatz ist gut.dein einziges problem (so weit ich es sehe) ist:
c=fgetc (in) != EFO
Ich nehme EFO mal als Tippfehler an, und nehme an, dass du EOF (End Of File) gemeint hast.
Das Problem ist hier aber, dass != eine höhere priorität als = hat.
auf deutsch heisst das, der compiler sieht es so:c=(fgetc (in) != EOF)
leicht erkennbar: c wird true oder false zugewiesen, je nachdem ob fgetc EOF liefert oder nicht.
einfach klammern und gut ist:
(c=fgetc (in)) != EOF
jetzt gibt es nur noch ein gemeines problem: EOF ist ein int und passt daher in einen char nicht rein. Lösung ist: c als int zu definieren und nicht als char.
das ist leider eine gemeine Falle.
als resultat haben wir dann (kleine stilsachen verbessert):
#include <stdio.h> int main (void) { char eingabedatei[20]; /* definition welche datei gewählt wird*/ char *ausgabedatei ="C:\\user\\eingabe.txt"; /*ziehl*/ char str[400]; int c; FILE *in=NULL, *out=NULL; /* definition von lesen und schreiben*/ printf ("\n Geben Sie die zu bearbeitende datei ein \n"); scanf ("%s",eingabedatei); in = fopen (eingabedatei,"r"); out =fopen (ausgabedatei,"w"); if ((NULL==in)||(NULL==out)) { puts ("fehler beim offnen der Dateien"); if(in) fclose(in); if(out) fclose(out); return 1; } while ((c=fgetc (in)) != EOF) { fputc (c,out); } fclose(in); fclose(out); return 0; }