检查输入以查看用户是否已输入control-d

时间:2014-08-27 16:14:46

标签: c string user-input scanf

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'?

1 个答案:

答案 0 :(得分:2)

<强> Never use scanf.

如果你有getline,请使用它。否则,请使用fgets。无论哪种方式,键入的Ctrl-D(或来自重定向输入的文件结尾)将作为零字符读取传递给您,即空字符串。 (如果用户只按下Return而不先输入任何内容,则会得到一个 - 字符串“\ n”。)