首页 > 解决方案 > STRTOK 像另一列一样获取中间名

问题描述

我想有人帮我解决我的问题:

代码:

void getStructValues(FILE* fp, studente stud[]) {

    char buffer[1024];
    int row = 0, col = 0, i = 0;

    while(fgets(buffer, 1024, fp)) {
        col = 0;
        row++;

        char* value = strtok(buffer, ",");

        while(value) {
            switch(col) {
                case 0:
                    printf("First Column: %s\n", value);
                    strcpy(stud[i].last_name, value);
                    break;
                case 1:
                    printf("Second Column: %s\n", value);
                    strcpy(stud[i].name, value);
                    break;
                case 2:
                    printf("Third Column: %s\n", value);
                    //strcpy(stud[i].gender, value);
                    break;
                case 3:
                    printf("Fourth Column: %s\n", value);
                    //strcpy(stud[i].province, value);
                    break;
                case 4:
                    printf("Fifth Column: %s\n", value);
                    //value = atoi(value);
                    //stud[i].n_exam = value;
                    break;
                case 5:
                    printf("Sixth Column: %s\n", value);
                    value = atoi(value);
                    stud[i].average = (int) value;
                    break;
            }
            value = strtok(NULL, ", ");
            col++;
        }
        i++;
    }
}

CSV 文件:

BARLET,ELISABET GIOVA,F,NO,14,18

预期输出:

First Column: BARLET
Second Column: ELISABT GIOVA
Third Column: F
Foruth Column: NO
Fifth Column: 14
Sixth COlumn: 18

MTy 输出:

First Column: BARLET
Second Column: ELISABT 
Third Column: GIOVA
Foruth Column: F
Fifth Column: NO
Sixth COlumn: 14

当它采用名称并将其分成两部分(创建该列)时,问题似乎存在(尝试仅使用“,”作为分隔符,结果是相同的)有人知道如何帮助我吗?

标签: ccsvparsingstrtok

解决方案


while你有value = strtok(NULL, ", ");

注意后面的空格,。这意味着strtok将尝试按, (空格)中的任何一个进行拆分。


推荐阅读