我想编写一个程序,一直要求用户输入,直到我用ctrl + D突破它。这就是我所拥有的:
char input[100];
while(input != EOF){
printf("Give me a sentence:\n");
fgets(input, 5, stdin);
printf("your sentence was: %s\n", input);
}
我希望fgets从新输入的前5个字符重新开始,而不是像它在循环时的最后一个输入的第6个字符一样,而且我也不知道如何在while的时候编写条件来打破通过ctrl + D输出。现在你可以看到输入(这是一个char []与EOF进行比较)。
感谢您的任何建议。
答案 0 :(得分:1)
我认为你正在寻找功能feof。
char input[100];
while(!feof(stdin)){
printf("Give me a sentence:\n");
fgets(input, 5, stdin);
printf("your sentence was: %s\n", input);
}
答案 1 :(得分:0)
你不必担心“检测”ctrl-D,因为这是你的程序看不到的shell。在修复代码之前,你应该考虑使用输入重定向,然后再担心ctrl-D的事情
./myExecutable < inputFile