【发布时间】:2016-06-07 17:39:58
【问题描述】:
我正在尝试读取文本文件中的换行符,从而计算文本文档中的行数
.txt 文件内容:
我的
名称
是
约翰
我的代码输出:
牛米
s
上
行号为 1
我的代码:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main()
{
FILE* filepointer ;
filepointer = fopen("C:\\Users\\Summer Work\\Let's C\\Comnsole\\TestFile.txt","rb+") ;
int count = 0 ;
int ch;
printf("%c\n",ch) ;
while ((ch = fgetc(filepointer)) != EOF)
{
printf("%c",ch) ;
ch = fgetc(filepointer) ;
char dh = ch;
if (dh == '\n')
count++ ;
}
printf("\nLine number is %d",count) ;
fclose(filepointer) ;
getchar() ;
return 0;
}
有人能解释一下为什么会这样吗?
更新: 固定代码
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main()
{
FILE* filepointer ;
filepointer = fopen("C:\\Users\\Summer Work\\Let's C\\Comnsole\\TestFile.txt","rb+") ;
int count = 0 ;
int ch;
while ((ch = fgetc(filepointer)) != EOF)
{
printf("%c",ch) ;
if (ch == '\n')
count++ ;
}
printf("\nLine number is %d",count) ;
fclose(filepointer) ;
getchar() ;
return 0;
}
输出
我的
名称
是
约翰
行号为 3
【问题讨论】:
-
您在每个循环中调用了两次
fgetc。所以你打印/检查替代字符。 -
注意:不需要将
ch复制到char类型的变量中,因为'\n'无论如何都是int类型。 -
哦排序。谢谢! @Vane