Ende der Zeile-Zeichen / Carriage return

Lese ich eine normale text-Datei und schreiben Sie alle Wörter als zahlen, die auf einen anderen text. Wenn eine Zeile endet es sieht für einen "neue-Zeile-Zeichen (\n)" und weiter aus der die neue Zeile. In Ubuntu führt er perfekt, aber in Windows (DevC++), kann es nicht funktionieren, die Funktion. Mein problem ist der text im Fenster, die ich gelesen habe keine neue-Zeile-Zeichen. Auch lege ich neue Zeilen von meiner hand, mein Programm kann es nicht sehen. Wenn ich drucken möchte, das Zeichen am Ende der Zeile, es sagt, es ist ein Leerzeichen (ascii = 32) und ich bin sur, die ich am Ende der Zeile. Hier ist mein end-of-line-control-code, was kann ich tun, um es zu beheben? Und lese ich über einen Charakter namens "carriage return (\r)", aber es behebt nicht mein problem.

c = fgetc(fp);
printf("%d", c);
fseek(fp, -1, SEEK_SET);
if(c == '\n' || c == '\r')
    fprintf(fp3, "%c%c", '\r', '\n');
  • Die windows-line seperator ist "\r\n".
  • Wie kann ich erwähnen, zusammen in der if-Anweisung weiß ich es nicht, wie '\r\n' ) @ElliottFrisch
  • Das problem ist, dass Windows nicht verwenden ein einzelnes Zeichen am Ende der Zeile. Es verwendet zwei. Zuerst ein carriage return ('\r'), dann eine neue Zeile ('\n'). Alte Versionen von Mac (z.B. pre-X) verwendet '\r' allein.
  • \r\n war, was Sie tatsächlich an terminals und Drucker, um eine neue Zeile; immer noch ist, zum terminal/Konsole-Emulatoren. Es gibt keine ASCII-newline, \n übersetzt ASCII LF, Zeilenvorschub ohne Wagenrücklauf; seine interpretation als Zeilenumbruch auf unix, ist ganz konventionell.
  • Verwandte: stackoverflow.com/questions/1279779/...
InformationsquelleAutor mrtgnccn | 2014-05-21
Schreibe einen Kommentar