C语言怎么判断文件的行尾??

假如一个文件,每一行的字节都是不一样的,也不确定的,怎么用C语言判断文件的行尾,或者怎么读取一行的内容。用fscanf感觉没用,遇到空格就断了。

fgets()函数,读出来,如果有行尾,最后一个是'\n'之后是结束符
gets()从键盘读取一行会把换行符丢弃,但是fgets()不会丢弃,换行符是文件内容之一,如果一行太大,分几次读了,前几次都没有'\n‘ 一个'\n'也可以看做是一个段的结束符。
要用文本方式打开文件,找到'\n'就是行尾了,如果用二进制方式打开,则可能是'\r'和'\n'两个字符,读和写都用文本方式,读出来只要处理'\n'就可以
把行缓冲区定到够大,如10240,这样一次最多读10240字节,一般地都可以一次一整行了,除非10K以上的大段落举例:
#define YOURFILEPATH "D:\\test.txt"
char buf[1024];
FILE* rp;
if((rp=fopen(YOURFILEPATH,"rt"))==NULL){printf("文件%s打开失败",YOURFILEPATH);exit(1);}
while(!feof(rp)){
if(fgets(buf,10240,rp)==buf) printf(buf); //一次一行 读出来打到屏幕上
}追问

有没有类似vbs中的readline方法??

追答

就是fgets();下次读一行或读满指定字节.
只要指定的字节(也就是缓冲区大小)够大就是一次读一行了.
如果想要readline完全等同的效果,你得自己写函数

追问

假如一个文本内容为:abcd
当我用fgets读取给字符数组ch之后,我用if(ch=="abcd") printf("--------");这条语句的条件值怎么总是假?ch!="abcd"吗?后面的printf不会执行,是怎么回事?

追答

字符串比较用:strcmp(s1,s2) 比较串s1和串s2 相等返回0 s1>s2时返回正数 s1<s2时返回负数
难以相信,你都开始试着读写文件了,还不知道C中的串如何比较大小?

追问

用过之后得不出结果,一直返回的都是不相等

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-12
有特殊符号的
一般是26
也就是CTRL_Z
你用dubug看一个小的文件就可以知道了
好像有函数可以知道是否文件尾,EOF()?
第2个回答  2012-01-11
WINDOWS下行结束是\r\n
LINUX下,则是\n
第3个回答  2012-01-12
供参考。
char cx;
FILE *fp;//声明一个文件指针变量fp
if((fp=fopen("filename","r"))==NULL){//读打开名为filename的文件并检查是否成功
printf("文件打开失败!\n");
exit(0);
}
while((cx=getc(fp)!=EOF)//EOF是文件结尾标志。不到结尾继续
putchar(cx);//把从文件读到的字符写到屏幕
fclose(fp);//关闭文件。
另一些函数如fgets()、fread()等都可以使用,具体要查看这些函数的原型声明和要求……

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网