如何让scanf_s()在我的C程序中正常工作?

时间:2017-11-18 23:41:44

标签: c

出于某种原因,我的C程序在输出“输入字母(D / E / F)后立即关闭:”

我希望能够在letters []数组中存储3个字符,以便稍后打印出来。

我使用Visual Studio 2017,程序没有错误。它似乎只是在printf("Enter a letter (D/E/F): ");之后跳过所有内容。

我认为问题与scanf_s有关,但我不确切知道问题是什么或如何修复它。这是我的计划:

#include <stdio.h>

int main(void)
{
    char letters[3];
    char ch;
    printf("Enter a letter (A/B/C): ");
    scanf_s(" %c", &ch);
    letters[0] = ch;
    printf("Enter a letter (D/E/F): ");
    scanf_s(" %c", &ch);
    letters[1] = ch;
    printf("Enter a letter (G/H/I): ");
    scanf_s(" %c", &ch);
    letters[2] = ch;

    printf("You entered %c, %c, and %c.", letters[0], letters[1], letters[2]);

    getchar(); getchar(); // PAUSE
    return 0;
}

请帮忙。

1 个答案:

答案 0 :(得分:0)

scanf_s(" %c", &ch);更改为scanf_s(" %c", &ch, 1);,现在该程序正常运作!

感谢天气风向标,一些程序员,Kal Karaman,再次风向标,以及这个网页:http://faculty.edcc.edu/paul.bladek/CS131/scanf_s.htm