我试图验证文件中的实际内容中的行,并退出一行中有两个空行的情况。这可以做到吗? 此代码导致fgetc()没有捕获双回车符/新行。是否可以在一行中测试两个新的行字符?
代码是来自C89项目的代码片段,因此在片段上方进行了声明。
if ((file = fopen(fileName,"r")) == NULL)
{
free(fileName);
exit(1);
}
while (c != EOF)
{
cOld = c;
c = fgetc(file);
/* count lines */
if(c == '\n'){
newLine++;
}
/* test for two carriage returns in a row */
if(c == '\n' && cOld == '\n'){
printf("ERROR: Invalid File\n");
free(fileName);
exit(1);
}
}
使用调试器将帮助您解决这种简单的问题。 – 2015-03-13 09:16:07
一个方便的工具,让你检查你的文件是否包含'\ r \ n'或其他什么,是[HexDump](http://www.fileformat.info/tool/hexdump.htm) – moffeltje 2015-03-13 09:27:24
请注意,在十六进制ASCII中, \ n'== 0A和'\ r'== 0D – moffeltje 2015-03-13 09:30:29