将指向(char)的指针数组传递给函数,并为每个数组分配一个字符串

基列齐奥

我想做的就是从一个单独的函数中为向量中的指针分配字符串。不幸的是,我一直收到很多警告或错误或公共汽车陷阱:10。

这是到目前为止的代码,这里我评论了我遇到的问题:

#include <stdio.h>
#include <stdlib.h>
void read_top(FILE **read,short int *L, short int *D, short int *N){
    fscanf(*read,"%hd %hd %hd",L,D,N); // L being the size of the strings, D being how many strings there are and N doesn´t matter for this question
    fgetc(*read); // remove \n
}

void save_words(FILE **read,char **dic,short int L,short int D){ // i´m having problems here assigning strings to the pointers
    int e;
    for (e = 0;e < D;e++){
        *dic[e] = malloc(125);
        fgets(*dic[e],L+1,*read);
        fgetc(*read);
    }
}

void open(FILE **read,FILE **write) {
    *read = fopen("teste4.in","r");
    *write = fopen("Allien_language","w");
}

void alloc(char **dic,D,L){ //i´m having problems here allocating memory for each pointer to point to 
    int e;
    for (e = 0;e < D; e++){
        *dic[e] = malloc(L);
    }
}

main(){
    FILE *read,*write;
    open(&read,&write);
    short int L,D,N;
    read_top(&read,&L,&D,&N);
    char *dic[D]; // here´s the array of pointers
    alloc(dic,D,L); // here´s the funtion i can´t get to work
    save_words(&read,dic,L,D); // here´s the function that i can´t get to work
    //printf("\n%s\n",dic[0]);
}

我已经尝试了多种方法,但是我认为主要的问题是无法确切地知道它们是如何工作的。这包括将数组传递给函数,并为其分配字符串,并为每个指针分配内存。我也一直在这个网站上搜索我的问题,在那里我找到了类似问题的解决方案,但并不清楚他们的解决方案。如果有人能确切解释我应该如何工作,我将不胜感激。

提前致谢

一些程序员哥们

当您这样做时,例如*dic[e] = malloc(...)您做错了。表达式*dic[e]所做的是获取e数组的element dic,它是指向的指针char,然后取消引用该指针即可为您提供所指向内容的值dic[e]不幸的是,dic[e]它还没有指向任何地方,如果编译器没有给您错误,这将导致未定义的行为和可能的崩溃。

而且,由于尝试将返回的指针分配给不是指针的对象,因此会出现错误malloc

那么解决方案呢?删除取消引用,然后执行例如dic[e] = malloc(...)

当您尝试从中的文件读取字符串时,也会遇到相同的问题save_words那里还有另一个问题,您再次为该字符串分配了内存,从而使该alloc函数的原始分配丢失了,并导致内存泄漏。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将字符串文字的第一个字符分配给char数组将分配整个字符串文字

来自分类Dev

创建一个字符串数组而不分配每个字符串

来自分类Dev

如何使数组中的每个数字都像const char * argv []一样存储一个字符串?

来自分类Dev

为什么取消引用指向字符串(char数组)的指针会返回整个字符串,而不是第一个字符?

来自分类Dev

两个数组,根据第一个的重复值将第二个数组分组,并形成一个字符串

来自分类Dev

将一个数字拆分为一个字符串数组

来自分类Dev

将参数列表作为一个字符串传递给python函数

来自分类Dev

JNI将一个字符串从java传递给c++,然后将c++字符串传递给字符串数组

来自分类Dev

PHP将字符串中每个第一个字符的位置放入数组

来自分类Dev

将图像从c ++传递给Haskell并返回一个字符串

来自分类Dev

如何将一个字符串值传递给COUNTIF?

来自分类Dev

将 Int 传递给枚举并返回一个字符串

来自分类Dev

在一个字符串中保存多个数组

来自分类Dev

Ionic 2:当我将数组传递给组件时,我在 component.ts 上得到一个字符串

来自分类Dev

重新分配一个字符串数组

来自分类Dev

分解一个字符串,返回一个数组,为每个键删除一个字符串

来自分类Dev

在char数组后获取下一个字符串

来自分类Dev

在C中从char数组创建一个字符串

来自分类Dev

使用一个字符串数组来拼接另一个数组?

来自分类Dev

如何将一个字符串数组存储到另一个字符串数组中?

来自分类Dev

向数组列表中的每个字符串添加一个字符

来自分类Dev

将多个字符串数组合并为一个

来自分类Dev

从函数接收一个字符串数组并找出它的长度

来自分类Dev

在构造函数中浅拷贝一个字符串数组

来自分类Dev

将字符串参数传递给另一个字符串

来自分类Dev

如果每个字符串中的第一个字符相同,则从数组中的每个字符串中删除第一个字符

来自分类Dev

为字符串数组中的每个字符串创建一个char数组

来自分类Dev

如何使用指针而不使用字符串库将字符数组复制到'c'中的另一个字符数组

来自分类Dev

将变量数组写在一个字符串中

Related 相关文章

  1. 1

    将字符串文字的第一个字符分配给char数组将分配整个字符串文字

  2. 2

    创建一个字符串数组而不分配每个字符串

  3. 3

    如何使数组中的每个数字都像const char * argv []一样存储一个字符串?

  4. 4

    为什么取消引用指向字符串(char数组)的指针会返回整个字符串,而不是第一个字符?

  5. 5

    两个数组,根据第一个的重复值将第二个数组分组,并形成一个字符串

  6. 6

    将一个数字拆分为一个字符串数组

  7. 7

    将参数列表作为一个字符串传递给python函数

  8. 8

    JNI将一个字符串从java传递给c++,然后将c++字符串传递给字符串数组

  9. 9

    PHP将字符串中每个第一个字符的位置放入数组

  10. 10

    将图像从c ++传递给Haskell并返回一个字符串

  11. 11

    如何将一个字符串值传递给COUNTIF?

  12. 12

    将 Int 传递给枚举并返回一个字符串

  13. 13

    在一个字符串中保存多个数组

  14. 14

    Ionic 2:当我将数组传递给组件时,我在 component.ts 上得到一个字符串

  15. 15

    重新分配一个字符串数组

  16. 16

    分解一个字符串,返回一个数组,为每个键删除一个字符串

  17. 17

    在char数组后获取下一个字符串

  18. 18

    在C中从char数组创建一个字符串

  19. 19

    使用一个字符串数组来拼接另一个数组?

  20. 20

    如何将一个字符串数组存储到另一个字符串数组中?

  21. 21

    向数组列表中的每个字符串添加一个字符

  22. 22

    将多个字符串数组合并为一个

  23. 23

    从函数接收一个字符串数组并找出它的长度

  24. 24

    在构造函数中浅拷贝一个字符串数组

  25. 25

    将字符串参数传递给另一个字符串

  26. 26

    如果每个字符串中的第一个字符相同,则从数组中的每个字符串中删除第一个字符

  27. 27

    为字符串数组中的每个字符串创建一个char数组

  28. 28

    如何使用指针而不使用字符串库将字符数组复制到'c'中的另一个字符数组

  29. 29

    将变量数组写在一个字符串中

热门标签

归档