gpt4 book ai didi

c - 分解字符串并将其存储在数组中

转载 作者:太空狗 更新时间:2023-10-29 17:00:45 25 4
gpt4 key购买 nike

我想分解一个句子并将每个字符串存储在一个数组中。这是我的代码:

#include <stdio.h>
#include <string.h>

int main(void)
{
int i = 0;
char* strArray[40];
char* writablestring= "The C Programming Language";
char *token = strtok(writablestring, " ");


while(token != NULL)
{
strcpy(strArray[i], token);
printf("[%s]\n", token);
token = strtok(NULL, " ");
i++;
}
return 0;
}

它一直给我段错误,我无法弄清楚。当我将 token 复制到我的数组时,我相信它有一些事情要做。

最佳答案

这是因为 writablestring 根本不可写。尝试写入字符串文字是未定义的行为,strtok 写入它(没错,strtok 修改了它的参数)。

要让它工作,请尝试:

char writablestring[] = "The C Programming Language";

还有一个 C FAQ .

另一个问题是你没有为你的字符指针数组分配内存(所以那些指针什么都不指向)。

char* strArray[40]; /* Array of 40 char pointers, pointing to nothing. */

也许试试这个?

/* Careful, strdup is nonstandard. */
strArray[i] = strdup(token);

/* Or this. */
strArray[i] = malloc(strlen(token) + 1);
strcpy(strArray[i], token);

关于c - 分解字符串并将其存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8056146/

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