函数原型 char * fgets(char * s, int size, FILE *stream);
参数:
s: 字符型指针,指向存储读入数据的内存缓冲区的首地址
1. char s[100];2.char *s=(char *)malloc(100 * sizeof(char));
size: 从流中读入size-1个字符(留一个字符给NULL)
1.如果需要读入一行的长度大于size,则读入size-1个字符后,没有遇到\n,第20个字符补\0
2.如果需要读入的一行长度(假设为n)小于size,则读入n个字符后有\n,然后在最后补\0, 可以用s[strlen(s)-1]='\0'把\n去掉
stream : 指向读取的流
返回值:
1.当size<=0 返回NULL
2.当size=1 返回空串""
3.如果成功,则返回s的首地址
4.如果出错或遇到文件结尾即EOF 返回NULL
空行:
strlen(s)=1; 表示遇到空行,会正常读入
读入整个文件
char s[100;
while((fgets(s,100,fp)) != NULL)
fputs(s,stdout);
补充:
gets()函数
它虽然可以操做带有空格的字符串,但容易引起溢出。因为C语言是将字符串当做一种数组操做的,如果gets()函数读取的字符串长度大于被赋值数组的长度,就会引起溢出