我正在尝试学习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代表什么(换行?)以及当我使用重定向运行此程序时它为什么显示为第七个字符。
答案 0 :(得分:2)
执行echo "abcdef"
后,您会在结尾处获得换行符。这就是echo
默认情况下的工作方式。因此,您的文本文件包含7个字符:abcdef\n
。
您的c程序正常运行并显示数字10
(ASCII值\n
)和文字换行符。
在大多数系统(but not all)上,您可以执行echo -n "abcdef"
以避免使用新行。或者(也更便携),如果您关心新的换行符,请使用printf
代替echo
。