将char *转换为C中的char * []

时间:2013-09-17 20:34:50

标签: c

我遇到了投射问题,有没有办法投出一种:

char *result; 

到一种

char *argv[100];

如果是这样,我该怎么做?或者有一种安全的方法吗?

4 个答案:

答案 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的单个指针。