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

C语言CSV搜索功能仅显示部分结果的问题排查求助

排查C语言CSV搜索模块结果截断问题

针对你遇到的搜索Kuala-Lumpur仅返回最多12条结果的问题,结合展示功能正常的前提,从以下核心方向逐一排查:

  • 结果存储容器的容量限制
    检查搜索模块中存储匹配结果的数组、链表或缓冲区:

    • 是否存在#define MAX_RESULTS 12这类硬编码的容量上限,直接限制了可存储的结果数量;
    • 若使用动态分配内存,确认是否在匹配结果超过初始容量时没有执行扩容逻辑,导致后续匹配数据无法存入。
  • CSV遍历循环的提前终止
    查看遍历CSV行的循环逻辑,是否错误地将结果计数作为循环终止条件之一。比如类似以下错误代码:

    int match_count = 0;
    while (fgets(line, BUF_SIZE, csv_fp) != NULL && match_count < 12) {
        if (strstr(line, "Kuala-Lumpur") != NULL) {
            save_result(line);
            match_count++;
        }
    }
    

    这里的match_count < 12会让循环在找到12条匹配后直接停止,不再遍历剩余的CSV数据。

  • 输出逻辑的结果截断
    确认搜索结果的输出代码,是否仅遍历了前12条存储的结果。比如存储了所有匹配项,但输出时使用了for (int i = 0; i < 12; i++)的循环,导致后续结果未被打印。

  • 匹配逻辑的异常过滤
    检查关键词匹配的实现:

    • 是否对匹配位置做了限制(比如仅匹配行首/行尾),导致后续行的Kuala-Lumpur未被识别;
    • 若CSV包含非ASCII字符,确认strstr等字符串函数是否能正确处理编码,避免因编码不兼容导致的匹配失败。
  • 内存操作错误导致的结果丢失
    若使用链表存储结果,检查节点插入逻辑是否存在指针错误,导致后续节点无法正确链接,最终只能访问前12条;若使用数组存储,确认是否因单条结果的缓冲区溢出,意外修改了结果计数变量,导致计数被错误锁定为12。

优先排查循环终止条件和存储容器容量限制,这两类问题是此类结果截断故障的最常见诱因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:20:10