gpt4 book ai didi

c - 函数执行但给出段错误,C

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

我编写了一个 C 函数,将 char* 作为输入并使用空格将其拆分,并将标记再次存储在字符串数组中。

我的代码可以正常执行,但在完成执行之前,它给出了一个错误,指出段错误。谁能告诉我哪里出了问题。

void parseCommand(char *msg)
{
char buffer[25][30];
char *tok;
char *msgCopy;
//strcpy(msgCopy,msg);
msgCopy =msg;
tok = strtok(msgCopy," ");
strcpy(buffer[0],tok);
int i=1;
while(tok != NULL ){

tok = strtok (NULL, " ");
strcpy(buffer[i],tok); //me line eke error eka
printf("%d : %s\n",i,buffer[i]);
i++;
}
}

最佳答案

strtok 最终返回 NULL 以表示没有更多的标记,您调用 strcpy(buffer[i],tok); 这尝试从 NULL 读取。这会导致段错误。

你可以通过将 strtok 移动到循环条件中来解决它:

while((tok = strtok (NULL, " ")) != NULL ){
strcpy...

或使用 break 语句转义循环:

while(1){
tok = strtok (NULL, " ");
if(tok == NULL) break;
strcpy...

关于c - 函数执行但给出段错误,C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15933318/

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