while语句中scanf()的问题 while循环中的scanf输入问题

作者&投稿:劳沸 (若有异议请与网页底部的电邮联系)
其实,你这两个问题都是对于 scanf的返回值不了解。
其实 scanf的返回值由后面的参数决定,返回值表示成功读入的数据的个数。
  如:
  scanf("%d%d", &a, &b);
  如果a和b都被成功读入,那么scanf的返回值就是2
  如果只有a被成功读入,返回值为1
  如果a和b都未被成功读入,返回值为0
  如果遇到错误或遇到end of file,返回值为EOF。
  且返回值为int型.

所以,
第一个问题: 输入点(.),遇到错误,返回值为 EOF。不等于 1, 退出循环。
第二个问题: 不管你输入什么值,因为参数只有一个,所以返回值一直是 1,一直为真。

谢谢你的问题。让我对C有了更深的理解。希望我的回答对你有帮助。

scanf的返回值由后面的参数决定   
返回值表示成功读入的数据的个数  
 如:   scanf("%d%d", &a, &b);   
如果a和b都被成功读入,那么scanf的返回值就是2   
如果只有a被成功读入,返回值为1   
如果a和b都未被成功读入,返回值为0   
如果遇到错误或遇到end of file,(遇到错误是,当你要求输入float类型,但是你输入了其他类型,同时,你输得类型不能隐式转化为要输入的类型),返回值为EOF。  
且返回值为int型.

c语言while循环和SCANF问题~

在第二个循环输入字母 导致第二个循环获取出错
但这个字母 并不会被第二循环的scanf读取
所以 到第一循环 也就是外循环 还是会读到这个字母的。
解决方法 就是在出错的时候,把出错字母读走。 或者干脆读走一行。
int main(){ int a, b;while(scanf("%d",&a)==1){printf("ok1!
");while (scanf("%d", &b) == 1){printf("ok2!
");}getchar();//读走出错字母。 或者读一行,改成while(getchar()!='
');printf("ok3!
");}return 0;}

因为在while中的那个scanf中的变量c是char型的,同时scanf(%d %d,&n,&m);

while(scanf("%s",s)==1)什么意思
答:scanf()函数返回的是此函数读取到的参数个数。所以,当scanf("%s",s)正常读取到一个字符串时(不论串的长短如何),scanf()函数的值总是1。只有当它没有读到时(比如,遇到了文件结束、遇到了^Z),就返回读到的参数个数0。while(scanf("%s",s)==1)就是说当未读到结束时就循环。键盘上以...

C语言while(~scanf("%s",str)){}
答:scanf()函数的返回值是成功读取变量的个数,这里可能返回是1或0,当返回0时,~0为真,则继续循环,所以该循环的意思是,直到成功读取一个字符串时,才结束循环。

c语言中 while (scanf("%d".&a) == 1) 什么意思?
答:应该是 scanf("%d",&a),scanf()是一个输入函数,输入一个int值存到a里面,同时scanf是有返回值的,表示输入值的个数,此处若scanf只输入一个变量,其返回值就等于1,while循环条件成立,进入循环体。

while (scanf("%d%d", &m, &n))什么意思?
答:用返回值为0作为结束条件是不严谨的。 正确做法有两种:1 可以保证输入不会出现非法数据的情况,可以用EOF做结束标记,写作:while (scanf("%d%d", &m, &n) != EOF)或者 while (~scanf("%d%d", &m, &n))2 输入可能有错误数据,当非法时结束,写作 while (scanf("%d%d", &m, &n) =...

C语言中while(scanf("%d",&a)==1)是什么意思?
答:1.scanf()函数有返回值且为int型。2.scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。

c语言 while(~scanf(“%c”,&c))的含义是什么
答:所谓逗号表达式,它的值是逗号后面的那个数,举例如下:y=(5,6);//那么y=6,注意的是因为逗号表达式的优先级比赋值运算还低,所以如果你写成y=5,6的话y还是等于5的 也就是说while(scanf("%d",&n),n)其实相当于while(n),只是因为要输入所以写成了while(scanf("%d",&n),n)这样而已 ...

c语言中while(scanf("%d",&x)==1)是什么意思?
答:while(scanf("%d",&x)==1)相当于 while(1){scanf("%d",&x)} 就是说只要输入成功就进入循环。然后下一次循环前又先输入;

while (scanf("%d %d",&a,&b)==2 && (a||b))什么意思
答:b,逻辑运算符||进行或运算结果非0即1,如果a=b=0,a||b=0,否则a||b=1 while (scanf("%d %d",&a,&b)==2 && (a||b))意思是,如果scanf输入两个数成功即==2,&&(并且)a||b的值为真(即a||b=1)则,while()括号内的值为真,即为1。然后执行while循环体内的语句。

c语言 while(scanf("%d",&n)!=EOF,n) 是什么意思?
答:你好,EOF的值其实就是-1,当scanf读取内容发生错误或者读到文件结尾的时候就会返回EOF,那个while的意思就是说当当前输入缓存还有东西时就一直读取,直到输入缓存中的内容为空时停止。

while (scanf("%d %d", &a, &b), a || b)什么意思
答:while()括号里面是循环条件,注意条件中a || b前的那个逗号,是逗号运算符,逗号运算符对每个分表达式进行去处,但取值永远是最后再个式子,所以条件的值就是a || b的值 所以语句的意思是 输入两个整数a, b,只要a, b中任意一个数非0则循环继续执行,也就是说 不断都输入两个整数a, b,直到...