| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 628 人关注过本帖
标题:一个猜数程序中的scanf中空格问题
取消只看楼主 加入收藏
tangtangt
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:46
专家分:146
注 册:2012-1-22
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:2 
一个猜数程序中的scanf中空格问题
这是个猜数问题,猜完一个数后程序会问你是否继续猜下一个
程序代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()
{
    int magic;
    int guess;
    int count = 0;
    char reply;
    
    
    srand(time(NULL));
    do
    {
        magic = rand()%100 +1;
        do    
        {
            printf("guess a number: \n");
            scanf("%d",&guess);
            count++;
            if( magic > guess)
            printf("too low \n");
            else if( magic < guess)
            printf("too high \n");
        }
        while((guess != magic) && (count < 10));
            if(count < 10)
                printf("right");
            else
                printf("no chance");

        printf("do you want to contiune(y or n):");
        scanf("%c",&reply);    //问题就在这个scanf这里,答案中写着%c前面有一个空格,然后发现加了空格程序正常
    }while (reply == 'y');             //没加空格后会跳过reply的输入,直接结束程序了
                                           //非常困惑,,想问一下这里的%c前面空格到底有什么作用           
         printf("game over");              
    
    

    return 0;
}
搜索更多相关主题的帖子: guess 
2012-02-25 19:56
tangtangt
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:46
专家分:146
注 册:2012-1-22
收藏
得分:0 
回复 2楼 墨清扬
谢谢指教。我反复试了一下了,用vc6.0,没空格的情况下的确是读取了换行符,但是有空格的情况程序就正常了。
还有为什么读取换行符了,我还是不太理解啊。
2012-02-25 21:16
tangtangt
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:46
专家分:146
注 册:2012-1-22
收藏
得分:0 
的确是忽略了5楼所说的scanf()会把回车当做字符接收赋给reply,不过貌似和上面那句话没有什么关系。应该2楼说的读取的值时候输入的回车。
试了一下,在一开始的读取猜的数时scanf后面加ch=getchar()把回车清理掉就行了。还有另一种方法就是加那个空格,这题答案那里特别注释了%c前面有空格,
于是去查了下c primer plus,书上说在%c之前加空格则读取遇到的第一个非空白字符。
多谢两位了。
2012-02-26 01:34
快速回复:一个猜数程序中的scanf中空格问题
数据加载中...
 
   



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

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