我有一个功能,调用fgets()
与stdin
作为流,寻找用户输入。但是,在某些情况下,我宁愿让程序决定输入什么,而不是要求用户输入。如果我能找到一种方法来加载stdin
缓冲区之前调用函数与fgets()
之前的值,这将允许我不改变包含fgets()
,同时仍然采取程序输入功能?如果是这样,那么如何加载缓冲区stdin
?加载stdin缓冲区
1
A
回答
2
我有一个很棒的技巧,你可能会喜欢尝试:
#include <stdio.h>
#include <string.h>
int main(void) {
char myString[100];
char *hello = "hello world\n";
int ii;
for(ii=strlen(hello); ii>=0; ii--) ungetc(hello[ii], stdin);
fgets(myString, 99, stdin);
printf("I just read '%s'\n", myString);
return 0;
}
当我编译和运行,我得到:
I just read 'hello world
'
注意,newline
保持与字符串(这是必要的fgets
立即返回) - 所以你需要分开照顾。我不需要单独打回车 - 只需运行程序即可。
我确信您可以根据您的需求进行调整。
0
我有一个答案,但它不涉及标准缓冲区。在我编写的一些程序中,我有可选的命令行参数。您可以添加一个命令行标志并在命令行中包含可选输入或作为输入文本文件。如果这个选项适合你,我可以扩展这个答案。
+0
我想到了这一点,但我想看看是否有一种更“巧妙”的方式来做到这一点,可以这么说。 –
相关问题
- 1. 如何增加STDIN缓冲区大小
- 2. Flushing Perl STDIN缓冲区
- 3. 清除stdin缓冲区?
- 4. stdin缓冲区如何工作?
- 5. php:// stdin缓冲区的监控大小
- 6. 是stdin缓冲区空的C
- 7. 检查stdin缓冲区是否为空
- 8. 将文件加载/流式传输到缓冲区/缓冲区
- 9. Java加载图像到缓冲区
- 10. 从缓冲区(* .ico文件)加载HICON
- 11. 逻辑缓冲区负载 - 缓慢的帧缓冲区负载 - ios
- 12. Python/PyAudio - 缓冲区欠载
- 13. 关于缓冲区加载和缓冲区保存的触发命令
- 14. vim:获取卸载缓冲区的缓冲区号
- 15. 在缓冲区列表视图中增加“缓冲区”列宽
- 16. 缓冲区溢出缓冲区长度
- 17. 帧缓冲区/颜色缓冲区?
- 18. 增加缓冲区大小
- 19. 追加阵列缓冲区
- 20. Python从Stdin无缓冲区读取并输出
- 21. 如何检查stdin缓冲区是否包含一些数据?
- 22. 如何更改python的stdin缓冲区大小?
- 23. 如何检查TCL中stdin缓冲区是否为空?
- 24. stdin和输入缓冲区的内部工作
- 25. vim缓冲区写入目标设置为stdin
- 26. 有没有办法查看stdin缓冲区?
- 27. stdin,stdout,stderr在Lua中是缓冲还是非缓冲?
- 28. 在缓冲区
- 29. 与缓冲区
- 30. Ext.direct缓冲区
你想推送一些字符到'stdin'缓冲区,对吗?包括行尾字符? – Floris
是的。我认为这应该工作。你会怎么做? –
为什么在调用'fgets()'之后不直接连接字符串? – fvdalcin