C语言scanf用法
scanf可以作为判断条件例如:inta;while(scanf("%d",&a)==1){语句;}在这里只要输入的值是int型就能进入循环,我输入个2或者3都能进入循环...
scanf可以作为判断条件例如:
int a;
while(scanf ("%d", &a) == 1)
{
语句;
}在这里只要输入的值是int型就能进入循环,我输入个2或者3都能进入循环
但是又遇到了
char ch;
while (scanf("%c", &ch) != '\n')
{
语名
}在这里要求输入的值不是回车才能循环,
上边的是只要输入类型符合条件就行,下边的是输入的内容符合条件才行,
想问的是scanf的返回值到底是什么
新手自学,可能问的问题有点蠢,请见谅。。。 展开
int a;
while(scanf ("%d", &a) == 1)
{
语句;
}在这里只要输入的值是int型就能进入循环,我输入个2或者3都能进入循环
但是又遇到了
char ch;
while (scanf("%c", &ch) != '\n')
{
语名
}在这里要求输入的值不是回车才能循环,
上边的是只要输入类型符合条件就行,下边的是输入的内容符合条件才行,
想问的是scanf的返回值到底是什么
新手自学,可能问的问题有点蠢,请见谅。。。 展开
6个回答
展开全部
恕我直言,您的方法能用恐怕是一个巧合。
在scanf从标准输入流抽取数据时,如果按照您的写法是会抛弃那个回车的。
所以您读取的东西永远不是回车,而成功赋值的变量数非零即一,和'\n'的值亦均不同。
您有试过终止循环吗?没有吧,试过肯定也失败了吧。
请按楼上所述来写,这个写法很精妙,还利用了&&的”短路“思想呢。
抄一遍:(scanf("%c", &ch) && ch != '\n')
在scanf从标准输入流抽取数据时,如果按照您的写法是会抛弃那个回车的。
所以您读取的东西永远不是回车,而成功赋值的变量数非零即一,和'\n'的值亦均不同。
您有试过终止循环吗?没有吧,试过肯定也失败了吧。
请按楼上所述来写,这个写法很精妙,还利用了&&的”短路“思想呢。
抄一遍:(scanf("%c", &ch) && ch != '\n')
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf的返回值是得到变量的个数,
所以可以这样用
(scanf("%c", &ch) && ch != '\n')
所以可以这样用
(scanf("%c", &ch) && ch != '\n')
追问
我的第二种写法在vc++6.0里也是成立的,按你说的,我写的第一个是得到变量的个数,而我写的第二个是得到变量的内容再和后边的'\n'进行比较看是否成立,所以我晕了,到底它的返回值是什么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf 输入函数 将从键盘等输入设备的输入数据传送到地址参数上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
"非要在输入一个数值按回车才算书输入完成"
肯定的。你不手动回车,控制台不知道你输入结束, "\n"肯定不行。
肯定的。你不手动回车,控制台不知道你输入结束, "\n"肯定不行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询