scanf_s没有将字符值写入变量。如果我设置断点来读取user_input的值,user_input将具有值0而不是字符值。如果我将user_input声明为整数,则scanf_s将正确传递int值。有人能告诉我为什么或如何在使用写入char值时使用scanf_s错误?我正在使用Visual Studio 2013
#include <stdio.h>
int main(void)
{
char row, space, letter, user_input;
printf("Enter a uppercase letter:");
scanf_s(" %c", &user_input);
for (row = 'A'; user_input >= row; ++row){
for (space = user_input - row; space >= 1; --space){
printf(" ");
}
for (letter = 'A'; row >= letter; letter++){
printf("%c", letter);
}
for (letter = row -1; letter >= 'A'; letter--) {
printf("%c", letter);
}
printf("\n");
}
getchar();
getchar();
return 0;
}
答案 0 :(得分:0)
scanf_s函数需要%c和%s的addtion参数。例如:
char user_input;
printf("Enter a uppercase letter:");
scanf_s(" %c", &user_input, 1);
printf("Input letter:%c\n", user_input);
您可以看到user_input。 注意:scanf_s可以检查char或chars类型的绑定。