[英]getc with Windows vs Unix
我对以下代码有疑问:
while((c = getc(pFile)) != EOF)
{
if(c != '\n')
{
input[index] = (char)c;
index++;
} else
{
input[index] = '\0';
index = 0;
}
}
在 Windows 中,此 c = getc 行读取 '\n'(代码 10)两次。 例如,我正在使用以下 2 行读取文件:
Hello world Test
c = getc 读取 Hello world,但再次读取 10 (\n) 和 10,将输入数组重置为空白(因为 '\0')。 在 unix 中,'\n' 只被读取一次,所以一切正常。
任何想法?
提前致谢。
两个平台上的文件在物理上是否相同,即逐位? 这是自找麻烦,因为行尾的编码不同。
Windows 用\r\n
终止行。 这可能会有所帮助:
$ echo test | unix2dos > /tmp/test
$ hexdump -c /tmp/test
0000000 t e s t \r \n
0000006
奇怪的\r
值是 13,所以我不知道 wath 出了什么问题。
尝试这个:
while((c = getc(pFile)) != EOF)
{
if(c != '\n' && index)
{
input[index] = (char)c;
index++;
}
else
{
if (!index)
continue; // dumps repeated '\n'
input[index] = '\0';
index = 0;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.