(1)fgets函数的理解和用法
参考网址:https://blog.csdn.net/kenby/article/details/3284290
fget函数的原型如下:char *fgets(char *buf, int n, FILE *fp)
功能:从文件流读取一行,送到缓冲区,使用时注意以下几点:
1.当遇到换行符或者缓冲区已满,fgets就会停止,返回读到的数据,值得注意的是不能用fgets读二进制文件,因为fgets会把二进制文件当成文本文件来处理,这势必会产生乱码。
2.每次调用,fgets都会把缓冲区的最后一个字符设为null,这意味着最后一个字符不能用来存放需要的数据,所以如果有一行,含有LINE_SIZE个字符(包括换行符),要想把这行读入缓冲区,请把参数n设为LINE_SIZE+1
3. 由结论1可推出:给定参数n,fgets只能读取n-1个字符(包括换行符),如果有一行超过n-1个字符,那么fgets返回一个不完整的行,也就是说,只读取该行的前n-1个字符,但是,缓冲区总是以null字符结尾,对fgets的下一次调用会继续读该行。
用法举例:
读取一个文件并打印之
- FILE * fp = fopen(argv[1],"r");
- char buf[200];
- while (fgets(buf,200,fp) != NULL) { /* 每行的字符不能超过199才能正常工作 */
- printf("%s",buf);
- }
注意打印不用使用 printf("%s/n",buf),因为它会把换行符也读进去
下次调用会继续读取下一行内容。