How to clear input buffer in C?

前端 未结 12 2527
一个人的身影
一个人的身影 2020-11-21 08:45

I have the following program:

int main(int argc, char *argv[])
{
  char ch1, ch2;
  printf(\"Input the first character:\"); // Line 1
  scanf(\"%c\", &ch         


        
12条回答
  •  萌比男神i
    2020-11-21 09:17

    I encounter a problem trying to implement the solution

    while ((c = getchar()) != '\n' && c != EOF) { }
    

    I post a little adjustment 'Code B' for anyone who maybe have the same problem.

    The problem was that the program kept me catching the '\n' character, independently from the enter character, here is the code that gave me the problem.

    Code A

    int y;
    
    printf("\nGive any alphabetic character in lowercase: ");
    while( (y = getchar()) != '\n' && y != EOF){
       continue;
    }
    printf("\n%c\n", toupper(y));
    

    and the adjustment was to 'catch' the (n-1) character just before the conditional in the while loop be evaluated, here is the code:

    Code B

    int y, x;
    
    printf("\nGive any alphabetic character in lowercase: ");
    while( (y = getchar()) != '\n' && y != EOF){
       x = y;
    }
    printf("\n%c\n", toupper(x));
    

    The possible explanation is that for the while loop to break, it has to assign the value '\n' to the variable y, so it will be the last assigned value.

    If I missed something with the explanation, code A or code B please tell me, I’m barely new in c.

    hope it helps someone

提交回复
热议问题