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
相关产品推荐
相关产品推荐

