| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4842 人关注过本帖
标题:输入一串字符串,怎么跳过开始的空格符,从非空格符出开始录入?
只看楼主 加入收藏
cooboo
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
输入一串字符串,怎么跳过开始的空格符,从非空格符出开始录入?
C语言现代方法第7章的编程11题,只能用getchar
搜索更多相关主题的帖子: C语言 字符串 
2014-09-23 13:08
muyoucumian
Rank: 3Rank: 3
等 级:等待验证会员
帖 子:80
专家分:126
注 册:2014-8-30
收藏
得分:7 
关键代码
程序代码:
char ch = 'a';

    printf("input: ");

    while (ch != ' '){        //检测不到空格,我就打空转
        ch = getchar();
    }
    while (ch != '\n'){        //检测到了空格,但是没有检测到回车,我就把吃进去的每个字符都吐出来
        putchar(ch);
        ch = getchar();
    }

2014-09-23 15:58
cooboo
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-23
收藏
得分:0 
回复 2 楼 muyoucumian
那个题目要求跳过开始的空格并且只录入一长串字符串的第一个字符
我写的代码是这样的,但是每次都闪退,不知道哪里错了

程序代码:
  int i = 0;
        char ch;
        
        ch = getchar();

        while(ch != ' '){
             ch = getchar();
             i++;
             if (i > 0)
             break;
   }
   
        putchar(ch1); 


[ 本帖最后由 cooboo 于 2014-9-23 17:01 编辑 ]
2014-09-23 16:59
muyoucumian
Rank: 3Rank: 3
等 级:等待验证会员
帖 子:80
专家分:126
注 册:2014-8-30
收藏
得分:0 
char ch = ' ';

    printf("input: ");

    while (ch == ' '){        //检测到是空格,就不输出这个字符,继续录入下一个字符
        ch = getchar();
    }

    putchar(ch);            //检测到不是空格,就输出这个字符
2014-09-23 17:11
muyoucumian
Rank: 3Rank: 3
等 级:等待验证会员
帖 子:80
专家分:126
注 册:2014-8-30
收藏
得分:0 
回复 3 楼 cooboo
int i = 0;
        char ch;
        
        ch = getchar();

        while(ch != ' '){
             ch = getchar();
             i++;
             if (i > 0)
             break;
   }
   
        putchar(ch);     //将ch1改为ch后不会闪退
但是这段程序还是有问题,如果输入的第一个字符不是空格,会执行两次getchar,结果最后输出的当然是第二次getchar的值。比如输入xiong会输出i。
如果输入的第一个字符是空格,会执行一次getchar,最后输出的就是第一个getchar的值,就是空格。比如输入 xiong会输出空格。
另外,i++和if(i>0)可以直接删掉剩下break没任何影响。
2014-09-23 17:25
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:7 
程序代码:
#include <stdio.h>

int main(int argc, char *argv[])
{
    int c, state;

    state = 0;
    while ((c = getchar()) != EOF) {
        if (c == ' ') {
            if (state == 0)
                ;
            else
                putchar(' ');
        }
        else {
            state = 1;
            putchar(c);
        }
    }
    return 0;
}

梦想拥有一台龙芯3A-4000
2014-09-23 17:45
cooboo
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-23
收藏
得分:0 
回复 5 楼 muyoucumian
谢谢
2014-09-23 17:52
cooboo
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-23
收藏
得分:0 
回复 6 楼 ditg
谢谢
2014-09-23 17:59
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:7 
简单说说:
不同你们要求的角度来看,这种类型的问题,建议先保存字符数组,然后针对字符数组进行操作,
把录入看成一个模块,处理看成一个模块,输出看成一个模块,是迅速处理问题的最佳思路
2014-09-23 19:55
快速回复:输入一串字符串,怎么跳过开始的空格符,从非空格符出开始录入?
数据加载中...
 
   



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

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