c语言中的fgets函数。
4个回答
展开全部
fgets()函数用于从文件流中读取一行或指定个数的字符,其原型为:
char
*
fgets(char
*
string,
int
size,
FILE
*
stream);
参数说明:
string为一个字符数组,用来保存读取到的字符。
size为要读取的字符的个数。如果该行字符数大于size-1,则读到
size-1
个字符时结束,并在最后补充'
\0';如果该行字符数小于等于
size-1,则读取所有字符,并在最后补充
'\0'。即,每次最多读取
size-1
个字符。
stream为文件流指针。
【返回值】读取成功,返回读取到的字符串,即string;失败或读到文件结尾返回NULL。因此我们不能直接通过fgets()的返回值来判断函数是否是出错而终止的,应该借助feof()函数或者ferror()函数来判断。
注意:fgets()与gets()不一样,不仅仅是因为gets()函数只有一个参数
FILE
*stream,更重要的是,fgets()可以指定最大读取的字符串的个数,杜绝了gets()使用不当造成缓存溢出的问题。
char
*
fgets(char
*
string,
int
size,
FILE
*
stream);
参数说明:
string为一个字符数组,用来保存读取到的字符。
size为要读取的字符的个数。如果该行字符数大于size-1,则读到
size-1
个字符时结束,并在最后补充'
\0';如果该行字符数小于等于
size-1,则读取所有字符,并在最后补充
'\0'。即,每次最多读取
size-1
个字符。
stream为文件流指针。
【返回值】读取成功,返回读取到的字符串,即string;失败或读到文件结尾返回NULL。因此我们不能直接通过fgets()的返回值来判断函数是否是出错而终止的,应该借助feof()函数或者ferror()函数来判断。
注意:fgets()与gets()不一样,不仅仅是因为gets()函数只有一个参数
FILE
*stream,更重要的是,fgets()可以指定最大读取的字符串的个数,杜绝了gets()使用不当造成缓存溢出的问题。
展开全部
从流中读一行或指定个字符,
原型是char*fgets(char*s,intn,file*stream);
从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回null。
形参注释:*string结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针
fgets的返回值是个指针,*fgets(buffer,100,stdin)就是取返回指针所指向地址的第一个字符,fgets的返回值是char*.要是输入一串字符,返回的第一字符一定不是\n如果要是一个空行,第一个一定是\n,所以会推出循环,如果while中的两个条件都满足,就会进入循环继续计算
原型是char*fgets(char*s,intn,file*stream);
从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回null。
形参注释:*string结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针
fgets的返回值是个指针,*fgets(buffer,100,stdin)就是取返回指针所指向地址的第一个字符,fgets的返回值是char*.要是输入一串字符,返回的第一字符一定不是\n如果要是一个空行,第一个一定是\n,所以会推出循环,如果while中的两个条件都满足,就会进入循环继续计算
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为:
fgets(字符数组名,n,文件指针);
其中的n是一个正整数。表示从文件中读出的字符串不超过
n-1个字符。在读入的最后一个字符后加上串结束标志'\0'。
1)
在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。
2)
fgets函数也有返回值,其返回值是字符数组的首地址。
fgets(字符数组名,n,文件指针);
其中的n是一个正整数。表示从文件中读出的字符串不超过
n-1个字符。在读入的最后一个字符后加上串结束标志'\0'。
1)
在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。
2)
fgets函数也有返回值,其返回值是字符数组的首地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哦
这里是特殊情况。
initial这个数组长度只有2,
读进来一个数据就满了(因为第二个位置要写0呢。
所以后面的回车没被读进来,因为缓冲区满了。
这里是特殊情况。
initial这个数组长度只有2,
读进来一个数据就满了(因为第二个位置要写0呢。
所以后面的回车没被读进来,因为缓冲区满了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询