图形说明

时间:2019-04-01 21:53:39

标签: c logic

#include <stdio.h>

int main()
{
   int c;  /* Present Character */
   int old_c; /* Previous Character */

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

我不太了解这段代码的工作原理。这是C编程语言练习1.9的解决方案:

  
    

练习1-9:

         

编写一个程序,将其输入复制到输出,用一个空格替换一个或多个空格的每个字符串。

         

C编程语言第二版,
            B. Kernighan和D.Ritchie,Prentice             霍尔,第20页。

  

这是我的问题

例如,我输入为Hello World\n

'\n'不是最后一个字符吗?保存到old_c : old_c = c;

有人可以向我解释一下代码的工作原理,因为我确实想学习c编程语言和编程。 我是一个初学者;

1 个答案:

答案 0 :(得分:0)

此代码执行9件事:

  1. 首先,它声明一些变量cold_c
  2. 然后它将来自键盘的输入读入c
  3. 然后,它检查old_c是否为c不是
  4. 如果是这样,它将打印一个空格并最后按下一个字符。
  5. 否则,它仅打印最后按下的字符。
  6. 然后,old_c设置为c
  7. 跳至2,直到输入停止(通常使用CTRL + D或Enter键)
  8. 然后加载返回值(在这种情况下为0
  9. ,它以该返回值退出。