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

C语言写入Hello World至文件遇OJ报错,求解决方法

解决OJ输出比对不匹配问题:输出长度不符

你的问题核心是屏幕输出与OJ要求的示例完全不一致,在严格比对模式下,换行、空格、标点的细微差异都会导致判定失败。具体问题和修复方案如下:

问题分析

你当前代码的屏幕输出为:

Writing to the file was successful.
Closing the program

而OJ要求的示例输出是:

Writing to the file was successful. Closing the program.

两者的关键差异:

  • 你将输出拆分为两行(第一个printf带\n换行符),但示例要求是单行内容
  • 第二个输出末尾缺少必需的句号.
  • 输出末尾无换行符(多数OJ要求标准输出必须以换行结尾,否则也会触发"输出长度不符"的提示)

修复后的代码

#include<stdio.h>    
int main()
{    
    FILE *opening;
    opening = fopen("hello.usr","w");
    // 严谨性补充:判断文件是否成功打开
    if (opening == NULL) {
        perror("Failed to open file");
        return 1;
    }
    fprintf(opening,"Hello world!");     
    fclose(opening);
    // 合并输出为一行,补充句号并在末尾添加换行符
    printf("Writing to the file was successful. Closing the program.\n");
    return 0;
}

补充说明

如果OJ未要求处理文件打开失败的异常情况,可省略if (opening == NULL)的判断逻辑,但保留该判断会让代码更健壮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:30:58