Is there any other method to clear the input buffer in c withut using
fflush();
or
while(getchar()!=\'\\n\');
<
Using fgets() as suggester @unwind best approach.
To flush to the end of the line.
void FlushStdin(void) {
int ch;
while(((ch = getchar()) !='\n') && (ch != EOF));
}
If stdin is all ready flushed to the end-of-line, calling FlushStdin() or other posted scanf(), fgetc() solutions, will flush to the end of the next line.
Note scanf("%*[^\n]%*1[\n]"); does not work if the next char is '\n'.
Another method to clear the input buffer(stdin) would be to use
scanf("%*[^\n]%*1[\n]");
Here,%*[^\n] instructs scanf to scan everything until a new-line character(\n) is found and then discard it.The %1*[\n] tells scanf to scan 1 character including a \n character and discard it also.
The best solution is to not depend on the input buffer's state so much.
Read input as whole lines, using fgets(), then parse those. Don't use e.g. scanf() to read individual values, since it interacts with the buffer in annoying ways.