【发布时间】:2020-09-17 15:01:52
【问题描述】:
在下面的代码中,我尝试拆分字符串以从字符串中获取以“,”分隔的名称。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *st = "Addison,Jayden,Sofia,Michael,Andrew,Lily,Benjamin";
char *name[7];
char *separate = ",";
char *token = strtok(st, separate);
int i = 0;
while(token != NULL)
{
strcpy(name[i], token);
token = strtok(NULL, ",");
i++;
}
for (int j = 0; j < 7; j++)
{
printf("%s\n", name[j]);
}
}
但是,当我尝试运行代码时遇到了分段错误。我尝试调试它,似乎这个特定的代码行是错误的来源:
char *token = strtok(st, separate);
谁能告诉我我做错了什么?
【问题讨论】:
-
strcpy(name[i], token);你还没有初始化数组中的指针。简单的解决方案:char name[7][128];否则可以使用malloc()。 -
哦,对了...如果我使用 char *name,我必须在使用前使用 malloc() 为其分配内存。谢谢。
标签: c undefined-behavior c-strings strtok string-literals