背景:我原来的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>
问题:
如何在main()中显示$(echo“ this_is_input” | xxd -p)**的十六进制转储值?
如何修改run()和main()以便将无符号字符数组返回给main()?
答案 0 :(得分:3)
- 如何在main()中显示$(echo“ this_is_input” | xxd -p)**的十六进制转储值?
您可以将其表示为字符数组,或例如由空格分隔的字符数组。后一种表示命令行参数已经在argv
中。
- 如何修改run()和main()以便将未签名的char数组返回给main()?
您必须声明函数的返回类型。无法直接在C中返回数组,并且不希望在周围复制数组。一个典型的解决方案是让调用者(主)创建数组,然后让被调用函数修改数组的内容:
void run(int argc, char *argv[], unsigned char output[16])
main
有问题。它尝试分配一个数组。数组不可分配。鉴于数组也不能从函数中返回,这毫无意义。
这是我建议的运行方式:
unsigned char output[16] = {0x00};
run(argc, argv, output);