【发布时间】:2014-07-10 13:22:39
【问题描述】:
我正在读取一个普通的文本文件并将所有单词作为数字写入另一个文本。当一行结束时,它会查找“换行符 (\n)”并从新行继续。在 Ubuntu 中它可以完美执行,但在 Windows (DevC++) 中它无法运行该功能。我的问题是我阅读的 Windows 中的文本没有换行符。即使我用手放了新行,我的程序也看不到它。当我想在行尾打印字符时,它说它是一个空格(ascii = 32),我很确定我是行尾。这是我的行尾控制代码,我该怎么做才能修复它?我读到了一个叫做“回车(\r)”的字符,但它也不能解决我的问题。
c = fgetc(fp);
printf("%d", c);
fseek(fp, -1, SEEK_SET);
if(c == '\n' || c == '\r')
fprintf(fp3, "%c%c", '\r', '\n');
【问题讨论】:
-
windows 行分隔符是“\r\n”。
-
如何在我不知道的 if 语句中一起提及它,例如 '\r\n' ) @ElliottFrisch
-
问题是 Windows 在行尾不使用单个字符。它使用两个。首先是回车符 ('\r'),然后是换行符 ('\n')。古老版本的 Mac(例如 pre X)单独使用 '\r'。
-
\r\n是您实际发送到终端和打印机以获取新行的内容;仍然是终端/控制台模拟器。没有ASCII换行,\n被翻译成ASCII LF,换行不带回车;它在 unix 上作为换行符的解释是完全传统的。
标签: c file text carriage-return end-of-line