VSC语言scanf输入出现C6270和C6273错误

img


怎么都不对,真的不知道哪里有问题,真的搞不懂,谁能解答一下,感激不尽

这样改,供参考:

img

为啥取地址

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇文章讲的很详细,请看:vs2019 C scanf输入出现错误解决
  • 除此之外, 这篇博客: 【C语言】一次性解决visual studio中scanf函数不安全报错问题中的 一、为什么选择VS2013/2019/2022编译器 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    现在市面上流行的C语言编译器并不少,但是我比较推荐大家使用visual studio 这款编译器,具体有以下几方面的原因:

    1、其他编译器的缺点:
    (1)CodeBlocks 与 VSCode:不主流,且需要配置环境,许多初学者在配置环境时就放弃了,对新手不友好。
    (2)Dev C++:此软件在10多年前就已经停止更新了,用此编译器打出来的代码不美观,不利于我们形成良好的代码风格。
    (3)VC6.0:此编译器是98年的编译器,过于老旧,兼容性差。

    2、visual studio 的优点:
    (1)VS2019是集成开发环境,对新手友好,不要配置环境,可以直接使用。
    (2)VS2019是主流的集成开发环境,企业中使用率比较高。
    (3)VS2019的缺点就是:大,占用空间大,不过这个不是很大的问题。

    3、所以综合考虑,VS编译器是我们学习C语言及其他语言的较好选择。

  • 以下回答来自chatgpt:

    根据参考资料,我分析出可能的原因和解决方案如下:

    可能的原因: 1. 输入格式有误,导致变量类型不一致等问题; 2. 输入时未处理好缓冲区和回车符导致C6270错误; 3. 输入时未注意格式字符串中存在普通字符的情况导致C6273错误。

    解决方案: 1. 确认输入格式是否正确,变量类型是否匹配,尤其是要注意是否有多余的空格、换行符等; 2. 在使用scanf输入数字时,每次输入后加上一个getchar(),可以清空输入缓冲区和回车符,防止C6270错误的发生; 3. 注意格式字符串中是否存在普通字符,如有需要在输入时正确地输入对应普通字符,避免C6273错误。

    示例代码:

    // 解决C6270错误
    int num;
    if(scanf("%d", &num) == 1){
        getchar(); // 清除缓冲区,避免回车符对下一次输入的干扰
    }else{
        // 报错处理
    }
    
    // 解决C6273错误
    char str[100];
    if(scanf("%[^\n]", str) == 1){ // %[^\n]表示读取除了换行符以外的所有字符
        getchar(); // 清除回车符
    }else{
        // 报错处理
    }
    

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