将未签名的char数组返回给主函数

时间:2019-06-25 10:14:44

标签: c arrays hexdump unsigned-char

背景:我原来的main()是:

./calculate $(echo "this_is_input"|xxd -p)

原始程序(例如,calculate.c)通过命令行运行:

run(int argc, char *argv[])
{
    ....
    return output[i];
}

现在我只想将main()修改为调用函数,例如,名为run()。并编写一个新的main()来调用run()函数。

输入(等效于以上命令行)被硬编码在新的main()中。 main()会将输入值传递给run()函数(而不是使用上面的命令行)。

int main()
{
    input_char = **equivalent to $(echo "this_is_input"|xxd -p)** // how to define?

    unsigned char returned_output[16] = {0x00};

    returned_output = run(X, input_char);

    print(returned_output);
}

然后run()将相同的输出[i]返回到main()

pip install --user <package-name>

问题:

  1. 如何在main()中显示$(echo“ this_is_input” | xxd -p)**的十六进制转储值?

  2. 如何修改run()和main()以便将无符号字符数组返回给main()?

1 个答案:

答案 0 :(得分:3)

  
      
  1. 如何在main()中显示$(echo“ this_is_input” | xxd -p)**的十六进制转储值?
  2.   

您可以将其表示为字符数组,或例如由空格分隔的字符数组。后一种表示命令行参数已经在argv中。

  
      
  1. 如何修改run()和main()以便将未签名的char数组返回给main()?
  2.   

您必须声明函数的返回类型。无法直接在C中返回数组,并且不希望在周围复制数组。一个典型的解决方案是让调用者(主)创建数组,然后让被调用函数修改数组的内容:

void run(int argc, char *argv[], unsigned char output[16])

main有问题。它尝试分配一个数组。数组不可分配。鉴于数组也不能从函数中返回,这毫无意义。

这是我建议的运行方式:

unsigned char output[16] = {0x00};
run(argc, argv, output);