标题:关于C语言的程序运行中途输入
只看楼主
这人
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-11-15
结帖率:0
已结贴  问题点数:20 回复次数:9 
关于C语言的程序运行中途输入
麻烦看一下,这个程序的当程序运行到请输入这一行为什么不会停下来。
新人学习。恳求大家的帮助,真心的。没人带的话,开始心里有太多的问题。
#include<stdio.h>
int main()
{

    int a,b,c;
    char d;
    printf("please input a number\n");
        scanf("%d",&a);
    printf("your input is:%d\n",a);
    printf("请输入‘y’or'n'\n");
    scanf("%c",&d);     
    printf("%d\n",a);

}
搜索更多相关主题的帖子: please number C语言 
2015-11-15 13:16
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:10 
程序代码:
int main(int argc, char** argv)
{
    int a, b, c;
    char d;
    printf("please input a number\n");
    scanf("%d", &a);
    printf("your input is:%d\n", a);
    printf("请输入‘y’or'n'\n");
    scanf(" %c", &d);    注意这一句,在%c的前面加一个空格。这样可以消除缓冲区中的回车键
    printf("%d\n", a);

    return (EXIT_SUCCESS);
}
2015-11-15 13:38
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:0 
也可以这样:
程序代码:
int a, b, c;
    char d;
    printf("please input a number\n");
    scanf("%d", &a);
    printf("your input is:%d\n", a);
    printf("请输入‘y’or'n'\n");
    getchar();        在这里加上这一句,从缓冲区中读取一个字符
    scanf("%c", &d);
    printf("%d\n", a);

    return (EXIT_SUCCESS);

2015-11-15 13:39
这人
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-11-15
得分:0 
回复 2楼 八画小子
您好,但是我感觉我的句子的逻辑上面没有任何问题。您说的那个缓冲区的那个回车是什么意思。
2015-11-15 13:46
这人
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-11-15
得分:0 
回复 3楼 八画小子
还有您的第二种方法,如果我后面是输入一个数字,不是一个字母。那getchar()就不能用了,怎么办。
2015-11-15 13:47
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:10 
你的终极目的是什么

DO IT YOURSELF !
2015-11-15 13:48
这人
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-11-15
得分:0 
回复 6楼 wp231957
就是想明白,为什么这个中途输入,用我的方法实现不了,真正的原因是什么。
2015-11-15 13:52
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
真正原因就是缓冲区里多了一个回车符

DO IT YOURSELF !
2015-11-15 13:56
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
int main(void)
{
    int a;
    char c[100]={'\0'};
    scanf("%d",&a);
    fflush(stdin);
    scanf("%s",c);
    printf("%s  %d  \n",c,a);
    return 0;   
}

DO IT YOURSELF !
2015-11-15 13:58
这人
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-11-15
得分:0 
回复 9楼 wp231957
谢谢。您的意思,我有点明白了,好像是在于我那个回车键的按下。但是具体的还是有点不明白。继续学习下去看能不能解决。
2015-11-15 16:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-459227-1-1.html




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

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