0

我的主要问题是为什么 fflush(stdin); 功能不工作?每当我运行代码时,我都无法使用空格 ex 获得第二个输入。你好世界,但我得到你好??谢谢

#include <stdio.h>

main(){

    int      x;
    double   y;
    char     string[100];

     /*

      * string input

      */

     printf("Enter one word: ");
     scanf("%s", string);  // note there is no & before string */
     printf("The word you entered was >>%s<<\n");

     printf("Enter many words: ");
     fflush(stdin); // <---- for some reason this function is not working
     scanf("%[^\n]", string); // read up to a newline (multiple words)

     printf("The text you entered was >>%s<<\n");

     getchar();   
}
4

2 回答 2

4

因为fflush(stdin)是未定义的行为。fflush()仅由 C 标准为输出流定义,并更新最后一个操作是输出的流。

于 2013-10-26T18:29:14.630 回答
1

如果您得到任何输出,那将是因为您在问题描述区域中显示的代码不是您实际使用的代码。

关于您的陈述:
我无法使用空格 ex 获得第二个输入。你好世界,但我得到你好??. 如果语句
中没有附加参数,您将不会得到任何输出,并且会出现运行时错误。printf()

该行(两个地方)printf("The word you entered was >>%s<<\n"); 需要另一个参数 add ,string,如下所示:

 printf("The text you entered was >>%s<<\n", string);

这将解决您的问题。

string这是在printf()(而不是删除fflush())添加参数后的输出
在此处输入图像描述
显然,fflush(stdin);这里不是真正的问题,至少对于所述的问题?

于 2013-10-26T19:06:59.873 回答