簡體   English   中英

從終端讀取輸入

[英]Read an input from the terminal

我正在做一個項目,我必須從終端讀取數據。

所以程序正常啟動,用戶必須給出一些指令。 我希望程序等待用戶給出的指令(在終端中錄音),然后執行所有指令。

我只能使用read函數來獲取輸入。 直到現在,我找到了下面的方法

int main (void)
{
    char line[50];
    int ret;

    printf ("\nEnter string below\n");
    while ((ret = read(0, line, 50)) != -1)
    {
        line[ret] = '\0';
        printf ("result %s\n", line);
    }
}   

它有效,但我想輸入所有說明,然后在按 ENTER 時退出輸入模式並處理它們。

是否可以 ? 另外,是否有使用 CRTL + D 退出輸入模式的常用方法

謝謝

我認為你應該做

while (read(0, line, 50) > 0)
    printf("%s\n", line);

但是,如果這樣做,例如第一個輸入為 42 個字符而第二個輸入為 30,則會遇到麻煩,因為讀取函數不會重置“行”緩沖區。 如果可以,請使用 memset 或制作自己的函數來做到這一點!

為什么 > 0 而不是 != -1 :因為 read 返回 -1 如果它是錯誤和 0 如果它是輸入的結尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM