从C上的终端输入“cat”读取文件

时间:2014-03-26 02:50:35

标签: c file csv cat

我正在制作一个程序,根据名为read-log

的C程序的参数读取CSV文件

示例

$ ./read-log file1.csv

$ ./read-log file1.csv file2.csv nofile.csv

但是当我使用unix命令cat时,我还需要我的程序来读取文件,但是当我输入时:

$ cat file1.csv |./read-log

该程序没有任何争议。

1 个答案:

答案 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);