Exercise 1.9 - Replace Continous blanks with a single blank

Question

Write a program to copy its input to its output, replacing each string of one or more blanks by a single blank.

Solution

/**
 * Exercise 1.9 - Write a Program to copy its input to its output, replacing
 * each string of one or more blanks by a single blank.
 *
 * */

#include<stdio.h>

#define NONBLANK '-'

int main(void)
{
  int c, lastc;

  lastc = NONBLANK;

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

Explanation

The essence of this program is, while reading the characters, if the last character that we encoutered is a blank, then we skip printing it.

if(lastc!=' ')
    putchar(c);

This means that if the last character is not a blank, only then print it. We store the last character in the lastc variable in the line lastc = c. For rest of the characters we simplying print it by putchar (c).