k和r行计数1.5.3不工作?

时间:2013-03-07 15:01:56

标签: c getchar

我遇到了k& r 1.5.3的问题。显然我是一个完全的初学者。下面是完全来自本书的代码,正如我输入的那样。它编译得很好并且运行。它返回字符,但从不打印行数。我正在使用ssh进入Ubuntu机器。我妻子的Mac上的钥匙可以解释为'\ n'吗?

#include <stdio.h>

/*count lines in input*/

main()
{
     int c, n1;

     n1 = 0;
     while ((c = getchar()) != EOF)
          if (c == '\n')
               ++n1;
     printf("%d\n", n1);
}

1 个答案:

答案 0 :(得分:5)

正确。 Mac使用\r作为行结尾:http://en.wikipedia.org/wiki/Newline

像这样更新你的代码:

#include <stdio.h>

/*count lines in input*/

main()
{
     int c, n1;

     n1 = 0;
     while ((c = getchar()) != EOF)
          if (c == '\r')                      /* use \r for Macs */
               ++n1;
     printf("%d\n", n1);
}

<强>然而

当我尝试这样做时,我必须Ctrl-D输入EOF并触发程序以打印行数。