首页 > 解决方案 > 在c中的文本文件中过滤查询

问题描述

(C LANGUAGE)我在一个文本文件中有以下数据,想要过滤特定年龄、收入超过 x 工资且低于 y 年龄的人。

假设第一列是年龄,最后一列是薪水,例如

39, State-gov, 77516, Bachelors, 13, Never-married, Adm-clerical, Not-in-family, White, Male, 2174, 0, 40, United-States, <=50K
50, Self-emp-not-inc, 83311, Bachelors, 13, Married-civ-spouse, Exec-managerial, Husband, White, Male, 0, 0, 13, United-States, <=50K

标签: cfilter

解决方案


看起来输入文件实际上是 CSV 格式。我建议参考 Read .csv file in C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

const char* getfield(char* line, int num)
{
    const char* tok;
    for (tok = strtok(line, ",");
            tok && *tok;
            tok = strtok(NULL, ";\n"))
    {
        if (!--num)
            return tok;
    }
    return NULL;
}

int main()
{
    FILE* stream = fopen("input", "r");

    char line[1024];
    while (fgets(line, 1024, stream))
    {
        char* tmp = strdup(line);
        printf("Field 3 would be %s\n", getfield(tmp, 3));
        // NOTE strtok clobbers tmp
        free(tmp);
    }
}

您还可以查找以下CSV parser库: https ://github.com/semitrivial/csv_parser


推荐阅读