当前位置:  开发笔记 > 编程语言 > 正文

解析CSV文本行时出错

如何解决《解析CSV文本行时出错》经验,为你挑选了1个好方法。

我无法在C中解析CSV文件.我需要使用该文件中的数据来提交结构.这是我结构的相关部分:

typedef struct Info {
    /* Some strings, integers, etc. */
    char correct; /* This is the value I can't set */
    short int status;
} t_info;

我文件中的一行看起来像这个xxxxxx; xxxxxxx; xxxxxxx; D; 254(D是我的问题,见下文).

    char line[1024]; /* Buffer */
    t_info info;

    fgets(line, sizeof(line), fp);

    strcpy(info.xxxxxx, getLine(line, 1)); /* Works */
    strcpy(info.xxxxxx, getLine(line, 2)); /* Works */
    strcpy(info.xxxxxx, getLine(line, 3)); /* Works */
    strcpy(info.correct, getLine(line, 4)); /* Crashs! */

getLine()函数取自这篇文章:

const char *getLine(char *line, int num)
{
    const char *tok, *tmp = strdup(line);

    for (tok = strtok(tmp, ";"); tok && *tok; tok = strtok(NULL, ";\n"))
    {
        if (!--num)
            return tok;
    }

    return NULL;
}

我的问题是什么?



1> chux - Reins..:

无法保存到char使用中strcpy().

typedef struct Info {
    char correct; /* This is the value I can't set */
} t_info;

strcpy(info.correct, getLine(line, 4)); /* Crashs! */

使用

info.correct = *getLine(line, 4);

您的编译器应该已经警告过这个.查看编译器设置.


@LuMa不清楚是"你的解决方案也不起作用".并且"某种程度上strcpy-operation失败"因为答案应该使用`info.correct =*getLine(line,4);`**而不是**的strcpy(info.correct,getLine(line,4));
推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有