最近有很多读者朋友用C语言gets()用法有疑问。有网友整理了相关内容,希望能回答你的疑惑。关于c语言gets本网站还为您找到了问题的答案,希望对您有所帮助。
C语言面试经常测试以下问题,哪里有错误:
#include <stdio.h> int main(){ char string[100]={‘\\0’}; gets(string); printf(“输入字符串为:%s \
“, string); return 0; }
这个C程序可能有问题,问题是函数gets()使用。
gets读字符串函数从标准输入设备,可以无限读取,不会判断上限,以回车结束读取。
gets读字符串函数从标准输入设备,
可无限读取,不判断上限
,回车后读取。因此,如果输入的字符串超过100个,则不会进行检测,此时会发生溢出。
可以使用fgets函数从文件中读取字符串。fgtes函数原型是
char *fgets(char *buf, int bufsize, FILE *stream);
一般教材会解释这个函数的用法,这里就不详细说明了。百度百科的解释如下:百度百科fgets的解释从文件结构体指针stream中读数据,每次读一行。保存读取的数据buf在指向字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋’\\0′),如果文件中的银行不足bufsize读完这行,个字符就结束了。如果该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只回到不完整的行,但缓冲区总是以NULL字符结尾,对fgets下一次调用将继续阅读该行。如果该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只回到不完整的行,但缓冲区总是以NULL字符结尾,对fgets下一次调用将继续阅读该行。函数成功将返回buf,读到文件结尾或返回NULL。因此,我们不能直接通过fgets为了判断函数是否因错误而终止,应使用返回值feof函数或者ferror判断函数。
主题测试文章,只做测试使用。发布者:艾迪号,转转请注明出处:https://www.cqaedi.cn/baike/39217.html