关于 二维指针 数组问题

flyfish_289 2011-09-04 03:05:10
请模仿shell的处理,把一个字符串按空格作为字符间隔符,转化为argc和argv[]的形式

char str[128];
int argc;
char * argv[16];

void parse(void)
{
???
}
...全文
89 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackyjkchen 2011-09-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dizuo 的回复:]

C/C++ code
/* strtok example */
#include <stdio.h>
#include <string.h>

int main ()
{
char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);……
[/Quote]
这个能处理复杂情况么?比如有些命令之中就有空格,外部用""的情况
Leaveye 2011-09-04
  • 打赏
  • 举报
回复
water
char cache[] = "cmd --opt1 par1 arg1 --opt2 par2 --flg1 --flg2 arg2 arg3"
char *argv[0x40] = {};
char *pin, *psv;
int argc;
for ( argc=0, pin=cache; (argv[argc] = strtok_r( pin, " ", &psv )) != NULL; argc++, pin=NULL );
// you have got argc and argv
flyfish_289 2011-09-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jackyjkchen 的回复:]
无论Windows还是Linux,都有专门的api处理这种工作

windows
GetCommandLine和CommandLineToArgvW

Linux
getopt和getopt_long

其中CommandLineToArgvW做的就是你这件事
[/Quote]



啊。。。。。好复杂啊。。。。⊙﹏⊙b
ryfdizuo 2011-09-04
  • 打赏
  • 举报
回复
/* strtok example */
#include <stdio.h>
#include <string.h>

int main ()
{
char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}
return 0;
}
jackyjkchen 2011-09-04
  • 打赏
  • 举报
回复
不要重复发明轮子
jackyjkchen 2011-09-04
  • 打赏
  • 举报
回复
无论Windows还是Linux,都有专门的api处理这种工作

windows
GetCommandLine和CommandLineToArgvW

Linux
getopt和getopt_long

其中CommandLineToArgvW做的就是你这件事
昵称很不好取 2011-09-04
  • 打赏
  • 举报
回复
可以试试strtok

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧