额外的回车来自哪里?

时间:2016-05-28 23:41:09

标签: c

我正在尝试学习c编程。

我写过这个小程序:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    // variable declarations
    long nc;
    char ch;

    // initialize variables
    nc = 0;

    while ((ch = getchar()) != EOF) {
        printf("%d\t%c\n", ch, ch);
        ++nc;
    }

    printf("Number of characters typed: %ld\n", nc);

    return EXIT_SUCCESS;
}

我创建了一个像这样的小文本文件:

echo "abcdef" > text.txt

当我像这样运行这个程序时:

./countchar < text.txt

我得到以下输出:

97      a
98      b
99      c
100     d
101     e
102     f
10

Number of characters typed: 7

我的问题是在这种情况下10代表什么(换行?)以及当我使用重定向运行此程序时它为什么显示为第七个字符。

1 个答案:

答案 0 :(得分:2)

执行echo "abcdef"后,您会在结尾处获得换行符。这就是echo默认情况下的工作方式。因此,您的文本文件包含7个字符:abcdef\n

您的c程序正常运行并显示数字10(ASCII值\n)和文字换行符。

在大多数系统(but not all)上,您可以执行echo -n "abcdef"以避免使用新行。或者(也更便携),如果您关心新的换行符,请使用printf代替echo