You need to enable JavaScript to run this app. C语言使用scanf()获取用户输入时报“拒绝访问”错误(MinGW已配置PATH)
优惠活动
大模型
产品
解决方案
定价
更多

C语言使用scanf()获取用户输入时报“拒绝访问”错误(MinGW已配置PATH)

MinGW 下调用scanf运行提示"access is denied"的解决步骤

先理清核心逻辑:能正常跑Hello World,说明你MinGW的编译链路、标准输出权限完全没问题。报access denied是因为scanf在申请控制台输入读取权限时被拦截了,按下面的步骤挨个排查就行,基本能覆盖99%的同类场景:

  • 第一步:先确认是IDE拦截还是系统层面拦截
    绝大多数同类报错,都是因为你用的代码编辑器/IDE(VS Code、Dev-C++、各类轻量编译插件的内置运行器)没拿到控制台的stdin访问权限,尤其是Windows Defender、第三方杀毒软件的“受控文件夹访问”功能,会主动拦截非系统原生终端启动的、尝试读取控制台输入的进程。
    验证方式:完全关掉IDE,打开系统自带的cmd,切到你代码所在的文件夹,手动执行编译+运行命令:

    gcc your_test_code.c -o test.exe
    ./test.exe
    

    如果这一步能正常输入数字、输出计算结果,说明问题全在IDE的运行配置上:

    • 关掉IDE内置的“弹出内置控制台运行程序”选项,改成用系统外置终端启动程序
    • 把存代码的文件夹、编译生成的exe路径,加到杀毒软件、Windows安全中心的白名单里
  • 第二步:排查PATH环境变量的路径冲突
    很多人配置MinGW环境时,PATH列表里会残留其他版本C编译器的路径(比如旧版TDM-GCC、MSVC的运行时路径、Python自带的同名C运行时库路径),导致程序实际加载了非预期的动态链接库,触发系统的访问拦截。
    验证方式:在cmd里执行两个命令检查配置:

    where gcc
    gcc -v
    

    确认返回的gcc路径全部指向你安装的MinGW的bin目录,输出版本和你实际装的MinGW版本一致。如果有其他路径排在MinGW路径前面,就把MinGW的bin目录挪到PATH列表的最顶端,注意改完环境变量必须把所有终端、IDE全重启,配置才会生效。

  • 第三步:排查MinGW版本兼容问题
    部分2019年之前出的老旧32位版本MinGW,在Windows 10 1909之后的系统上,会因为控制台编码兼容问题,调用scanf时触发系统的权限拦截。这种情况直接替换成最新的64位版本MinGW,重新配PATH路径就能解决。
    快速验证方法:把代码里的scanf("%d", &num)临时换成getchar(),如果测试同样报access denied,说明问题和scanf的语法逻辑没关系,就是运行时环境的配置问题。


内容的提问来源于stack exchange,提问作者Ranuja Perera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 02:15:08