如果新行在前一行中有文本,我无法在文件结尾之前的之后检测到新行。C检测文件末尾的最后一个新行
我可以检测到新管线4
1 some text
2 some text
3
4
但不是新的线3这种类型的文件的
1 some text
2 some text
3
(数(1,2,3,4)是线,他们不是在文件中)
有我的示例代码:(编辑:代码与多个相关变量更新)
#include <stdio.h>
#include <string.h>
main()
{
FILE *fp;
int ch;
int i = 0;
int line = 1;
int column = 0;
int tmp = 0;
fp = fopen("input.txt", "r");
if(fp != NULL){
while((ch = fgetc(fp)) != EOF) {
switch(ch) {
case '\n':
if(i == 0) {
column = tmp;
}
if(tmp != column) {
printf("error\n");
}
tmp = 0;
line++;
i++;
break;
default:
tmp++;
break;
}
}
fclose(fp);
}
}
我不明白为什么在第二种情况下没有输出“错误”。
fgetc()返回一个“int”而不是“char”。 – TonyB 2014-10-06 21:47:32
注意:使用'int ch'。 – chux 2014-10-06 21:48:39
3行案例实际上是以“\ n”结尾还是以另一个字符结尾? – uesp 2014-10-06 21:48:50