go to previous page   go to home page   go to next page

Answer:

Yes.


New Program

Here is a C program that implements the program design:

#include <stdio.h>
#include <ctype.h>

void main( void )
{
  int ch;

  ch = getchar();      /* attempt to read the first character */
  
  while ( ch != EOF )  /* while not end-of-file */
  {
    if (  'a' <= ch && ch < 'z' )
    {
      ch -= 'a' - 'A' ;  /* convert to upper case */
    }
    putchar( ch );
    ch = getchar();
  }
}

It is useful to recall that an assignment statement is an expression that has a value. The value of the entire expression is the value that was placed in the variable. So the value of

ch = getchar(); 

is whatever value was put into ch, including EOF when that happens. So the above code can be more conveniently written as:

#include <stdio.h>
#include <ctype.h>

void main( void )
{
  int ch;

  while ( (ch = getchar()) != EOF ) 
  {
    if (  'a' <= ch && ch < 'z' )
    {
      ch -= 'a' - 'A' ;  /* convert to upper case */
    }
    putchar( ch );
  }
}

This is still structured code, although now some of the stucture is embedded in the loop condition.


QUESTION 10:

Why are there parentheses around (ch = getchar()) ?