【问题标题】:Splitting String Into Array Of Words将字符串拆分为单词数组
【发布时间】: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 并且不再返回任何内容。
  • 删除*在函数内部本地工作。一旦函数返回,数组就不再存在,返回值(指向不存在数组的指针)就无法使用。考虑将接收单词的数组传递给函数。

标签: c arrays string


【解决方案1】:

您需要将数组设为静态或为其分配一些内存 - 返回指向本地数组的指针是行不通的。

您可能还想查看 strtok。

【讨论】:

    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多