循环用户输入

时间:2011-10-30 00:07:44

标签: c input stdin fgets

我想编写一个程序,一直要求用户输入,直到我用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进行比较)。

感谢您的任何建议。

2 个答案:

答案 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