提问人:RedstoneAGX 提问时间:7/29/2022 更新时间:7/29/2022 访问量:84
你能从 C 标准库中的键盘以外的设备获取输入吗?
Can you get input from devices aside from the keyboard in C's standard library?
问:
我正在读一本 1997 年的书,它教如何用 C 语言编程,在指定像 scanf 这样的函数从键盘获取输入时,它总是使用“通常”这个词。正因为如此,我很好奇像 scanf 这样的函数是否可以从其他设备获取输入,或者它是否曾经如此。
答:
4赞
John Bollinger
7/29/2022
#1
正因为如此,我很好奇像 scanf 这样的函数是否可以从其他设备获取输入,或者它是否曾经如此。
scanf
从程序的标准输入中获取输入。这与操作环境和程序启动方式有关。(查找“I/O 重定向”)。程序的标准输入连接到磁盘上的文件或其他程序的输出并不罕见。它有时连接到插座。更罕见的是,它连接到串行端口、空设备、零或随机字节源。
从历史上看,它可能已连接到卡片或纸带读卡器。
原则上,它可以连接到任何产生数据的设备(例如鼠标),但仅仅因为某些事情是可能的,并不能使它有用。
评论
0赞
RedstoneAGX
7/29/2022
谢谢,这将是非常有趣的。
0赞
linuxias
7/29/2022
我认为,布林@John的答案是正确的。在操作系统内部抽象输入接口,并在相应的抽象层下处理与其他设备的连接。键盘输入现在是默认设置,但您可以连接到另一个输入。但我不知道这是否合理。Linux 将每个设备定义为一个文件,并允许所有设备通过 fd 打开、读取、写入和关闭。
2赞
chux - Reinstate Monica
#2
之后,输入可以来自许多可能的来源。freopen( ..., ...., stdin)
scanf()
评论
0赞
RedstoneAGX
8/1/2022
你能给我一个例子,说明如何使用它从另一个来源获取输入吗?
1赞
chux - Reinstate Monica
8/1/2022
创建文件“sometextfile.txt”,然后尝试通过 读取它。freopen("sometextfile.txt", "r", stdin);
stdin
上一个:带变量的基本输出
评论
scanf()
stdin