Alexander (HH): C-fopen Umlaute/Sonderzeichen

Beitrag lesen

Moin Moin!

Hallo,

ich habe ein Programm in ANSI-C geschrieben, habe jetzt aber noch ein Problem mit Sonderzeichen. Hier ein Auszug:

FILE *ptr;

  	ptr = fopen("xxx.txt","rb");  

Was passiert, wenn  fopen fehlschlägt, weil Dir Rechte fehlen, die Datei nicht existiert, oder gelockt ist?

  while((c = fgetc(ptr)) != EOF)  
  {  

  	if(c==13)  
  		printf("\n");  
  	else  
  		printf("%c", c);  

Hier fehlen zwei Paar geschweifte Klammern, auch wenn der Compiler den Code ohne Klammern frißt. Irgendwann beißt Dich die Tippfaulheit.

  }  

Er gibt bis auf die Sonderzeichen alles richtig aus. Wenn ich printf("%i", c); ausprobiere, werden mir für die Sonderzeichen negative Werte ausgegeben.

Logisch. Die meisten C-Compiler definieren char als signed. (Was auch immer K&R geraucht haben, als sie das ausgebrütet haben ...)

Wie kann ich das bewerkstelligen, dass mir die richtigen Zeichen ausgegeben werden?

Definiere "richtig".

Ohne, dass ich mir jetzt für alle Sonderzeichen einzeln die Werte anzeigen lasse und dann per if-Befehl umwandel?

Suchst Du switch/case? Suchst Du eine ASCII-Tabelle?

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".