簡體   English   中英

檢查輸入以查看用戶是否輸入了control -d

[英]Checking input to see if user has entered control-d

對於C來說還很陌生,我有一個可能很簡單的問題。 我正在用C編寫一個程序,該程序會從用戶那里讀取一系列字符串。 在用戶指示他已經完成輸入字符串之后,程序應該對這些字符串進行處理。 他通過輸入“ Ctrl-D”來做到這一點。

我在弄清楚如何檢查用戶是否輸入“ Ctrl-D”時遇到麻煩。 從我的初步研究來看,似乎Ctrl-D應該與文件結尾有關,這似乎不是我可以輕松檢查的字符。

我正在嘗試通過scanf讀取這些字符串。 我有以下代碼(請忽略最終返回的初始字符串數組。我知道當前它什么也不做。

char **get_fragments_from_user(){
    char *strings[20000];

    char tempstring[1001];
    while(true){
        printf("\n> ");
        scanf("%s", &tempstring);
        printf("\n Recorded %s", tempstring);
        if(tempstring[0] == -1) break;
    }
    return strings;
}

有沒有一種簡單的方法來檢查用戶是否輸入了“ Ctrl-D”?

切勿使用scanf

如果您有getline ,請使用它。 否則,請使用fgets 無論哪種方式,鍵入的Ctrl-D(或來自重定向輸入的文件結尾)都會作為零字符讀取 (即空字符串)傳遞給您。 (如果用戶只按Return鍵而不先輸入任何內容,則將獲得一個-字符串“ \\ n”。)

暫無
暫無

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

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