yl559 发表于 2018-12-19 11:39:55

求教各位大神一个C语言的问题

具体的题是这样的: 用户输入文本, 举一个例子,假如用户输入hello(空格空格空格)world. 用户得到的输出结果是hello(空格)world.

下面是我的具体代码,空格数量的调节已经可以实现,我有一点疑惑的是因为我的输出会吃掉首字母。请教一下为什么会有这种现象?

代码:
#include <stdio.h>
int main(){
        int characters = 0;
        while ((characters = getchar())!= EOF){
               
                if (characters != ' '){
                        putchar(characters);
                }
               
                if (characters == ' '){
                        while ((characters = getchar()) == ' ');
                        putchar(' ');
                }

        }
}

运行结果:

TyCk 发表于 2018-12-19 12:28:42

本帖最后由 TyCk 于 2018-12-19 12:34 编辑

if (characters == ' '){
                        while ((characters = getchar()) == ' ');   这里,当读取到的字符不是空格的时候,也就是你的第二个单词的首字母时,退出了循环,但未对这个字母进行输出,所以就丢掉了。
                        putchar(' ');
                }

解决的话,你可以在putchar(' ');下面再加一句 putchar(characters),把首字母打印出来。

Charles未晞 发表于 2018-12-19 12:45:40

#include <stdio.h>
int main()
{
        int characters = 0;
        while ((characters = getchar())!= EOF)
        {
                if (characters != ' ')
                {
                        putchar(characters);
      }
                if (characters == ' ')
                {
                        while ((characters = getchar()) == ' ');
                        putchar(' ');
                        putchar(characters);
                }
    }
}
退出循环的时候已经到了首字母,所以退出时候那个字母也要打印。
页: [1]
查看完整版本: 求教各位大神一个C语言的问题