scanf_s不写字符值

时间:2016-08-25 23:15:17

标签: variables char parameter-passing scanf

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

1 个答案:

答案 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类型的绑定。