Def: C-fopen Umlaute/Sonderzeichen

Beitrag lesen

Hallo,

Er gibt bis auf die Sonderzeichen alles richtig aus. Wenn ich printf("%i", c); ausprobiere, werden mir für die Sonderzeichen negative Werte ausgegeben. Wie kann ich das bewerkstelligen, dass mir die richtigen Zeichen ausgegeben werden? Ohne, dass ich mir jetzt für alle Sonderzeichen einzeln die Werte anzeigen lasse und dann per if-Befehl umwandel?

offen gesagt bin ich jetzt nicht sooo ein großer Experte, was Zeichensätze etc. angeht, und ich habe auch weder Lust und Zeit, selber irgendwelche Tests durchzuführen. Sollten meine Ausführungen also Quatsch sein, dann steinigt mich halt. ;-)
Wie schon die anderen geschrieben haben, liegt das Problem nicht unbedingt in deinem Programm, sondern erstmal an dieser "Windows-Konsole", die den sog. OEM-Zeichensatz verwendet. Ansonsten wird unter Windows ein anderer Zeichensatz benutzt (das, was du als ANSI bezeichnest). Und wie bereits Charles Petzold in seinen Büchern über Windowsprogrammierung dargelegt hat: "Unglücklicherweise macht das Vorhandensein dieser zwei Zeichensätze die Sache nicht doppelt so einfach."
Um es erstmal ganz einfach zu machen, vergessen wir vorläufig die Textdatei und nehmen folgendes Beispielprogramm:

  
#include <stdio.h>  
  
int main()  
{  
	printf("äöüßÄÖÜ\n");  
  
	return 0;  
}  

Du siehst: Auch das wird von der Windows-Konsole als OEM interpretiert.
Um das richtig umzuwandeln, probier mal die Windows-spezifische CharToOem()-Funktion aus, die sich mit Google leicht finden lässt. Wenn es gut klappt, sag ich mal herzlichen Glückwunsch. Ansonsten meld dich nochmal, dann kann man sich weiter an eine Lösung herantasten.
Viel Erfolg - ich hoffe, das hat dir geholfen.

Viele Grüße
Def