我遇到了投射问题,有没有办法投出一种:
char *result;
到一种
char *argv[100];
如果是这样,我该怎么做?或者有一种安全的方法吗?
答案 0 :(得分:4)
char * result
是一个字符串
和
char * argv[100]
是字符串数组。
您无法将字符串转换为字符串数组。但是,您可以创建一个字符串数组,其中第一个数组值是结果。
argv[0] = result;
答案 1 :(得分:2)
char *result
是指向char
的指针
char *argv[100]
是char *
的数组,所以实际上它是char **
(指针指针)
记住这一点:
int* arr[8];
//一个int指针数组
int (*arr)[8];
//指向整数数组的指针
在这种情况下,这可能不是你想要做的。我想下一个问题是:你想做什么?或者为什么?
答案 2 :(得分:0)
首先,简短解释:
char *result;
变量result
是一个指针,当设置它时将指向一个字符。但是,如您所知,单个字符可以是以null(\ 0)字符结尾的字符串的开头。
在C中,优秀的程序员可以使用指针result
来索引字符串。
但是,在指针到达空字符之前,字符串的长度为 NOT 。
可以定义固定长度的字符串,在本例中为代码:
char s[100];
现在,乐趣开始了。每个Kernighan和Ritchie(K& R)s
是一个指向以0结尾的字符串的指针。
所以,你可以编码:
s[0] = 'a';
*s = 'a';
s[1] = 'b';
*(s+1) = 'b';
这些是等同的陈述。
正如其他帖子中所提到的,让我们为你的argv语句添加明确的parens:
char *(argv[100]);
因此,这是一个包含100个字符指针的数组(每个字符可能是也可能不是字符串的开头)。
答案 3 :(得分:0)
result
包含哪些内容,以及转换后您希望argv
包含哪些内容?
例如,如果result
指向由分隔符分隔的字符串列表,例如"foo,bar,bletch,blurga,..
,并且您希望每个字符串都是argv
中的分隔元素,就像
argv[0] == "foo"
argv[1] == "bar"
argv[2] == "bletch"
argv[4] == "blurga"
然后你无法用一个简单的演员来完成这个;您必须实际扫描result
并指定指向argv
的单个指针。