免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3076 | 回复: 10

[C] char * 转成 char ** [复制链接]

论坛徽章:
0
发表于 2010-09-27 21:10 |显示全部楼层
求一个char * 转成char **的函数,模拟main(int ,char **)
晚辈不胜感谢 {:3_193:}谢谢!

论坛徽章:
0
发表于 2010-09-27 21:13 |显示全部楼层
对楼主的话不能理解。
char *a;
char **b = &a;

论坛徽章:
0
发表于 2010-09-27 22:01 |显示全部楼层
求一个char * 转成char **的函数,模拟main(int ,char **)
wishrr 发表于 2010-09-27 21:10



    莫名所以,能说具体点吗?比如,输入什么,要达到什么效果。

论坛徽章:
0
发表于 2010-09-27 22:07 |显示全部楼层
en,同样不明白

论坛徽章:
0
发表于 2010-09-28 00:58 |显示全部楼层
这是不能转换的,你应该自己创建一个 char *[] 数组。

论坛徽章:
0
发表于 2010-09-28 08:41 |显示全部楼层
sorry呀!因为我要调用  int getopt_long(int argc,char const **argc, const char *optstring,const struct option *longopts,int *longindex);
因为第二个参数是char **而我从函数的参数列表中接收的参数类型是char * 所以我必须要把它转成char **,进行字符匹配!

论坛徽章:
0
发表于 2010-09-28 08:44 |显示全部楼层
本帖最后由 wishrr 于 2010-09-28 10:01 编辑

那要怎么转呀!特别不明白! 可不可以说的具体一点!5楼的!

论坛徽章:
0
发表于 2010-09-28 08:45 |显示全部楼层
sorry呀!因为我要调用  int getopt_long(int argc,char const **argc, const char *optstring,const struc ...
wishrr 发表于 2010-09-28 08:41

这种你只能手工去转换了...像你楼上说的一样。

论坛徽章:
0
发表于 2010-09-28 08:52 |显示全部楼层
本帖最后由 davelv 于 2010-09-28 08:54 编辑

例如参数 char *a="./a.out -a -b ccc"
假设A是可写的,如果不可写你自己再copy出来一个新的字符串。
你需要建立一个数组char *b[N];
和查询用的char *pos;
然后用strchr()函数找到空格
while((pos = strchr(a,' '))!=NULL)
{
把空格改成\0
*pos = '\0';
把前面字符串的首地址赋给 b
b[ i ] = a;
然后a递增;
a= pos+1;
}
strtok函数可以自己完成分割字符串的功能,楼主也可以使用这个
上面没有做严格的判断,只是说明了下如何使用。

论坛徽章:
0
发表于 2010-09-28 09:08 |显示全部楼层
手工转换成这样的东东{"foo", NULL}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP