2016-02-08 2 views
0

Когда я передаю один из символов, которые я указал, он возвращает 2, как если бы это был неправильный символ? Я сравниваю их неправильно?Сравнение символов в C?

int valid_character(char character) { 
    if (character == '*' || character == '%' || character == '#') { 
     return 1; 
    } else { 
     return 2; 
    } 
} 

редактировать:

Проблема заключается в том, где я вызываю функцию:

if (selection == 1) { 
    printf("Enter character, width and length: "); 
    scanf("%c %d %d", &c, &width, &length); 
    putchar(c); 
    int response = valid_character(c); 
    if (response == 1) { 
     draw_rectangle(width, length, c); 
    } else { 
     printf("%d", response); 
     printf("Invalid data provided."); 
    } 
} 

Когда я называю putchar(c); он печатает 1 хотя я проходящее в % Почему это?

+0

Почему он вернется 2? – Jenny

+0

Может быть что-то странное в вашем вызове valid_character ... post тоже? это отлично работает для меня ... – 22degrees

+0

Вы уверены, что проходите мимо одного из этих персонажей? Попробуйте вызвать его напрямую и передайте его '' * '', а затем напечатайте возвращаемое значение. Это должно быть «1». –

ответ

1

Вы не опубликовали всю функцию! у вас, вероятно, был еще один scanf до фрагмента кода, который оставил ожидающим \n во входном потоке.

Как вы узнали себя, вы можете пропустить этот \n и любое другое белое пространство, читая символ с:

scanf(" %c%d%d", &c, &width, &length); 
Смежные вопросы