我怎么能用scanf读取c中的txt文件

时间:2016-09-13 11:40:41

标签: c scanf stdin

所以我必须使用'<'从命令行读取txt文件。运营商。

例如我在终端的可执行文件是:

 。\ file book1.csv output.csv< find.txt
book1.csv是我的argv [1],其中我使用fscanf插入数据,output.csv是根据我的程序编写文件的地方,find.txt是我从txt文件中获取参数以查找它的地方来自book1.csv。

我只允许使用scanf,因为我必须从命令行参数中读取它。

这是我在主函数内部的txt文件中读取的代码,但由于某种原因,它会在无限循环中打印出某种目录。

char key[66];
while((scanf("%[^\n]s ", &key))!= EOF){
    printf("%s\n",key);
}

这是txt文件由

组成的 詹姆斯邦德郎 乔伊
彼得

所以我希望使用我的printf语句逐个打印这三个名字,但它会在我的输出中输出某种目录,并且它是一个无限循环。

1 个答案:

答案 0 :(得分:0)

在命令行中使用<时,程序不应从文件中读取。这意味着,文件流替换stdin(标准输入流),并且您的程序从键盘读取,例如与scanf

问题在于使用scanf:阅读references了解详细信息以及%s说明符使用key没有&(密钥已经是内存地址) ,并使用&获取地址会导致内存使用不正确)