Problem char, switch case

0

#include <stdio.h>
int main()
{
int opcja;
char a;
printf("Wybierz opcje:\n 1-Szyfrowanie\n");
scanf("%d",&opcja);
switch(opcja)
{
case 1:
printf("podaj litere ktora chcesz wypisac\n");
scanf("%c",&a);
printf("%c\n",a);
break;
default:
printf("Zły wybór");
break;
}

return 0;
}

Nie wiem dlaczego, ale po scanfie Od razu sie zamyka, chcialem podac a, jeżeli jest char. A jak podałem int i zamiast a podalem 5 wszystko działa. Kompiluje w xcode.

0
#include <stdio.h>
int main()
{
    int opcja;
    char a;
    printf("Wybierz opcje:\n 1-Szyfrowanie\n");
    scanf("%d",&opcja);
    switch(opcja)
    {
        case 1:
            printf("podaj litere ktora chcesz wypisac\n");
            scanf("%c",&a);
            printf("%c\n",a);
            break;
        default:
            printf("Zły wybór");
            break;
    }
            
    return 0;
    }
0

Problem bierze się stąd że po wprowadzeniu opcji bufor ma jeszcze znak nowej linii ale można go "zjeść" w scanf i nie przechowywać nigdzie używając takiej oto konstrukcji:

scanf("%d%*c", &opcja); // I tak samo musiałoby być dla pozostałych
// Jedyna zmianą jest %*c które mówi że należy "wziąć" 1 znak z bufora ale nie będzie on nigdzie przechowywany.

1 użytkowników online, w tym zalogowanych: 0, gości: 1