K&R Exercise 1-9 (C)

后端 未结 30 1155
北荒
北荒 2021-01-31 19:46

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

I\'m assuming by thi

30条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-01-31 20:22

    This is a solution using only the techniques described so far in K&R's C. In addition to using a variable to achieve a finite state change for distinguishing the first blank space from successive blank spaces, I've also added a variable to count blank spaces along with a print statement to verify the total number. This helped me to wrap my head around getchar() and putchar() a little better - as well as the scope of the while loop within main().

    // 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 
    
    int main(void)
    {
        int blank_state;
        int c;
        int blank_count;
    
        printf("Replace one or more blanks with a single blank.\n");
        printf("Use ctrl+d to insert an EOF after typing ENTER.\n\n");
    
        blank_state = 0;
        blank_count = 0;
        while ( (c = getchar()) != EOF )
        {
            if (c == ' ')
            {
                ++blank_count;
                if (blank_state == 0)
                {
                    blank_state = 1;
                    putchar(c);
                }
            }
            if (c != ' ')
            {
                blank_state = 0;
                putchar(c);
            }
        }
    
        printf("Total number of blanks: %d\n", blank_count);
    
        return 0;
    }
    

提交回复
热议问题