繁体   English   中英

使用C Readline从文件而不是stdin中读取一行

[英]Using C Readline to read a line from file instead of stdin

我正在使用gcc -lreadline的readline从stdin读取。 后来,我想从文件中读取内容,因此我尝试了以下操作,但是它仍然暂停并接受了命令提示符下的输入,而不是从文件中接受它。 这种方法有解决方法吗?


FILE* savedStdin = stdin;
stdin = fopen("someFile.txt", "r");
char* input = readline(NULL);
stdin = savedStdin;

readline库实际上是相当灵活的,几乎可以肯定地折磨了您想要做的事情。 但这似乎没有任何意义,当您尝试使用readline读取文件(在其他地方使用readline从控制台读取的程序中)的陈述原因是您不想自己管理输入缓冲区。 只需使用readline来读取控制台输入(如命令提示符),并且当您需要从文件中读取内容时,可以使用通常不使用readline的方式进行操作,例如使用fgets()

如果您真的不喜欢所有这些,则有一个名为rl_instream的全局变量,您可以对其进行修改以使readline从stdin以外的流中读取。 它的类型是FILE* ,并记录在这里: https : //tiswww.case.edu/php/chet/readline/readline.html

也许只是尝试使用stdin,然后使用以下命令运行它:

cat file.txt > program

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM