在 C 中使用 char 指针传递 int
Passing int using char pointer in C
我正在尝试弄清楚如何使用 char 指针传递 int。一旦 int 值对于 char 来说太大,它就会失败。这就是我想弄清楚的:
char *args[5];
int i = 20;
/*some other code/assignments*/
args[2] = (char *)&i;
execv(path, args);
如果我是一个更大的值,比如 400,我将如何做这样的事情?
提前致谢。
程序根本不将整数作为参数,它们将字符串作为参数。这些字符串可以是整数的十进制表示,但它们仍然是字符串。所以你问的是如何做一些根本没有任何意义的事情。
二十是一个整数。这是你拥有的东西的数量,如果你有十八个,然后有人再给你两个。二十不能是可执行文件的参数。
"20" 是一个字符串。它可以表示十进制的数字二十。但它是两个字符的序列,十进制数字“2”后跟十进制数字“0”。
您将字符串传递给可执行文件,而不是整数。
当您输入像 tail -f 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;
我正在尝试弄清楚如何使用 char 指针传递 int。一旦 int 值对于 char 来说太大,它就会失败。这就是我想弄清楚的:
char *args[5];
int i = 20;
/*some other code/assignments*/
args[2] = (char *)&i;
execv(path, args);
如果我是一个更大的值,比如 400,我将如何做这样的事情?
提前致谢。
程序根本不将整数作为参数,它们将字符串作为参数。这些字符串可以是整数的十进制表示,但它们仍然是字符串。所以你问的是如何做一些根本没有任何意义的事情。
二十是一个整数。这是你拥有的东西的数量,如果你有十八个,然后有人再给你两个。二十不能是可执行文件的参数。
"20" 是一个字符串。它可以表示十进制的数字二十。但它是两个字符的序列,十进制数字“2”后跟十进制数字“0”。
您将字符串传递给可执行文件,而不是整数。
当您输入像 tail -f 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;