【发布时间】:2011-10-23 01:01:36
【问题描述】:
我正在开发一个 C 函数来将一串字母拆分成一个数组,但是它不断出现段错误,我不知道为什么。
我已经通过 DDD 运行了几次,没有太大帮助。
char* stringToArray(const char *desc)
{
int i = 0;
int j = 0;
char *array[5][10] = {{0}};/*5 words, 10 chars each*/
while (desc[i] != '\0')
{
if (desc[i] != ' ') {
*array[j][i] = desc[i]; /*seg faults here*/
}
else {
j++;
}
i++;
}
return **array;
}
任何帮助将不胜感激 谢谢。
【问题讨论】:
-
每个
array[J][I]都是一个指针。您还没有使所有这些指针中的任何一个指向有效的地方。 -
啊,好吧,所以我想删除那个 * 然后我们走了
-
您也不应该返回指向堆栈分配变量的指针 (
array)。那是行不通的。 -
谢谢,刚刚发现,将函数更改为 void 并且不再返回任何内容。
-
删除
*仅在函数内部本地工作。一旦函数返回,数组就不再存在,返回值(指向不存在数组的指针)就无法使用。考虑将接收单词的数组传递给函数。