vs code无法写入中文 到字符串中

vs code编译c语言,无法写入中文 到字符串中
使用vs code运行c语言时,使用gets()和scanf()都无法将中文写入自定义的字符串中,而其他编译器却可以

运行的代码:

#include 
int main()
{
    char a[20]={};
    gets(a);
    printf("中文:%s",a);
}

使用vs code:
输入输出

img

img

使用Dev-c++:

img

使用vs code似乎根本没有将中文字符写入进字符串中,但用Dev-c++却可以正常写入,是编译器的问题吗?有办法解决吗?

看看你的页面的编码格式是什么,是不是utf8

使用宽字符输出看看。

img

#include<wchar.h>
#include <stdio.h>
int main()
{
    wchar_t a[20];
    wscanf(L"%ls", a);
    wprintf(L"中文:%ls", a);
    return 0;
}


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/224377
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:在VS中编译C语言时scanf报错的处理办法
  • 除此之外, 这篇博客: C语言关于在vs中使用scanf不安全的问题中的 其次是如何解决scanf不安全的问题 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    解决这个问题有两个方法
    1.一个是打开vs 项目选项看到最后一个选项属性
    在这里插入图片描述

    将SDL检查禁用
    2.在文件.c中第一行插入下面这段代码;
    #define _CRT_SECURE_NO_WARNINGS

    在每个文件的开头都插入显然略显麻烦,所以还有一个一劳永逸的方法,下面我来介绍一下。首先找到你的vs安装路径找到这个文件newc++file.c将他复制到桌面上然后在将上面一段代码复制进去,再将这个文件复制回原来的路径底下。替换原来的文件即可。*那么这里为什么要这莫做呢,因为当你在原来路径直接更改newc++file.c会提示你没有权限更改。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^