Hallo zusammen,
vielleicht bin ich hier völlig falsch, vielleicht kann mir aber auch jemand
helfen.
Ich möchte mittels "fprintf" Strings in eine Datei schreiben (unter linux, ist
aber vermutlich davon unabhängig). Ein Minimalbeispiel:
#include
int main (void){
FILE *outfile;
outfile=fopen("test.dat", "w");
fprintf(outfile, ">>%-36s<<\n", "Hier beginnt es:");
fprintf(outfile, ">>%-36s<<\n", "Viele Grüße!");
fprintf(outfile, ">>%-36s<<\n", "Viele Gruesse!");
fclose (outfile);
return(0);
}
Die Zeile mit "Viele Grüße" (2 Umlaute) ist 2 Zeichen kürzer als die anderen
beiden Zeilen, wohl weil "C" für "ü" und "ß" als utf8 je 2 Zeichen vorsieht -
in der Darstellung sind es aber nur je 1 Zeichen, so dass die zweite Zeile im
Beispiel "zu kurz" wird und die Formatierung der folgenden Zeichen in dieser
Zeile "kaputt", sprich: um zwei Zeichen nach links verschoben ist.
Weiß hier jemand eine Lösung? Googeln hat mich nicht weitergebracht, ich habe
auch mit "setlocale" herumexperimentiert, ist aber scheinbar ebenfalls egal.
Ach ja, "file" auf die Ausgabedatei liefert "test.dat: UTF-8 Unicode text".
Die Problematik ist übrigens bei openSUSE 13.1 und bei leap 42.1 identisch,
ich denke nicht, dass es eine releasespezifische Problematik ist.
Vielen Dank schonmal für's Mitdenken,
Dieter
--
-----------------------------------------------------------
Dr.-Ing. Dieter Jurzitza 76131 Karlsruhe
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+unsubscribe@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+owner@opensuse.org