将整个 unsigned char 数组返回到 main

时钟

下面的当前 main() 正在运行,用于修改输入数组的大小和值,并生成输出数组。

int main()
{
    unsigned char input_text[] = {0x00, 0x01, 0x02 ....};
    int ilength = sizeof(input_text)/sizeof(input_text[0]);

    int *olength;
    olength = &ilength;
    unsigned char* output_text = (unsigned char*)malloc(sizeof(unsigned char)*(*olength));

    int option = 1;
    switch(option)
    {   // array size and some elements values will be changed below
     case 1:
        change_output_method_1(&output_text, input_text, ilength, olength);
        // void change_output_method_1(unsigned char** output, unsigned char* input, int inlen, int *olen);
    }

    return 0;
}

现在,我想将上面的 main() 修改为名为 change() 的调用函数,它从 new main() 读取 input_text 和选项值,并将 output_text 值返回给 new main()。

当然,创建另一个新的 main() 来调用 change()。

unsigned char* change(unsigned char input_text, int option)
{
    int ilen = sizeof(input_text)/sizeof(input_text[0]);

    (same as before)

    return output_text;
}

int main()
{
    int opt = 1;
    unsigned char input[] = {same};

    unsigned char output[] = change(input, opt);
    // IMPORTANT: output[] size is unknown before receiving the return value from change( )
}

由于指针问题,我在定义字符数组时遇到了一些错误。如何修改新代码?

Ctx

这不起作用:

unsigned char output[] = change(input, opt);

...

unsigned char* change(unsigned char input_text, int option)

您不能将数组传递给您的change函数。您必须传递一个指向数组的指针(技术上准确:指向数组的第一个元素)以及大小:

unsigned char output[] = change(input, sizeof(input), opt);

...

unsigned char* change(unsigned char *input_text, int ilen, int option) {

此外,您也不能返回数组。例如,您可以返回一个动态分配的缓冲区并在输出参数中传递输出缓冲区的大小:

int output_size;
char *output = change(input, sizeof(input), &output_size, opt);

...

unsigned char* change(unsigned char *input_text, int ilen, int *olen, int option) {
    char *ret = malloc(SIZE);
    *olen = SIZE;

    return ret;
}

当然还有其他可能性,这取决于具体情况。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Qt:将QPixmap保存到std :: vector <unsigned char>-或将QByteArray转换为std :: vector <unsigned char>

来自分类Dev

将Const char *转换为Unsigned long int-strtoul

来自分类Dev

在`for`循环中遍历整个`unsigned char`范围

来自分类Dev

将QByteArray转换为std :: vector <unsigned char>

来自分类Dev

我可以将unsigned char *强制转换为unsigned int *吗?

来自分类Dev

Swift中的unsigned char

来自分类Dev

char *到array <unsigned char ^>

来自分类Dev

将unsigned int拆分为unsigned char []时出错

来自分类Dev

将vector <unsigned long>转换为char缓冲区[]

来自分类Dev

将char数组从C ++函数返回到tcl

来自分类Dev

如何在Java中声明unsigned char数组?

来自分类Dev

如何将unsigned int转换为unsigned char数组

来自分类Dev

C:如何将多个值从函数返回到main

来自分类Dev

将char [2]转换为unsigned short时出错?

来自分类Dev

在C中将unsigned char数组转换为signed short

来自分类Dev

将函数的静态数组返回到main()函数中的另一个数组

来自分类Dev

如何将const unsigned char数组中的元素转换为char

来自分类Dev

将float *或其他指针转换为unsigned char *

来自分类Dev

如何在C中保留范围的同时将unsigned转换为signed char(并返回)?

来自分类Dev

将int转换为unsigned char数组并向后转换

来自分类Dev

将ATL :: CString转换为std :: vector <unsigned char>

来自分类Dev

c ++ unsigned char数组分配-分段错误

来自分类Dev

使用查找模式将int []返回到main也很麻烦

来自分类Dev

将“ unsigned char *”转换为“ char *”(和字符串)

来自分类Dev

如何将 const char* 转换为 const unsigned char*

来自分类Dev

将 void (*)() 转换为 void (*)(unsigned char)

来自分类Dev

如何将字符串从函数返回到 main()?

来自分类Dev

在 malloc() 之后使用 realloc() 来改变 unsigned char 数组的大小

来自分类Dev

如何将值从 Dialog 返回到 Main?

Related 相关文章

  1. 1

    Qt:将QPixmap保存到std :: vector <unsigned char>-或将QByteArray转换为std :: vector <unsigned char>

  2. 2

    将Const char *转换为Unsigned long int-strtoul

  3. 3

    在`for`循环中遍历整个`unsigned char`范围

  4. 4

    将QByteArray转换为std :: vector <unsigned char>

  5. 5

    我可以将unsigned char *强制转换为unsigned int *吗?

  6. 6

    Swift中的unsigned char

  7. 7

    char *到array <unsigned char ^>

  8. 8

    将unsigned int拆分为unsigned char []时出错

  9. 9

    将vector <unsigned long>转换为char缓冲区[]

  10. 10

    将char数组从C ++函数返回到tcl

  11. 11

    如何在Java中声明unsigned char数组?

  12. 12

    如何将unsigned int转换为unsigned char数组

  13. 13

    C:如何将多个值从函数返回到main

  14. 14

    将char [2]转换为unsigned short时出错?

  15. 15

    在C中将unsigned char数组转换为signed short

  16. 16

    将函数的静态数组返回到main()函数中的另一个数组

  17. 17

    如何将const unsigned char数组中的元素转换为char

  18. 18

    将float *或其他指针转换为unsigned char *

  19. 19

    如何在C中保留范围的同时将unsigned转换为signed char(并返回)?

  20. 20

    将int转换为unsigned char数组并向后转换

  21. 21

    将ATL :: CString转换为std :: vector <unsigned char>

  22. 22

    c ++ unsigned char数组分配-分段错误

  23. 23

    使用查找模式将int []返回到main也很麻烦

  24. 24

    将“ unsigned char *”转换为“ char *”(和字符串)

  25. 25

    如何将 const char* 转换为 const unsigned char*

  26. 26

    将 void (*)() 转换为 void (*)(unsigned char)

  27. 27

    如何将字符串从函数返回到 main()?

  28. 28

    在 malloc() 之后使用 realloc() 来改变 unsigned char 数组的大小

  29. 29

    如何将值从 Dialog 返回到 Main?

热门标签

归档