我只知道如何使用 getchar()
读取 C 语言中的字符,并且
到目前为止,我尽量不去超越 K&R 教给我的东西。所以
我想知道是否有任何方法可以使我的程序更通用,要求用户输入一个或多个值,并且仍然
能够阅读非常有用的内容
c = getchar ()) != EOF
当我做 1-20 、 1-21 和 1-22 练习时,我意识到我总是 赋予用户无法更改的值,例如:
#define BIG_LINE 16
#define BUFF_SIZE BIG_LINE+2
#define TAB_SIZE 4
等等
Is there a way that I can be able to use
$ ./myprogram < file
or
$ cat file | ./myprogram
and still ask the user to input one or several values with
getchar()
in both cases?
最佳答案
没有。您给出的两个示例命令( ./myprogram < file
和 cat file | ./myprogram
)都指定程序的标准输入管道将用于读取文件,因此 getchar()
只会从该文件中检索字符,并且不能用于获取用户的交互式输入。
也许您应该问一个更一般的问题,例如“是否可以编写一个 C 程序来从文件中读取数据,并提供一个交互式命令行用户界面,其中涉及提示用户并获取响应?”如果这就是您想要做的,您可以使用 C 函数 open()
或fopen()
打开输入文件的句柄,同时仍然使用标准输入管道和 getchar()
获取用户的交互式输入。
您需要告诉您的程序要打开的文件的路径。该路径可以在程序中硬编码,也可以来自环境变量,或者可以作为命令行上的参数提供(例如,您可以使用 ./myprogram file
运行它)。
关于C:键盘和终端输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29331995/