开发者

Replacement of fflush(stdin)

I have the below code,

fflush(stdin);
print("Enter y/n");
scanf("%c",&a);

Here,it is quitting before giving the input.it looks like the issue is because it i开发者_如何学Pythons not flushing out the input buffer which might be having some junk characters.Is there any alternative for flush(stdin).This code snippet is working in Solaris but it is not working in Linux.


This is well explained in the C FAQ. See also: explanation. The proposed solutions:

  • Quit using scanf. Use fgets and the sscanf
  • Use this to eat the newline

    while((c = getchar()) != '\n' && c != EOF)
    /* discard the character */;
    

The fact that flushing stdin works on some implementations is wrong.

Some vendors do implement fflush so that fflush(stdin) discards unread characters, although portable programs cannot depend on this.


For C on GNU

you can use

__fpurge(stdin);

include stdio_ext.h header for accessing the function. Though the post is very old still I thought this might help some linux developers.


scanf(" %c",&c);

or

scanf(" ");
//reading operation (gets(), fgets(stdin,...) etc)

Spaces in the scanf() format string will ignore any whitespace until the first non-whitespace.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜