Problem bei Veränderung von Buchstaben
-
Ich habe folgendes Beispielprogramm aus dem Buch "C von A bis Z" kompiliert:
/* txt2html_example.c */ #include <stdio.h> #include <stdlib.h> /* nchars = Anzahl der Zeichen */ /* tag = Sonderzeichen in HTML */ /* ziel = Datei, in die geschrieben wird */ void sonderzeichen(int nchars, char *tag, FILE *ziel) { int i; char zeichen; for(i = 0; i < nchars; i++) { zeichen = tag[i]; putc(zeichen, ziel); } } int main(int argc, char **argv) { FILE *q, *z; int zeichen; if(argc < 3) { printf("Benutzung : %s quelle ziel\n", *argv); return EXIT_FAILURE; } q = fopen(argv[1], "r"); z = fopen(argv[2], "w"); if(q == NULL || z == NULL) { printf("Fehler bei Oeffnen einer Datei ...\n"); return EXIT_FAILURE; } while((zeichen=getc(q)) != EOF) { if(zeichen=='<') sonderzeichen(4,"<", z); else if(zeichen=='>') sonderzeichen(4,">", z); else if(zeichen=='\"') sonderzeichen(6,""",z); else if(zeichen=='&') sonderzeichen(5,"&",z); else if(zeichen=='ä') sonderzeichen(6 ,"ä",z); else if(zeichen=='Ä') sonderzeichen(6 ,"Ä",z); else if(zeichen=='ö') sonderzeichen(6 ,"ö",z); else if(zeichen=='Ö') sonderzeichen(6 ,"Ö",z); else if(zeichen=='ü') sonderzeichen(6 ,"ü",z); else if(zeichen=='Ü') sonderzeichen(6 ,"Ü",z); else if(zeichen=='ß') sonderzeichen(6 ,"ß",z); else putc(zeichen, z); } return EXIT_SUCCESS; }
Dann habe ich eine Testdatei mit dem Name Test.txt erstellt, der Dateiinhalt lautet "äöü".
Das Programm sollte eigentlich die Sonderzeichen in HTML-Schreibweise konvertieren, allerdings erstellt es wenn ich es mit "Programmname Test.txt Test.htm" aufrufe nur eine 1:1-Kopie von Test.txt.
-
Das Programm sollte eigentlich die Sonderzeichen in HTML-Schreibweise konvertieren, allerdings erstellt es wenn ich es mit "Programmname Test.txt Test.htm" aufrufe nur eine 1:1-Kopie von Test.txt.
Kuck dir den Dateiinhalt mit einem Texteditor und nicht mit einem Browser an
-
kugger schrieb:
Das Programm sollte eigentlich die Sonderzeichen in HTML-Schreibweise konvertieren, allerdings erstellt es wenn ich es mit "Programmname Test.txt Test.htm" aufrufe nur eine 1:1-Kopie von Test.txt.
Kuck dir den Dateiinhalt mit einem Texteditor und nicht mit einem Browser an
Habe den Dateiinhalt nicht im Browser, sondern in Notepad angeschaut.
-
Da fallen mir zwei Möglichkeiten ein:
1)
Compiler auf unsigned char eintellen.
2)
Casten:
if(zeichen == (unsigned char)'ä')
...
Gruß,
B.B.
-
^^wahrscheinlich sinds unterschiedliche 'code pages' oder irgendwelche inkompatiblen unicode-formate.
-
Das liegt daran, das z.B. ein 'ä' negativ ist, wenn der Compiler signed char als Vorgabe (default) hat. In meiner IDE kann ich unsigned char einstellen oder den Cast machen, dann funzt der Code.