| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 977 人关注过本帖
标题:自学C求助:输入空格的时候程序停不下来
只看楼主 加入收藏
w906414
Rank: 2
等 级:论坛游民
帖 子:75
专家分:76
注 册:2015-5-29
结帖率:81.82%
收藏
已结贴  问题点数:20 回复次数:17 
自学C求助:输入空格的时候程序停不下来
#include <iostream>
#define SPACE ' '
int main(int argc, char** argv) {
    char ch;
    ch=getchar();
    while(ch!='\n')
    {
        if(ch==SPACE)
        {
            putchar(ch);
        }
        else
        {
            putchar(ch+1);
            ch=getchar();
        }
    }
    putchar(ch);
    return 0;
}
抄的<<c primer plus>>上面的程序,实现改变输入保留空格的功能
搜索更多相关主题的帖子: include return 
2015-07-23 16:32
w906414
Rank: 2
等 级:论坛游民
帖 子:75
专家分:76
注 册:2015-5-29
收藏
得分:0 
问了下度娘:用getchar无法获取回车,实际上用任何方法(常规库函数)都无法获取回车,因为控制台是在你输入完一行并点下回车之后,把除了回车之外的字符一起送到程序输入缓存中的,你只能用变通的方法,比如一次获取一行,那么必然在最后一个字符后面是一个回车,尽管你获取的数据里没有回车,但是可以断定用户按下回车了,不然无法输入。 如果是这样,getchar就不行了,需要getche函数。那么这个程序是不是就有问题了
2015-07-23 16:43
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:7 
a,这绝对不是中的代码b,头文件和入口函数写的莫名其妙c ,if语句和相对应的else代码块其一少了个putchar()函数
2015-07-23 16:47
w906414
Rank: 2
等 级:论坛游民
帖 子:75
专家分:76
注 册:2015-5-29
收藏
得分:0 
回复 3楼 hjx1120
头文件和main函数是我用的编译器给的,用的是dev-c++,里面的程序是看的书上的,你说少了个putchar(),我看不明白为什么少啊,能具体讲下吗,谢谢了
2015-07-23 17:15
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
getchar和putchar是男女朋友关系,少一个就是光棍了,,在看看楼主的代码?是不是她男朋友不见了,,
2015-07-23 17:24
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:3 
停不下来是因为ch没更新
        if(ch==SPACE)
        {
            putchar(ch);
            ch=getchar();
        }


梦想拥有一台龙芯3A-4000
2015-07-23 17:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
抄错了,认真比对再提问。

授人以渔,不授人以鱼。
2015-07-23 19:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这本书真写出这样的代码?就算你把它改对,也不能改变这代码起始的布局不佳的事实呀。看了不少人发的这本书代码,好像真有问题,是这本书有问题。

授人以渔,不授人以鱼。
2015-07-23 20:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你这个功能,本来就不该用while(),应用do{}while(),就算用while(),里面的ch=getchar()也不能放在else分支上,那正是造成输入空格时落入死循环的原因,因为代码再也无法执行ch=getchar()了,则ch一直是SPACE,当然死循环。你是初学,料你也不至于把ch=getchar()抄错行,更不会把while()这样的抄错,那么一定是这本书本身的代码就不良。

授人以渔,不授人以鱼。
2015-07-23 20:35
w906414
Rank: 2
等 级:论坛游民
帖 子:75
专家分:76
注 册:2015-5-29
收藏
得分:0 
回复 5楼 hjx1120
谢谢了,看到问题了
2015-07-23 20:49
快速回复:自学C求助:输入空格的时候程序停不下来
数据加载中...
 
   



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

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