在 c/c++ 中使用 malloc 在另一个函数中填充 char*

穆罕默德·霍尔吉

我正在编写 Arduino (ESP8266),并且必须从文件中读取一个字符串才能使用它。我不知道那个文件有多长,所以我必须创建一个char*并将它传递给readConf函数,以便malloc决定内存大小。

void readConf(char path[], char **buff){
    SPIFFS.begin();
    if (SPIFFS.exists(path))
    {
        File file = SPIFFS.open(path, "r");
        int size = file.size();
        Serial.print("File size: ");
        Serial.println(size);
        char *bu;
        bu = (char*) malloc((size+1) * sizeof(char));
        file.read((uint8_t*) bu, size);
        bu[size] = '\0';
        Serial.print("Data: ");
        for (int i = 0; i < size; i++)
            Serial.print(bu[i]);
        Serial.println("");
        //Everything is OK. It is printed correctly.
        buff = &bu; //!This is the problem!
        file.close();
    }
    SPIFFS.end();
}

#define file_path "/file"
void setup(){
    
    if(WiFi.getMode() != WIFI_STA)
        WiFi.mode(WIFI_STA);
    
    char* username;
    readConf(file_path, &username);
    char* password;
    readConf(file_path, &password);
    /*The same with password. */
    WiFi.begin(username, password);
    
    Serial.print("username: ");
    Serial.println(username); //Here I sometimes get Exception, and sometimes prints non-sense characters
    free(username); //My memory is limited. I'm doing all this stuff for this line!
    //...
}

我也在 StackOverflow 和其他网站上搜索了很多,也使用了char *, char **,直接在readConf函数中填充指针,还有很多但都不起作用。我该如何处理?我能做到吗?

注意:我不应该使用 String 类。

来自莫斯科的弗拉德

函数参数buff函数的局部变量

void readConf(char path[], char **buff){

所以在函数内改变它

buff = &bu; //!This is the problem!

password对函数中声明的变量没有影响setup

char* password;
readConf(file_path, &password);

你需要写

*buff = bu;

那就是您需要在函数readConf中更改函数password声明的指针的值setup

所以你readConf通过一个指向它的指针通过引用传递了指向该函数的指针

readConf(file_path, &password);

现在要直接访问原始指针,password您需要取消引用buff由表达式初始化的参数&password

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用malloc从函数返回char数组

来自分类Dev

使用fscanf填充一个char数组会更改另一个char数组的值

来自分类Dev

在结构中的char *上使用malloc的分段错误

来自分类Dev

如何将malloc用于已使用malloc创建的另一个结构中的结构数组

来自分类Dev

使用Python在另一个函数中使用一个函数中的变量

来自分类Dev

使用malloc,char数组和指针

来自分类Dev

在go lang中使用一个函数的变量在另一个函数中

来自分类Dev

如何在python中的另一个函数中使用一个函数

来自分类Dev

如何在另一个函数中的一个函数中使用值

来自分类Dev

使用函数中的malloc创建的Char *,编译器表示地址在堆栈上,无法返回

来自分类Dev

另一个函数内部的 malloc 和赋值

来自分类Dev

在不使用STL的情况下,如何将一个char数组的内容正确复制到另一个char数组中,而不传递给函数?

来自分类Dev

我正在尝试使用malloc制作char数组的数组,然后使用for填充数组

来自分类Dev

在Swift中使用另一个类中的一个类的函数

来自分类Dev

在烧瓶中使用另一个函数中的一个变量

来自分类Dev

从静态 void 中获取一个值以在另一个函数中使用

来自分类Dev

使用动态分配将char *复制到另一个char **

来自分类Dev

如何使用C在char数组中用另一个char替换两个char?

来自分类Dev

为什么如果我不给malloc()一些内存,使用char *会导致程序停止?

来自分类Dev

带有文本的char *是否会像使用malloc一样自动保留内存?

来自分类Dev

在不使用标准库中除 malloc() 和 free() 之外的任何其他函数的情况下返回一个动态分配的副本 const char *s

来自分类Dev

关于使用malloc和char数组指针的c中的分段错误

来自分类Dev

无法正确释放另一个malloc的malloc

来自分类Dev

在另一个函数中使用数组数据

来自分类Dev

在另一个函数中使用输入的值

来自分类Dev

在IFNULL()函数中使用另一个查询

来自分类Dev

在另一个模块中使用类/函数

来自分类Dev

在另一个函数中使用异步

来自分类Dev

Python 在另一个函数中使用变量

Related 相关文章

  1. 1

    如何使用malloc从函数返回char数组

  2. 2

    使用fscanf填充一个char数组会更改另一个char数组的值

  3. 3

    在结构中的char *上使用malloc的分段错误

  4. 4

    如何将malloc用于已使用malloc创建的另一个结构中的结构数组

  5. 5

    使用Python在另一个函数中使用一个函数中的变量

  6. 6

    使用malloc,char数组和指针

  7. 7

    在go lang中使用一个函数的变量在另一个函数中

  8. 8

    如何在python中的另一个函数中使用一个函数

  9. 9

    如何在另一个函数中的一个函数中使用值

  10. 10

    使用函数中的malloc创建的Char *,编译器表示地址在堆栈上,无法返回

  11. 11

    另一个函数内部的 malloc 和赋值

  12. 12

    在不使用STL的情况下,如何将一个char数组的内容正确复制到另一个char数组中,而不传递给函数?

  13. 13

    我正在尝试使用malloc制作char数组的数组,然后使用for填充数组

  14. 14

    在Swift中使用另一个类中的一个类的函数

  15. 15

    在烧瓶中使用另一个函数中的一个变量

  16. 16

    从静态 void 中获取一个值以在另一个函数中使用

  17. 17

    使用动态分配将char *复制到另一个char **

  18. 18

    如何使用C在char数组中用另一个char替换两个char?

  19. 19

    为什么如果我不给malloc()一些内存,使用char *会导致程序停止?

  20. 20

    带有文本的char *是否会像使用malloc一样自动保留内存?

  21. 21

    在不使用标准库中除 malloc() 和 free() 之外的任何其他函数的情况下返回一个动态分配的副本 const char *s

  22. 22

    关于使用malloc和char数组指针的c中的分段错误

  23. 23

    无法正确释放另一个malloc的malloc

  24. 24

    在另一个函数中使用数组数据

  25. 25

    在另一个函数中使用输入的值

  26. 26

    在IFNULL()函数中使用另一个查询

  27. 27

    在另一个模块中使用类/函数

  28. 28

    在另一个函数中使用异步

  29. 29

    Python 在另一个函数中使用变量

热门标签

归档