2014-01-19 5 views
0

У меня проблема действительно ПРОСТО =. =. Я хочу, чтобы сканировать символ из консоли, а вот мой код:чтение символов с консоли

char odp; 
printf("Czy uwazasz ze z Twoimi oczami jest coś nie w porzadku?\n"); 
    scanf("%c",&odp); 
    printf("ZNAK ZCZYRTANY: %c\n",odp); 

    while(odp != 't' || odp != 'n'){ 
     printf("zle dane wprowadz jeszcze raz\n"); 
     scanf("%c",&odp); 
    } 

    if(odp == 'n') /* prawa galaz */ //JAKO "NIE" POZIOM 1 
    { 
     printf("Kontrola u okulisty jest potrzebna czesciej niz myslisz\n"); 
     system("PAUSE"); 
     return 0; 
    } 

Проблема заключается в том, что, когда я печатаю этот символ он показывает мне «т» или «п», но он не хочет, чтобы мне получить Повсеместно. Что здесь не так?

+2

изменения 'в то время как (ODP! = 'Т' || ODP! = 'П') {' 'в то время как (ODP! = 'Т' && ODP! = 'П') {' – marcinj

+0

Спасибо для быстрого ответа. Моя вина. Еще раз спасибо. – Darek

+0

Надеюсь, вы не будете возражать против небольшого совета: не используйте 'system (" pause ")'. – edmz

ответ

2

Попробуйте это. У вас было две проблемы

  • один был с условием if. это должно быть odp! = 't' & & odp! = 'n'
  • scanf оставлял '\ n' на stdin. Это привело к сбою второго сканированияf(). Итак, вы можете сбросить этот '\ n', используя другой фиктивный символ.

попробовать это

char odp; 
char newline; 
printf("Czy uwazasz ze z Twoimi oczami jest coś nie w porzadku?\n"); 
scanf("%c%c",&odp,&newline); 
printf("ZNAK ZCZYRTANY: %c\n",odp); 

while(odp != 't' && odp != 'n'){ 
    printf("zle dane wprowadz jeszcze raz\n"); 
    scanf("%c%c",&odp,&newline); 
} 

if(odp == 'n') /* prawa galaz */ //JAKO "NIE" POZIOM 1 
{ 
    printf("Kontrola u okulisty jest potrzebna czesciej niz myslisz\n"); 
    system("sleep 10"); 
    return 0; 
} 
+0

Благодарим вас и за ответ. Хороший трюк с \ n символом;] – Darek

+0

вы можете принять ответ, если он помог решить вашу проблему –

0

принять Пожалуйста, посмотрите еще раз на это. Знаете ли вы, почему он показывает мне два или более раза, что printf во время цикла, даже если я введу правильный ответ (правая клавиша)?

printf("Czy uwazasz ze z Twoimi oczami jest coś nie w porzadku?\n"); 
    scanf("%c",&odp); 

while(odp != 'T' && odp != 'N'){ 
    printf("zle dane wprowadz jeszcze raz"); 
    scanf("%c",&odp); 
} 

if(odp == 'N') /* prawa galaz */ //JAKO "NIE" POZIOM 1 
{ 
    printf("Kontrola u okulisty jest potrzebna czesciej niz myslisz\n"); 
    system("PAUSE"); 
    return 0; 
} 
else if(odp == 'T') //LEWA GALAZ POZIOM 1 
{ 
    printf("Czy bola Cie oczy?\n"); 
    scanf("%c",&odp); 

    while(odp != 'T' && odp != 'N'){ 
     printf("zle dane wprowadz jeszcze raz"); 
     scanf("%c",&odp); 
    } 

    if(odp == 'T') 
    { 

     printf("Kontrolujesz tonus - cisnienie galkowe?\n"); 
     scanf("%c",&odp); 
    } 
} 
+0

Я объяснил это в своем ответе выше. Проблема заключается в scanf(). Пожалуйста, измените вызов scanf() на scanf («% c% c», & odp, & newline); как объяснялось выше. –

+0

Хорошо. Извините за это и еще раз спасибо за помощь – Darek

Смежные вопросы