将一个或多个空格的每个字符串替换为一个空格

Replace each string of one or more blanks with a single blank

这个问题已经有人问过了,但是我自己做了一个程序,但我不知道为什么它不起作用。

int c;
char blank;


while ((c = getchar()) != EOF) {
    if (c == ' ') {
        putchar(c);
        while ((c = getchar()) == ' ') {
            putchar('');
        }
    }
    putchar(c);
}

基本上,我所做的就是将 space 替换为空。但它不起作用。如果我输入 '1' 而不是 '' 它会将 spaces 替换为 1s 所以我不知道有什么问题

您的代码中的具体错误在于您使用 putchar() 函数的方式。使用putchar()时必须在里面放一个字符,如putchar('a'),但不能留空。这就是您收到错误的原因:

error: empty character constant

基本上,putchar() 必须放置一个字符,单引号之间的任何内容:'',都不是字符。

要修复您的代码:您应该完全删除 putchar('') 行,这样您的代码将如下所示:

while ((c = getchar()) != EOF) {
    if (c == ' ') {
        putchar(c);
        while ((c = getchar()) == ' ') {

        }
    }
    putchar(c);
}

#我想推荐我的代码:

    int c,nb=0;
    while((c=getchar())!=EOF){
      if(c==' '){
         ++nb;
         if(nb>1){
           continue;
         }
         putchar(c);
    }
      if(c!=' '){
         nb=0;
         putchar(c);
    }
    }