我想知道在命令行上回显名称时,在C中读取文件名的最佳方法是什么,如下所示:如果我输入
echo test.txt | a1
如何使用test.txt
访问
fopen(fname, "r");
?
答案 0 :(得分:3)
当您将数据从一个程序传输到另一个程序时,就好像您将第一个的输出键入到第二个程序中一样。在这种情况下,文件名可以从stdin读取,一种方法是使用fgets
函数读取它。
答案 1 :(得分:1)
从标准输入中读取数据。
处理数据。
#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
只是标准文件描述符的名称,因此您可以像读取任何其他文件一样从中读取。