繁体   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