You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何VSCode对C语言代码char filename[] = scanf("%s", filename);报错?

你的C代码报错原因分析

核心错误点:

  • 类型不匹配+初始化方式错误:char filename[] = scanf("%s", filename); 里,scanf的返回值是int类型(表示成功读取的输入项数量),但你试图用这个int值去初始化char类型的数组,完全不符合C语言的类型规则,这是编译器报错的直接原因。
  • 逻辑顺序错误:在定义filename数组的同时就把它传给scanf,此时数组还未完成初始化,没有分配好可用的存储空间,直接使用会触发未定义行为,逻辑上完全不成立。

正确写法示例:

先定义足够大小的数组,再调用scanf接收输入(建议限制输入长度,避免缓冲区溢出):

#include <stdio.h>

int main() {
    // 定义256字节的数组,满足大多数文件名长度需求
    char filename[256];
    // %255s 限制最多读取255个字符,预留1个位置存字符串结束符'\0'
    scanf("%255s", filename);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:07:03