| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 596 人关注过本帖
标题:新人求指点
只看楼主 加入收藏
lilinyi
Rank: 1
等 级:新手上路
帖 子:9
专家分:9
注 册:2010-4-22
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
新人求指点
有如下程序:

#include<stdio.h>
void main()
{
    char c;
    int a,b,flag=1;
    while(flag)
    {
        printf("请输入a的值:\n");
        scanf("%d",&a);
        printf("请输入b的值:\n");
        scanf("%d",&b);
        printf("%5d,%5d\n",a,b);
        printf("continue?(Y/N)");
        scanf(" %c",&c);
        if(c=='n'||c=='N')
            flag=0;
    }
}
请问为啥第14行“scanf(" %d",c);”中需要加个空格呢?没有空格就会出错是为什么呢?自己没想明白,求大家指点迷津,谢谢了!

[ 本帖最后由 lilinyi 于 2010-7-1 19:24 编辑 ]
搜索更多相关主题的帖子: 新人 
2010-07-01 19:23
方廷
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:47
专家分:176
注 册:2010-6-9
收藏
得分:10 
scanf(" %c",&c);
可以这样写:
getchar();//吃掉上次输入时的回车字符
scanf("%c",&c);
因为在输入字符之前有别的参数输入时,我们会按回车键确认,就有一个回车字符产生;
这时的scanf("%c",&c);会自动接收回车字符;



2010-07-01 21:03
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:10 
这个的原因如楼上所说,回车键会被当做一个字符被c接收,
解决的方法有很多。
可以在输入的格式控制前面加上一个‘\n’或者‘ ’,都可以。
也可以在输入语句之前加上,getchar()或者getch();

南国利剑
2010-07-02 11:10
lilinyi
Rank: 1
等 级:新手上路
帖 子:9
专家分:9
注 册:2010-4-22
收藏
得分:0 
哦,那如果c定义为整形数据,就不需要了吧?还有那加了一个空格后,是不是就因为回车符的位置在空格那儿了,所以输入函数就对了是吗?那如果加了两个空格的话,是不是输入的时候得先输个空格符呢?

[ 本帖最后由 lilinyi 于 2010-7-2 19:05 编辑 ]
2010-07-02 19:02
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
回复 4楼 lilinyi
不是的,加两个空格的效果跟加一个空格的效果是一样的。

南国利剑
2010-07-03 03:16
快速回复:新人求指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011386 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved