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

Turbo C环境下C程序统计文件行列数后无法正常读取数据问题求助

核心问题定位

问题与文件指针状态、文件流位置直接相关:

  • 主函数为了统计文件的行数、列数,循环调用getc(file)将文件从头到尾完整遍历读取,循环结束时文件流的位置指针已经停在文件末尾(EOF位置)。
  • 代码没有对文件指针的位置做重置,直接把处于末尾位置的FILE结构体指针传给col_1/col_2处理函数,函数内部的fscanf读取操作会直接命中EOF,无法获取文件内的有效数据。
  • 代码没有校验fscanf的返回值,因此程序运行过程中不会抛出明确报错,仅表现为读取不到有效内容。
直接修复操作

在完成行列统计、调用数据读取函数之前,添加一行代码将文件指针重置回文件起始位置:

rewind(file);

该函数会直接将当前打开的文件流的位置指针移动到文件开头,无需重新调用fopen打开文件。

附加注意事项
  • 现有行列统计逻辑存在边界bug:如果文件最后一行没有附带末尾换行符,统计得到的row值会比实际文件行数少1,会导致后续分配内存、循环读取时漏读最后一行数据,需要在统计逻辑中补充边界判断修正计数。
  • 现有列数统计逻辑以第一行的逗号作为列数判断依据,但读取函数中的fscanf是按空格分隔匹配整数;如果实际文件内是逗号分隔的双列数据,需要调整fscanf的匹配格式,兼容逗号分隔的场景,否则即使重置了文件指针,也无法正确读取数值。
  • 通过malloc动态分配的结构体数组内存,在使用完成后需要调用free释放,避免内存泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 07:27:00