#include<stdio.h>
#include<string.h>
int main()
{
int n=0;
char *loc;
char a[230];
FILE*fp;
fp=fopen("1.txt","r");
fgets(a,49,fp);
a[50]='\0';
loc=a;
while(*loc)
{
if(*loc=='\r'&&*loc+1=='\n')
n++;
loc++;
}
printf("%d",n);
return 0;
}
还是为0?求解释
应该是3嘛。为啥n=1;
改了,还是不行啊!我是想问fgets函数会读取txt里的换行符嘛?
追答fgets()函数从文件中读取字符时可以读进来'\n',而且还在其后加一个'\0'作为字符串结束符,但它不会把'\n'读到行的中间,因为遇到'\n'时就认为一行结束了……
追问txt的换行符到底代表啥啊。
是不是有三个?还是一个都没有
可能一个没有!由于视框太小放不下一行而“自动生成”的换行不是'\n','\n'是实实在在的一个字符,ASCII码是十进制10!
追问这个按理说有三个啊?怎么检测就一个
这里至少3个'\n'。代码逻辑有点问题吧?fgets(a,49,fp)从fp中读字符时遇到'\n'就认为结束了,就不再往后读了,当然只有1个'\n'了,而且会在最后自动放1个'\0',所以a[50]='\0'也是多余的。要想有多个'\n'被读进来,就得重复几次fgets()。写上3个fgets(a,49,fp),并把a[50]='\0'删除试试。如果检测到1个以上的'\n'了,就说明逻辑对了,再修改你的代码!
改了,还是不行啊!我是想问fgets函数会读取txt里的换行符嘛?