C++ scanf 错误(保存时访问冲突)

C++ scanf error (Access violation while saving)

我对这几行代码有疑问。它在 Visual Studio.

以外的任何其他编译器中都可以正常工作
int i = 0; 
    char* func[20];
    char com[15];
    while (true)
    {
        scanf_s("%s", com);
        //printf("%s\n", com);
        if (com == "ACTUAL[=10=]")
            cout << "TE\n";
        i++;
    }  

我尝试将单词扫描到字符变量(我必须使用字符,不能在本练习中使用字符串)。我收到此错误:(用英语表示:保存到位置时访问冲突)

但在其他编译器中一切正常。我很生气,因为我正在查看有关将字符串扫描为 char 的帖子,它看起来与我的代码非常相似。 (对不起,如果我应该标记 C 而不是 C++)

当您使用scanf_s读取%s格式说明符时,您还必须传递缓冲区的长度。这是 scanfscanf_s 之间的主要区别。

scanf_s("%s", com, (unsigned)_countof(com));

如果您甚至想使用 scanf 系列功能,那就是这样。我更喜欢 fgets 因为先读取输入然后再解析它更简单(使用 sscanf 或类似的)