user9585531
user9585531

Reputation:

replacing two spaces with an 'x' using only putchar and getchar

This program should replace two spaces with an x, using only getchar() and putchar(). My approach was to store the space in a buffer and then print it out. But the program replaces every space with an x. Can someone help me out?

#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;
}

Upvotes: 0

Views: 277

Answers (1)

dbush
dbush

Reputation: 224982

When you read a character, first check if it's a space. If not, just print it. If it is read another character, then if the second is a space print an x otherwise print a space and the character you just read.

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);
        }
   }
}

Upvotes: 3

Related Questions