c - 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: %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
当它采用名称并将其分成两部分(创建该列)时,问题似乎存在(尝试仅使用“,”作为分隔符,结果是相同的)有人知道如何帮助我吗?
解决方案
在while
你有value = strtok(NULL, ", ");
注意后面的空格,
。这意味着strtok
将尝试按,
或
(空格)中的任何一个进行拆分。
推荐阅读
- ruby-on-rails - Rails Redis 过期方法
- java - 覆盖的等号和 hashCode 不适用于自定义对象;
- selenium - 机器人框架 - 使用接受属性定位输入元素失败
- spring - 如何知道有多少个连接与 SpringBoot 网站连接?
- c++ - 使用 Xcode 和 Eclipse 在 Mac Mojave 上的着色器编译问题
- spring-data-redis - 如何在 Spring-Data-Redis 中为 RedisTemplate 使用连接事件?
- python - 如何在 Python 的 googleapis-common-protos 中使用 proto 文件?
- c++ - 使用指向 class::method 的指针数组调用方法
- azure - 让 Azure DevOps 审查 GitHub 拉取请求
- netlogo - 如何让特定补丁上的海龟做某事