C语言gets为什么不执行
答案:7 悬赏:50 手机版
解决时间 2021-02-25 16:25
- 提问者网友:不爱我么
- 2021-02-25 10:41
C语言gets为什么不执行
最佳答案
- 五星知识达人网友:山有枢
- 2021-02-25 10:58
gets函数是以换行符或者EOF为结束标志,如果用空格或者跳格,gets函数会继续等待用户输入。
1、gets函数:
原型:char * gets(char * buffer);
功能:从stdin流中读取字符串,直至读到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为 空字符,并以此结束字符串;
说明:当使用unicode宽字符文本时,请使用宽字符版本函数 _getws()。gets函数可以无限读取,不会判断上限,所以使用时应确保buffer的空间足够大,以便在执行读取操作时不发生溢出。gets函数在C11标准中被移除,改为更加安全的gets_s函数;
头文件:stdio.h;
返回值:若读入成功,返回与参数buffer相同的字符指针。若读入过程中遇到EOF或发生错误,返回NULL指针。所以当遇到返回值为NULL的情况时,应使用ferror或feof函数检查是发生错误还是遇到EOF。
2、例程:
#include
int main(){
char buffer[5];//定义缓存字符数组buffer
gets(buffer);//用gets函数从stdin流中读入字符串,因为buffer长度是5,输入不能超过4个字符
printf("%s",buffer);//在stdout流中输出读入的字符串
return 0;
}
1、gets函数:
原型:char * gets(char * buffer);
功能:从stdin流中读取字符串,直至读到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为 空字符,并以此结束字符串;
说明:当使用unicode宽字符文本时,请使用宽字符版本函数 _getws()。gets函数可以无限读取,不会判断上限,所以使用时应确保buffer的空间足够大,以便在执行读取操作时不发生溢出。gets函数在C11标准中被移除,改为更加安全的gets_s函数;
头文件:stdio.h;
返回值:若读入成功,返回与参数buffer相同的字符指针。若读入过程中遇到EOF或发生错误,返回NULL指针。所以当遇到返回值为NULL的情况时,应使用ferror或feof函数检查是发生错误还是遇到EOF。
2、例程:
#include
int main(){
char buffer[5];//定义缓存字符数组buffer
gets(buffer);//用gets函数从stdin流中读入字符串,因为buffer长度是5,输入不能超过4个字符
printf("%s",buffer);//在stdout流中输出读入的字符串
return 0;
}
全部回答
- 1楼网友:风格不统一
- 2021-02-25 16:48
能详细点么?160564700
- 2楼网友:千夜
- 2021-02-25 16:10
源代码呢????
- 3楼网友:我住北渡口
- 2021-02-25 15:02
gets不需要循环语句循环语句用在最后的printf就行
- 4楼网友:長槍戰八方
- 2021-02-25 13:57
楼主不给分,大晚上的 估计不会有人回答你。。。
- 5楼网友:污到你湿
- 2021-02-25 13:50
执行了,它把执行scanf("%d",&n);时遗留在缓冲区中的回车符收走了;gets函数以回车符为结束命令,所以它以为你已经输入完毕了。解决办法很多,但正宗的是在gets前面加一句fflush(stdin);把缓冲区清空。
- 6楼网友:廢物販賣機
- 2021-02-25 12:17
gets()用于读入整行字符串,以回车结尾。因为你在scanf("%d",&n);时已经读入一个回车,所以第一个a为空字符。(输入的数字赋值给n,然后回车给a了)。解决办法是scanf("%d",&n);后加一句
getchar();
getchar();
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯