【发布时间】:2014-05-13 19:10:22
【问题描述】:
我有这么一小段代码:
int* index=(int*)(sizeof(int)*NB);
while(i < NB){
printf("i=%d, pch=%s\n", i, pch);
if (strcmp(pch, SPLIT_PATTERN))
i++;
else
index[k++]=i-1;
pch = strtok(NULL, "-");
}
并使用此输入:
file_content EN7FSQcL63NRUQHSBBRDtVUkobmStQbKdL2cR7gpoC5-X2rS1Cu2RCYaw0TiGdYUUtYuCTB5WlE9Y3SJNuiimQC-ajksldnalmcjlakjflksjoi-
NB = 2
SPLIT_PATTERN = ajksldnalmcjlakjflksjoi (the last part in file_content)
C 给我分段错误错误。
i=0, pch=EN7FSQcL63NRUQHSBBRDtVUkobmStQbKdL2cR7gpoC5
i=1, pch=X2rS1Cu2RCYaw0TiGdYUUtYuCTB5WlE9Y3SJNuiimQC
Segmentation fault (core dumped)
请告诉我我哪里做错了?
【问题讨论】:
-
呃???
int* index=(int*)(sizeof(int)*NB);你忘了malloc()吗? -
是的,你说得对。谢谢
-
k的值是多少?
-
您必须在第一次调用
strtok时提供要拆分的字符串。如果您继续拆分相同的字符串,请在后续调用中传递NULL或传递新字符串以开始拆分。 -
第一次打电话给
strtok在哪里?
标签: c segmentation-fault strtok