0 c windows newline carriage-return
在我的C程序中,我正在逐个字符地查找文件以获取信息。由于某种原因,即使我的代码看起来像下面那样,我的数据也正在获取Windows行尾字符。
我尝试了一些类似temp [0] =='\ r \ n'的操作
while((temp = fgetc(file)) != EOF)
{
if((temp>=65 && temp<=90) || (temp>=97 && temp<=122) || (temp>=48 && temp<=57) || temp==39){
c[count]=temp;
count++;
}
else
break;
Run Code Online (Sandbox Code Playgroud)
Windows行尾由两个单独的字符组成,回车符('\r')后跟换行符('\n')。因为它们是两个字符的组合,所以无法一次只看一个字符就无法检测到它们。
如果您的代码在 Windows 上运行,并且该文件应被解释为文本,请以文本模式(例如"r"而不是"rb")打开它,并且行终止符应自动转换为单个换行符。如果您正在使用单个换行符作为行终止符的系统上运行(如今,除了 Windows以外,几乎都没有其他功能),则不会执行此类转换。在这种情况下,要检测Windows样式的行终止符,您需要跟踪前一个字符是否为'\r'。如果是这样,并且下一个读取的字符是'\n',那么您已经检测到行终止符。
但是,如果将Windows样式的终止符放在文件中被认为是错误的,则可以考虑通过dos2unix或类似的实用工具修复文件。