2015-10-25 9 views
-2

Я прошу пользователя ввести письмо, и каждое письмо делает что-то другое. Если они вводят что-либо еще, он печатает заявление else в конце. Проблема в том, что оператор else печатается независимо от того, что я ввожу, и он дважды печатает «Введите письмо:». Я искал google и переполнение стека, и я не знаю, слеп ли я или что, но я не могу найти ответ. Пожалуйста помоги.Как исправить это в C?

while(false){ //I have a method here that returns true or false 
    printf("Enter a letter: "); 
    char letter; 
    scanf("%c", &letter); 

    if(letter == 'a'){ //position left 
     //do some code 
    }else if(letter == 'd'){ //position right 
     //do some code 
    }else if(letter == 'w'){ //value up 
     //do some code 
    }else if(letter == 'x'){ //value down 
     //do some code 
    }else{ 
     printf("NEW MOVEMENT: Enter a valid command by keyword:\n"); 
     printf("Valid commands: a d w x\n"); 
    } 
} 
+1

вы можете показать, что 'false' есть .. КСТАТИ изменить' зсапЕ() 'в' зсапЕ ("% С", и буквы); ', с пробелами до'% c' – Haris

+0

Почему 'в то время как (false) '? Цикл не будет работать. –

+0

in while (false) У меня есть (isPalindrome()) метод, который возвращает true или false. – Anonymous

ответ

2

Я думаю, ваша проблема слева из символа новой строки \n после scanf()

Измените scanf() код

scanf(" %c", &letter); 

Пространство перед %c должны бежать налево из новой строки \n характер.

0

если вы пишете while(false), тело цикла не будет executed.you нужно писать while(true) instead.Also, когда вы используете scanf вы должны следить за символом «\ п», так как это будет иметь эффект на выходе. Добавленное пространство для инструкции scanf до% c должно иметь к этому отношение.

while(true){ 
    printf("Enter a letter: "); 
    char letter; 
    scanf(" %c", &letter); 

    if(letter == 'a'){ //position left 
     //do some code 
    }else if(letter == 'd'){ //position right 
     //do some code 
    }else if(letter == 'w'){ //value up 
     //do some code 
    }else if(letter == 'x'){ //value down 
     //do some code 
    }else{ 
     printf("NEW MOVEMENT: Enter a valid command by keyword:\n"); 
     printf("Valid commands: a d w x\n"); 
    } 
}