函数输入字符串时存在一个问题就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理但gets()函数将接收输入的整个字符串直到遇到换行为止。
語法:scanf("格式控制字符串",变量地址列表);
接受字符串时:scanf("%s",字符数组名或指针);
语法:gets(字符数组名或指针);
scanf不能接受空格、制表符Tab、回车等;
而gets能够接受空格、制表符Tab和回车等;
字符串接受结束后自动加'\0'
今天手头有份纸质调查问卷需要統计下想想人工一个个做加法太过于繁琐,所以写了个小程序输入选项进行自动统计,但是在
中出错直接跳过第二个scanf,而直接进入switch通过网上查找,原来"我们每击打一下"Enter"键向键盘缓冲区发去一个“回车”(\r),一个“换行"(\n),在这里\r被scanf()函数处理掉了(姑且这么认为吧^_^),而\n被scanf()函数“错误”地赋给了c.解决办法:可以在两个scanf()函数之后加个fflush(stdin)"
个人c语言scanf怎么用不精推测,这是“\n”进入了缓存区被scanf("%c",&choice)读到了所以ffluch就是清空緩存区。
通过在网上搜索这里需要额外说明的是:
于是针对上面代码,简单解决方法就是:
函数输入字符串时存在一个问题就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理但gets()函数将接收输入的整个字符串直到遇到换行为止。
語法:scanf("格式控制字符串",变量地址列表);
接受字符串时:scanf("%s",字符数组名或指针);
语法:gets(字符数组名或指针);
scanf不能接受空格、制表符Tab、回车等;
而gets能够接受空格、制表符Tab和回车等;
字符串接受结束后自动加'\0'