我正在试图弄清楚如何使用char指针传递int。一旦int值对于char来说太大,它就会失败。这就是我想弄清楚的:
char *args[5];
int i = 20;
/*some other code/assignments*/
args[2] = (char *)&i;
execv(path, args);
如果我是一个更大的价值,如400,我将如何做这样的事情?
提前致谢。
答案 0 :(得分:4)
程序只是不将整数作为参数,它们采用字符串。这些字符串可以是整数的十进制表示,但它们仍然是字符串。所以你要问的是如何做一些根本没有任何意义的事情。
二十是整数。如果你有十八岁,那么你拥有的东西数量就会增加一些。二十不能是可执行文件的参数。
" 20"是一个字符串。它可以表示十进制的二十进制数。但它是两个字符的序列,十进制数字' 2'后跟十进制数字' 0'。
您将字符串传递给可执行文件,而不是整数。
当您输入tail -f 20
之类的命令时,数字20不是其中一个参数。它们是字符串" tail",字符串" -f"和字符串" 20" (数字' 2'后跟数字' 0')。那里没有数字,只有字符串(尽管其中一个恰好代表一个数字)。
你可以这样做:
int i = 10;
char parameter[32];
sprintf(parameter, "%d", i);
// parameter now contains the string "10"
args[2] = parameter;