我有一个文本文件,我正在尝试使用 strtok 来分隔数据。文本文件如下所示。
SET,SDI,1,Test1
SET,SDI,2,Test 2
SET,SDI,3,Test Test 3
SET,SDI,4, Test 4
SET,SDI,5,Test 5
我的 strtok 代码一直有效,直到将空格引入第四个值(“Test x”)。尽管我特别将我的分隔字符定义为逗号(“,”)。这是输出。
printf("%s, %s, %s, %s\n", values[0], values[1], values[2], values[3]);
SET, SDI, 1, Test1
SET, SDI, 2, Test
SET, SDI, 3, Test
SET, SDI, 4, Test
SET, SDI, 5, Test
有没有办法让 strtok 将第 4 个值识别为一个值,而不是在空格后丢失数据?
这是我的 strtok 代码:
void openfile(char *file_name){
FILE *file;
char line[100];
char sep_char[] = ",";
char* token;
char var[20];
char values[10][20];
int i;
file = fopen(file_name, "r");
if (file != NULL) {
while (fgets(line, 100, file) != NULL) {
i = 0;
token = strtok(line, sep_char);
while (token != NULL) {
sscanf (token, "%s", &var);
strcpy(values[i++], var);
token = strtok(NULL, sep_char);
}
printf("%s, %s, %s, %s\n", values[0], values[1], values[2], values[3]);
}
fclose(file);
}
else {
printf("Error");
}
}
谢谢大家!