C语言scanf用法

scanf可以作为判断条件例如:

int a;
while(scanf ("%d", &a) == 1)
{
语句;
}在这里只要输入的值是int型就能进入循环,我输入个2或者3都能进入循环
但是又遇到了
char ch;
while (scanf("%c", &ch) != '\n')
{
语名
}在这里要求输入的值不是回车才能循环,
上边的是只要输入类型符合条件就行,下边的是输入的内容符合条件才行,
想问的是scanf的返回值到底是什么
新手自学,可能问的问题有点蠢,请见谅。。。

scanf是C语言中的一个输入函数,与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include 。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include 。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-08
恕我直言,您的方法能用恐怕是一个巧合。
在scanf从标准输入流抽取数据时,如果按照您的写法是会抛弃那个回车的。
所以您读取的东西永远不是回车,而成功赋值的变量数非零即一,和'\n'的值亦均不同。
您有试过终止循环吗?没有吧,试过肯定也失败了吧。
请按楼上所述来写,这个写法很精妙,还利用了&&的”短路“思想呢。
抄一遍:(scanf("%c", &ch) && ch != '\n')本回答被提问者采纳
第2个回答  2013-07-08
scanf的返回值是得到变量的个数,
所以可以这样用
(scanf("%c", &ch) && ch != '\n')追问

我的第二种写法在vc++6.0里也是成立的,按你说的,我写的第一个是得到变量的个数,而我写的第二个是得到变量的内容再和后边的'\n'进行比较看是否成立,所以我晕了,到底它的返回值是什么

第3个回答  2013-07-08
scanf 输入函数 将从键盘等输入设备的输入数据传送到地址参数上
第4个回答  2020-04-18
"非要在输入一个数值按回车才算书输入完成"
肯定的。你不手动回车,控制台不知道你输入结束, "\n"肯定不行。
相似回答