3

我在使用 k&r 1.5.3 时遇到问题。显然我是一个完整的初学者。下面是完全来自书中的代码,和我输入的完全一样。它编译良好并运行。它返回字符,但从不打印行数。我在 Ubuntu 机器中使用 ssh。我妻子的mac上的key不能解释为'\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);
}
4

1 回答 1

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并触发程序打印行数。

于 2013-03-07T15:03:26.397 回答