这个程序应该用x替换两个空格,只使用getchar()和putchar()。我的方法是将空间存储在缓冲区中,然后打印出来。但是程序用一个x代替了每个空格。有人能帮我吗?

#include <stdio.h>
#define MAX 2

char arr[MAX];
int ret = 0;
char second;

int main()
{
  for(int i=0; ; )
  {
    if ( (ret = getchar())!= EOF)
    {
         putchar(ret);
    }
    if(ret==' '&&second==' ')
    {
      arr[i]=ret;
      arr[i]='x';
      putchar(arr[i]);
    }
  }
  return 0;
}

最佳答案

当你读一个字符时,首先要检查它是否是空格。如果没有,就打印出来。如果读取的是另一个字符,则如果第二个字符是空格,则打印一个x,否则打印一个空格和您刚刚读取的字符。

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

关于c - 仅使用putchar和getchar用'x'替换两个空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49836613/

10-11 20:55