c - 在 C 中解析逗号分隔的文件

标签 c parsing

我正在尝试解析一个 C 语言文件,该文件由一组数字(每行一个)组成。每组之间用逗号分隔。由于某种原因,我得到了不正确的输出。

输入示例:1,2,4,8,55,777 输出:一堆看起来是内存地址的东西。当我打印出字符串时,它读取的不是 55 或 777(或任何超过两位数的数字)。

int * parseFile(char *input, int *set, int line)
{
    char buf[BUF_SIZE];
    char *token = (char *) malloc(10 * sizeof(char));
    int i;

    FILE *f = fopen(input, "r");

    for (i = 1; i < line; i++)
        fgets(buf, BUF_SIZE, f);

    memset(buf, 0, BUF_SIZE); // Clear the buffer.
    i = 0;

    if (fgets(buf, BUF_SIZE, f) != NULL) {
        token = strtok(buf, ",");
        set[i] = atoi(token);
        i++;

       while (set[i] != 0) {
            printf("%d\n", set[i]);
            set[i] = atoi(token);
            i++;

            token = strtok(NULL, ",");
        }
    }

    fclose(f);

    return set;
}

最佳答案

您可以使用fscanf()

在循环中使用以下fscanf(),直到到达文件末尾:

int a,b,c,d,e,x;
while (fscanf(f, " %d , %d , %d , %d, %d , %d", &a, &b, &c, &d, &e, &x) != EOF) {....}

关于c - 在 C 中解析逗号分隔的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14682266/

相关文章:

parsing - 使解析器忽略所有多余的空格

parsing - Trifecta 中的自定义状态

c++ - 如何在 C++ 中进行字符串解析?

Delphi XE IDE代码解析器错误: "Expected ' >' but ' .' found."

C 类型用于保存不同类型的函数指针

python - 这个 typedef 在 cpython/Include/object.h 中实现了什么

c - 如何在不禁用 clang 的情况下消除未使用的命令行参数错误?

c++ - 混合编程 : Calling FORTRAN from C++

ios - 如何从 JSON 加载并解析到 iOS 5 上的 tableView

c - 我是否正确释放内存?