C语言面试经常会考如下一道题,哪里有错误:
#include <stdio.h>int main() { char string[100] = {'\0'};gets(string);printf("输入的字符串是:%s \n", string);return 0; } 这段C程序可能有问题 , 问题就在于函数gets()的使用 。
gets从标准输入设备读字符串函数,可以无限读?。换崤卸仙舷?,以回车结束读取 。所以如果输入的字符串超过100个,它也不会做检测,此时就会发生溢出 。
可以使用fgets函数来从文件中读取字符串 。fgtes函数原型是
【c语言gets的用法 c语言gets的用法】char *fgets(char *buf, int bufsize, FILE *stream);
一般的教材都会对这个函数的用法作出解释 , 这里就不在详述了,以下文字摘用百度百科的解释:百度百科对fgets的解释
从文件结构体指针stream中读取数据,每次读取一行 。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋’\0’),如果文件中的该行,不足bufsize个字符,则读完该行就结束 。如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行 。函数成功将返回buf,失败或读到文件结尾返回NULL 。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断 。
推荐阅读
- 购买星星命名权的网站有哪些 购买星星命名权的网站
- 怎么清除塑料杯子里的异味,怎么清除塑料杯子里的异味小妙招
- 怎么祛除塑料杯子里的茶渍 塑料杯子茶渍怎么清除
- 怎么创作自己的原创歌曲 抖音怎么制作自己的原创音乐
- 苹果手机上的悬浮球怎么设置 苹果手机上那个圆圈怎么设置出来
- rank作用 夜晚无人的公园监控
- 苹果14重量 苹果8的重量多少克
- 皮肤偏黄适合穿什么颜色的衣服好看男生 皮肤偏黄适合穿什么颜色的衣服好看
- 贝果和甜甜圈的区别
- 豆腐是谁发明的