鱼C论坛

 找回密码
 立即注册
查看: 3824|回复: 24

以下代码循环出了奇怪的事情!

[复制链接]
发表于 2011-10-19 18:07:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 itriyu 于 2011-10-19 18:07 编辑

#include <stdio.h>
void main(){

char c[4];
for (int i=0;i<4;i++){
  
  scanf("%c",&c);
  printf("%c",c);
}
}

以上代码,循环应该是4次,可是,  scanf("%c",&c);只运行了2次,那位高手能指点一下。非常感谢!


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-19 18:36:39 | 显示全部楼层
还没学到循环..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-19 18:44:32 | 显示全部楼层
  1. #include <stdio.h>
  2. void main()
  3. {

  4. char c[4];
  5. for(int i=0;i<4;i++)
  6. {
  7.   
  8.   scanf("%s",c);
  9.   printf("%s\n",c);
  10. }
  11. }
复制代码
谢谢你.......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-10-20 08:34:45 From FishC Mobile | 显示全部楼层
没有高手没?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-20 08:48:31 | 显示全部楼层
scanf(,&c[i])
printf(,c[i]);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-20 09:17:41 | 显示全部楼层
本帖最后由 for 于 2011-10-20 09:19 编辑

本帖最后由 itriyu 于 2011-10-19 18:07 编辑

#include <stdio.h>
void main(){

char c[4];
for (int i=0;i<4;i++){
  
  scanf("%c",&c[I]);
  printf("%c",c[I]);
}
}



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-21 00:16:36 | 显示全部楼层
哎 ..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-21 09:47:22 | 显示全部楼层

楼上回答的你不看,却始终最求高手回答。
for()不加大括号的情况下,只有最近的一句在其管理范围,要将sanf()和printf()都包含在for()的管理范围内。
有大括号括起来:

for(......)
{
   scanf("");
   printf("");
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-21 23:41:35 | 显示全部楼层
  1. #include <stdio.h>
  2. void main()
  3. {

  4. char c[4];
  5. for(int i=0;i<4;i++)
  6.         {
  7.           scanf("%c",&c[i]);
  8.           fflush(stdin);
  9.           printf("%c\n",c[i]);
  10.         }
  11. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-22 01:19:28 | 显示全部楼层
...........
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-10-22 07:05:49 From FishC Mobile | 显示全部楼层
小飞侠 发表于 2011-10-21 09:47
楼上回答的你不看,却始终最求高手回答。
for()不加大括号的情况下,只有最近的一句在其管理范围,要将s ...

首先感谢你的回答,但问题并没有解决。
我的代码中有了{},正因为循环了四次,而
{}中的scanf()语句执行了两次,不知我讲明白了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-10-22 14:21:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-10-22 14:50:39 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-22 15:07:10 | 显示全部楼层
  1. #include <stdio.h>
  2. void main()
  3. {

  4. char c[4];
  5. for(int i=0;i<4;i++)
  6. {
  7.   
  8.   scanf("%s",c);
  9.   printf("%s\n",c);
  10. }
  11. }
复制代码
谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-22 16:09:51 | 显示全部楼层
%c只能输出一个字符,   而%s可以输出字符串.
scanf输入了c以后,按回车键,此时把一行字符连同换行符一起送入缓冲区,缓冲区检测到有换行符,就把一行字符送入系统内存,送给了c,而换行符'\n'还留在缓冲区里....

点评

正解。。。  发表于 2011-10-22 17:08
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-10-22 16:45:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-22 22:50:42 | 显示全部楼层
如果两次输入是a,b   则scanf 得到的是a(a键)  \n(回车键)   b(b键)   \n(回车键)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-22 23:30:33 | 显示全部楼层
呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-23 01:01:32 | 显示全部楼层
此代码嘿.他输入的时候把回车也算进去了.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-10-23 08:09:44 From FishC Mobile | 显示全部楼层
谢谢大家,这么热烈的回答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-18 15:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表