从C中的echo命令读取文件名

时间:2013-09-21 23:45:02

标签: c

我想知道在命令行上回显名称时,在C中读取文件名的最佳方法是什么,如下所示:如果我输入

echo test.txt | a1

如何使用test.txt访问 fopen(fname, "r");

3 个答案:

答案 0 :(得分:3)

当您将数据从一个程序传输到另一个程序时,就好像您将第一个的输出键入到第二个程序中一样。在这种情况下,文件名可以从stdin读取,一种方法是使用fgets函数读取它。

答案 1 :(得分:1)

  1. 从标准输入中读取数据。

  2. 处理数据。

  3. #include <stdio.h>
    
    char buf[1024];
    
    while (fgets(buf, sizeof buf, stdin))
    {
        printf("Read line: '%s'\n", buf);
    
        FILE * fp = fopen(buf, "r");
    
        if (fp)
        {
            // process the file
            fclose(fp);
        }
        else
        {
            printf("No such file: %s\n", buf);
        }
    }
    

    显而易见的警告是文件名可能超过1023个字符;请阅读fgets的手册,了解有关如何检测此内容的详细信息。

    编写它的方式,你将按进行一次处理尝试,当输入流结束时程序停止。

答案 2 :(得分:0)

您正试图从标准输入读取,这意味着您可以使用fread(* man 3 fread on * nix,here如果您不是。)从中读取。< / p>

stdin只是标准文件描述符的名称,因此您可以像读取任何其他文件一样从中读取。