【发布时间】:2021-04-08 04:51:33
【问题描述】:
我正在尝试构建一个函数,它接收两个数字字符串,如 char strArr[2] = {"1, 2, 3, 4, 5", "4, 5, 6, 7, 8"} 并解析它们。在编写我的函数时,我遇到了段错误,我已经确定了段错误的确切行,并省略了该行之后的所有内容。
有问题的行是一个strtok 调用,它接收第一个字符串和一个要分割的分隔符。有谁知道怎么回事?
有问题的代码:
void FindIntersection(char * strArr[]) {
int nel1 = 1;
int nel2 = 1;
int i = 0;
/*Determine the number of elements in strArr[0] */
while(strArr[0][i] != '\0'){
if(strArr[0][i] == ','){
nel1++;
}
i++;
}
i = 0;
/* Determine the number of elements in strArr[1] */
while(strArr[1][i] != '\0'){
if(strArr[1][i] == ','){
nel2++;
}
i++;
}
int intArr1[nel1];
int intArr2[nel2];
/* parse the elements from each char array and place them in int arrays */
char delim[2] = ", ";
char *token;
token = strtok(strArr[0], delim);
【问题讨论】:
-
char strArr[2] = {"1, 2, 3, 4, 5", "4, 5, 6, 7, 8"}这不是您在数组中存储多个字符串的方式,请在帖子关闭之前提供最小可重复的代码版本 -
strtok期望得到一个包含分隔符的字符串。由于缺少 nul 终止符,您没有提供有效的 C 字符串:char delim[2] = ", ";
标签: c parsing segmentation-fault token strtok