c - 如何在 while 循环内重新分配 *char[] ?

标签 c pointers char malloc realloc

让我们考虑这个 char 指针数组:

char *lesMots[10];

在 while 循环中使用:

while(fgets(buffer, TAILLE_BUFFER, fichier)!=NULL){
    token = strtok(buffer, s);
         while( token != NULL && token[0]!=13) 
        {               
            token[strlen(token)]='\0';
            *(lesMots + ligne)=strdup(token);
            ligne++;
            token = strtok(NULL, s);
        }
}

我正在尝试重新分配 *lesMots[10] 的内存,因为如果大小不等于或大于 21,它稍后会崩溃。

我正在考虑在 ligne>=10 后立即重新分配数组,但失败了,这就是为什么我不向您展示我的 malloc 和 realloc 测试。谢谢你帮助我。

最佳答案

如果您需要能够增加数组的大小,请使用动态分配的数组而不是静态定义的数组。

而不是:

char *lesMots[10];

使用

char **lesMots = malloc(10*sizeof(*lesMots));

关于c - 如何在 while 循环内重新分配 *char[] ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30654844/

相关文章:

使用指针复制 C 中的字符串

c - 给char指针赋值,但是说Access violation writing location

c - 为什么 sizeof(!5.6) 给出输出 2?

c - C 中的优先级和结合性

c - 获取C函数的返回地址

c - #define 函数给了我意想不到的结果

当函数结束并且程序返回主函数时,即使它使用指针,对函数中字符串数组所做的更改也会全部丢失

C 在 void 函数之后由指针发送的数组的值被修改

MySQL:使用 char(n) 与带有零填充的十进制(n)

c++ - 查找字符串中是否存在某些字符