C:键盘和终端输入

标签 c input

我只知道如何使用 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 < filecat file | ./myprogram )都指定程序的标准输入管道将用于读取文件,因此 getchar()只会从该文件中检索字符,并且不能用于获取用户的交互式输入。

也许您应该问一个更一般的问题,例如“是否可以编写一个 C 程序来从文件中读取数据,并提供一个交互式命令行用户界面,其中涉及提示用户并获取响应?”如果这就是您想要做的,您可以使用 C 函数 open()fopen()打开输入文件的句柄,同时仍然使用标准输入管道和 getchar()获取用户的交互式输入。

您需要告诉您的程序要打开的文件的路径。该路径可以在程序中硬编码,也可以来自环境变量,或者可以作为命令行上的参数提供(例如,您可以使用 ./myprogram file 运行它)。

关于C:键盘和终端输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29331995/

相关文章:

C内存访问错误结果

c - 保持 OCaml 值永远在堆外/故意泄漏 OCaml 值

c - 如何使用NDK为Android设备(ARM)编译C代码?

forms - 为什么我的复选框输入总是一样的?

bash - 如何将用户输入读入 Bash 中的变量?

c++ - 库和命名空间之间的关系是什么?

linux - 如何在bash中显示一行文本

java.util.NoSuchElementException - 扫描器读取用户输入

c - 通用快速排序不起作用

c - openCL 中的字符串扩展