Problem char, switch case

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
Kopiuj
#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;
    }
atmal
  • Rejestracja:około 8 lat
  • Ostatnio:5 dni
  • Postów:913
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:

Kopiuj
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.

Failure of one test is a tragedy, failure of fifty is a statistic.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.