我正在制作一个程序,根据名为read-log
的C程序的参数读取CSV文件示例
$ ./read-log file1.csv
$ ./read-log file1.csv file2.csv nofile.csv
但是当我使用unix命令cat
时,我还需要我的程序来读取文件,但是当我输入时:
$ cat file1.csv |./read-log
该程序没有任何争议。
答案 0 :(得分:3)
只需使用默认打开的FILE *stdin
:
FILE *fp;
if (argc > 1) {
if (strcmp(argv[1], "-") == 0) // Many utilities accept "-" for the
fp = stdin; // filename to indicate stdin
else
fp = fopen(argv[1], "r");
}
else {
fp = stdin;
}
当您完成使用该文件后,请确保只有在实际打开文件时才关闭它:(关闭stdin
会导致一些有趣的错误!)< / p>
if (fp != stdin)
fclose(fp);