Why doesn't getchar() wait for me to press enter after scanf()?

Viewed 42100

I am learning C and I'm using "getchar()" to stop the command windows so I can see the exercises am doing but it just doesn't work. heres a sample:

#include <stdio.h>

int main()
{
    int value;
    printf("1. option 1.\n2. option 2.\n3. option 3.\n4. Exit\n\nMake an option: ");
    scanf("%d", &value);
    switch (value)
    {
        case 1:
            printf("you selected the option 1.");
            break;
        case 2:
            printf("you selected the option 2.");
            break;
        case 3:
            printf("you selected the option 3.");
            break;
        case 4:
            printf("goodbye");
            break;
        default:
            printf("thats not an option");
            break;
    }
    getchar();
    return 0;
}

this is the output:

  1. option 1.
  2. option 2.
  3. option 3.
  4. Exit.

Make an option: 1

you selected the option 1.

Process returned 0 (0x0) execution time : 3.453 s

Press any key to continue.

Why doesn't it wait for the input of "getchar()"?

10 Answers

while reading other answers it just came to me that you can use scanf("%d\n",&n); instead of scanf("%d",&n); to remove new line from buffer. I haven't checked this out though.

Hope it works :D

#include <stdio.h> 
#include<conio.h>
void main() 
{ 
    int value; 
    printf("1. option 1.\n2. option 2.\n3. option 3.\n4. Exit\n\nMake an option: "); 
    scanf("%d", &value); 
    switch (value) 
    { 
        case 1: 
            printf("you selected the option 1."); 
            break; 
        case 2: 
            printf("you selected the option 2."); 
            break; 
        case 3: 
            printf("you selected the option 3."); 
            break; 
        case 4: 
            printf("goodbye"); 
            break; 
        default: 
            printf("thats not an option"); 
            break; 
    } 
    getch(); 
} 
Related