Почему функция scanf_s не принимает данные правильно?

Когда я ввожу a, выход not a, Условие верно, так почему выход not a?. Когда я использую getchar вместо scanf_sработает нормально. В чем проблема?

char op;
scanf_s("%c", &op);
if ( op == 'a' )
    printf("the character is a");
else
    printf("not a");

3 ответа

Пытаться scanf() вместо scanf_s(),

Тендерный %c (еще два таких исключения %s, %[) требуется третий аргумент

scanf_s("%c", &op, 1);   // 1 to read single character

Третий аргумент должен быть sizeof тип. scanf_s гарантированно будет доступен, только если __STDC_LIB_EXT1__ определяется реализацией, и если пользователь определяет __STDC_WANT_LIB_EXT1__ к целочисленной константе 1 перед включением <stdio.h>,

#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>

int main()
{
char op;
scanf_s("%c", &op, sizeof(op));
if ( op == 'a' )
    printf("the character is a");
else
    printf("not a");
    return 0;
}
Другие вопросы по тегам