scanf返回值问题
要解释这个问题需要了解scanf的执行过程。scanf要求是从输入缓冲区中读入一个数字,但是你输入的是字符,scanf没有读到想要的东西,于是直接返回0,再重新开始读取。因为上次你输入的字符还留在缓冲区,scanf还是没读到想要的,反复进行下去,status一直是0,所以死循环咯。
希望能帮到你
返回值被忽略scanf是什么意思 返回值被忽略scanf是为什么
1、使用scanf函数时,会报错“返回值被忽略”,是因为微软认为scanf不安全导致的。
2、将使用的scanf函数替换为scanfs,好像scanf_s只有微软的编译器支持。
3、在文件的最开始添加下面一行,忽略安全检测,不然使用scanf会报错。
关于scanf的返回值问题。
scanf原理是读入你输入的字符串然后尝试根据提供的格式进行匹配,并存入对应变量
这个过程中scanf是尽可能的匹配第一个变量,因此你输入的整个字符串都被视作是第一个%s的值
第一个例子中前两个变量都是%f,因此scanf能够判断如何进行分割;第二个例子中前两个都是字符串
如果你在printf scanf的返回之后再printf name的值就会发现整个输入字符串都被读入了name
要达到你需要的效果可以通过限定字符串不读取特定字符,达到分隔符的目的,如:
printf(\”%i\\n\”,scanf(\”%[^, ],%[^, ],%i,%79[^\\n]\”, name, album, year, comments));
这样前两个字符串必须不包含逗号,那么当输入aa,bb,2018,cccc时就能匹配正确
c语言,忽略scanf的返回值怎么解决?
试试:
将第4行改成
double x,y=0;
将第6行改成
if(scanf(\”%lf\”,x)==1×0)
scanf的返回值缺失该怎么解决
scanf返回接收到的变量值的个数。 int a,b,c。 a 1进去时,试图用字符‘a’对a赋值,肯定是错的,于是退出,返回成功接收到赋值的个数 0. 1 a进去时,首先a能获取1.但b不能获取\’a\’,于是返回只是1 如果是 1 1的话,那就都成功,返回2
评论0