使用C中的char指针传递int

时间:2015-06-23 00:18:07

标签: c exec ipc

我正在试图弄清楚如何使用char指针传递int。一旦int值对于char来说太大,它就会失败。这就是我想弄清楚的:

char *args[5];

int i = 20;

/*some other code/assignments*/

args[2] = (char *)&i;

execv(path, args);

如果我是一个更大的价值,如400,我将如何做这样的事情?

提前致谢。

1 个答案:

答案 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;