我試圖驗證文件中的實際內容中的行,並退出一行中有兩個空行的情況。這可以做到嗎? 此代碼導致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