【问题标题】:using double pointer for char - what's the problem in the code?对 char 使用双指针 - 代码中有什么问题?
【发布时间】:2022-01-23 05:30:49
【问题描述】:
char* scanString()
{
    char* str = NULL;
    char* temp = NULL;
    int  numOfChars = 0;
    char c = '0';
    while (c != '\n')
    {
        scanf("%c", &c);
        str = (char*)realloc(str, sizeof(char) * (numOfChars + 1));
        temp = str;
        if (str == NULL)
        {
            str = temp;
            return str;
        }
        str[numOfChars] = c;
        if (c == '\n')
        {
            str[numOfChars] = '\0';
        }
        numOfChars++;
    }
    return str;
}
int main()
{
    char** doublePointer = NULL;
    char* m = scanString();
    char* token = strtok(m, ",");
    int i = 0;
    while (token != NULL)
    {
        doublePointer = (char**)realloc(doublePointer, sizeof(char*) * (i+1));
        if (doublePointer)
            doublePointer[i] = (char*)realloc(doublePointer[i], strlen(token) + 1);
        strcpy(doublePointer[i], token);
        token = strtok(NULL, ",");
        i++;
    }
    for (int k = 0; k <= i; k++)
    {
        printf("%d: %s\n", k + 1, doublePointer[k]);
    }
    return 0;
}

我试图将像“option1,oprion2,option3”这样的字符串放入字符串数组中,然后将每个选项放在数组中的位置。 最后,我想按放置顺序打印 wach 选项。 我究竟做错了什么? 感谢您的帮助。

【问题讨论】:

  • realloc(doublePointer[i] 这是一个问题,因为doublePointer[i] 尚未初始化并且可以包含任何垃圾值。为什么在那里使用realloc?只需使用malloc。如果修复无法解决问题,请更新您的问题以解释您遇到的具体错误或不正确行为。
  • 成功了!谢谢

标签: c string pointers realloc strtok


【解决方案1】:

问题已通过替换解决

doublePointer[i] = (char*)realloc(doublePointer[i], strlen(token) + 1);

使用malloc。感谢kaylum

【讨论】:

    猜你喜欢
    • 2011-05-17
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    相关资源
    最近更新 更多