为什么scanf_s函数没有正确输入?

时间:2015-10-03 15:00:00

标签: c scanf getchar c11 tr24731

当我输入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 个答案:

答案 0 :(得分:2)

尝试使用scanf()代替scanf_s()

答案 1 :(得分:2)

说明符%c(另外两个例外%s%[)需要第三个参数大小 -

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

答案 2 :(得分:0)

第三个参数应为sizeof类型。如果实现定义了scanf_s,并且用户在包含__STDC_LIB_EXT1__之前将__STDC_WANT_LIB_EXT1__定义为整数常量1,则只保证<stdio.h>可用。{ / p>

#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;
}