Same reason that pushing with a rope, doesn't work well.
Stdin is an input buffer, not an output buffer. fflush() was made to work with output buffers (with some compilers, it will work at times, but it's non-standard) and not reliable.
The technical answer is that the C standard states that you can only flush output streams. This means that the result of fflush(stdin) is undefined and will probably result in different behavior depending on what platform you are working on.
bit∙hub [bit-huhb] n. A source and destination for information.