gpt4 book ai didi

c - 在 C 中使用字符串数组时出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:36 24 4
gpt4 key购买 nike

我是 C 语言的新手,所有关于字符串的东西都很令人困惑。

这部分程序的目标是将一个字符串拆分成多个字符串,这样我就可以分别处理单词。

 int SplitString(char * str, char * pieces[]) {
int i=1;

if ((pieces[0]=strtok(str," \n\t"))==NULL){
return 0;
}

while ((pieces[i]=strtok(str," \n\t"))!=NULL) {
i++;
}

return i;
}

/*****************************************************************************/
void CommandPros(char *str) {
char *pieces[100];
int numW = 0;

for (int i = 0; i < 100; i++) {
pieces[i] = (char *) malloc (100*sizeof(char));
}

numW = SplitString(str, pieces);

}

/*****************************************************************************/
void ReadEnter(char * str) {
fgets(str, 100, stdin);
}

/*****************************************************************************/
int main(){
int fin = 0;
char * strCommand;
strCommand = (char *) malloc (100*sizeof(char));

while (!fin) {
ReadEnter(strCommand);
CommandPros(strCommand);
}

return 0;
}

但是当我执行这个程序时,这条信息出现了:

段错误:11

最佳答案

您应该使用 NULL 作为从第二次调用 strtok

开始的第一个参数

替换
while ((pieces[i]=strtok(str,"\n\t"))!=NULL)


while ((pieces[i]=strtok(NULL,"\n\t"))!=NULL)

关于c - 在 C 中使用字符串数组时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57996265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com