这个通过<输入的C代码是如何工作的?(K&R)
$ ./main < input
如果我要检查 python 中的新行,我会打开文件然后分析这些行,但这几乎看起来很神奇。
int main(){
int c, nl;
nl = 0;
while ((c = getchar()) != EOF)
if (c == 'n')
nl++;
printf("%dn", nl);
return 0;
}
它如何知道接受任何输入文件而不在代码中声明?
回答
<shell 中的符号是输入重定向。它指出input在这种情况下给定文件的内容将被读取为标准输入。
因此getchar,input在这种情况下,任何诸如从 stdin 读取的函数实际上都将从文件中读取。
Python 中的类似程序也将使用从 stdin 而不是从文件中读取的函数。