我有一個功能,調用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