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).