2013-10-23 75 views
1

我的任務是在c中創建一個測試程序,該程序讀取標準輸入的內容並打印出來。C語言中的「標準輸入」是什麼意思?

但我有點懷疑:究竟是什麼standard input

是我在鍵盤上鍵入的嗎?這是一個我必須閱讀的文件嗎?

他們倆?

謝謝。

+2

根據定義,這是一個文件描述符編號0。 http://en.wikipedia.org/wiki/Standard_streams –

回答

4

它是當你在命令行

它是一個程序

定義的3個標準流之一,當你在命令行上啓動程序運行的程序是什麼,你在鍵盤上鍵入你可以在終端上鍵入一些文本,並且文本將被傳遞給程序的標準輸入流

另外兩個流是顯示在終端上的標準輸出,並且顯示錯誤的錯誤流不應該在標準輸出的消息

在大多數終端上,你可以將流重定向到和文件,像這樣:

myprog.exe < file_to_read.txt 

其中file_to_read.txt將被讀取並傳遞到輸入輸入流

+1

我想說明的是,只有當您在終端直接啓動應用程序並且不給它任何標準輸入時,它纔是您在終端上輸入的內容。一般情況下,stdin也用於數據傳輸,當一個應用程序啓動另一個應用程序並需要提供數據時。例如,CGI規範涉及通過標準輸入發送支持CGI的應用程序數據,並通過標準輸出返回,但都沒有命中終端 - 這是一個網站! – Phoshi

1

From Wikipedia:

Unless redirected, input is expected from the keyboard which started the program.

3

「標準輸入」是指與文件描述符0相關的特定輸入流。它是從中流出的流scanfgetchar,gets(你應該永不使用)等,全部閱讀。基本上,任何不會將FILE *作爲參數的stdio輸入函數是從標準輸入讀取的。

這是通常綁定到您的控制檯,但可以重定向到從文件或其他設備讀取。

例如,

scanf("%d", &someVal); 

相當於

fscanf(stdin, "%d", &someval); 

從標準輸入(stdin)讀兩種功能。