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

C语言文件及行内容逆序打印仅显示首个行号问题该如何修复?

问题修复方案

核心问题原因

  • 自定义的write函数和POSIX标准库中的系统调用write重名,触发未定义行为,导致函数执行逻辑异常,这是后续行号丢失的根本原因
  • 行号打印的格式串多了前缀空格,和预期输出格式不符

具体修改点

1. 重命名自定义write函数避免命名冲突

修改reverse实现代码中的函数声明、定义和调用处:

  • 把函数声明void write( char **lines, int nLines, char *name);改为void write_reversed( char **lines, int nLines, char *name);
  • 把reverse函数中调用write( lines, nLines, name);改为write_reversed( lines, nLines, name);
  • 把函数实现的void write( char **lines, int nLines, char *name)改为void write_reversed( char **lines, int nLines, char *name)

2. 调整行号打印格式

把write_reversed(原write)函数中的fprintf( stdout, " %d " , i+1 );改为fprintf( stdout, "%d " , i+1 );,去掉行号前多余的空格,匹配预期输出格式。

验证效果

修改后运行程序输入测试用例,输出结果完全符合预期:

3 avlizs
2 kcarab
1 amla

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:15:05