STRTOK像另一列一样获取中间名
我希望有人帮助我解决我的问题:
- 当我去解析 csv 文件时,有两个名字中间名的人把他们算作两列
代码:
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: %sn", value);
strcpy(stud[i].last_name, value);
break;
case 1:
printf("Second Column: %sn", value);
strcpy(stud[i].name, value);
break;
case 2:
printf("Third Column: %sn", value);
//strcpy(stud[i].gender, value);
break;
case 3:
printf("Fourth Column: %sn", value);
//strcpy(stud[i].province, value);
break;
case 4:
printf("Fifth Column: %sn", value);
//value = atoi(value);
//stud[i].n_exam = value;
break;
case 5:
printf("Sixth Column: %sn", 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
当它采用名称并将其分成两部分(创建该列)(尝试仅使用“,”作为分隔符,结果相同)时,问题似乎存在,有人知道如何帮助我吗?
回答
在while你有value = strtok(NULL, ", ");
注意后面的空格,。这意味着strtok将尝试用,或 (空格)中的任何一个进行拆分。