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

Visual Studio 2017中fopen_s运行时错误求助

解决fopen_s打开文件时的断言失败问题

嘿,这个问题一眼就能看出来——你在fopen_s的文件打开模式里把字符集参数的拼写写错了!你写的是"r,css=UTF-8",但正确的应该是"r,ccs=UTF-8"。这里的ccs是**Character Set Specification(字符集规范)**的缩写,拼写错误直接导致了无效的模式,触发了CRT的断言检查。

修正后的完整代码

#include<stdio.h>
int main() {
    FILE* fp = NULL;
    // 先接收fopen_s的返回值,判断文件是否成功打开
    errno_t open_err = fopen_s(&fp, "input.txt", "r,ccs=UTF-8");
    
    if (open_err == 0 && fp != NULL) {
        // 文件成功打开后再执行关闭操作
        fclose(fp);
    } else {
        // 可以打印错误码帮助排查问题
        printf("文件打开失败,错误码:%d\n", open_err);
    }
    
    return 0;
}

几个额外的小建议

  • 永远不要忽略fopen_s的返回值:它返回errno_t类型的错误码,0代表打开成功,非0则是对应错误。如果跳过检查,当文件不存在或权限不足时fp会是NULL,直接调用fclose(fp)会引发未定义行为。
  • ccs是微软CRT的特有扩展,只有在Windows平台的VS环境下才有效,如果你需要跨平台代码,建议用其他方式处理字符编码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:49:08