这个realloc使用有什么问题

 手机用户2502880645 发布于 2023-02-13 13:00

我正在尝试使用realloc从用户那里获得无限的输入.这是我到目前为止所做的:

int getCharactersFromUser(char* arr,char terminator)
{
char c = getch();
int length =0;
while(c!=terminator)
    {
    arr = realloc(arr, sizeof (arr)*(++length));
    arr[length-1]=c;
    c = getch();
    }
return length;
}

我用这样的arr调用这个方法:char *unknownArr = calloc(0,sizeof *unknownArr); int length = getCharactersFromUser(&unknownArr,TEMINATOR_FOR_LIST);TEMINATOR_FOR_LISTeof

1 个回答
  • 如果要更改调用者的副本arr,则需要将指针传递给指针.

    另外,sizeof (arr)给你的大小char*; 你的代码似乎在假设sizeof(char).保证为1,可以简化存储器大小计算.

    int getCharactersFromUser(char** arr,char terminator)
    {
        *arr = NULL; // first call to realloc will crash if `*arr` is uninitialised in caller
        char c = getch();
        int length =0;
        while(c!=terminator)
        {
            *arr = realloc(*arr, ++length);
            (*arr)[length-1]=c;
            c = getch();
        }
        return length;
    }
    

    2023-02-13 13:02 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有