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'?
答案 0 :(得分:2)
<强> Never use scanf
. 强>
如果你有getline
,请使用它。否则,请使用fgets
。无论哪种方式,键入的Ctrl-D(或来自重定向输入的文件结尾)将作为零字符读取传递给您,即空字符串。 (如果用户只按下Return而不先输入任何内容,则会得到一个 - 字符串“\ n”。)