1.源码实现
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void getArgs(char *str, int n)
{
char arg[32][128];
int u = 0;
int i;
int j = 0;
int k = 0;
for(i=0; i<n; i++)
{
if(str[i] == '\"')
{
if(u)
{
arg[k][j] = 0x00;
/*printf("%s\n", arg);*/
j = 0;
k++;
}
u = !u;
}
else if(!u && (str[i] == ' ' || str[i] == '\t'))
{
arg[k][j] = 0x00;
if(j > 0)
{
/*printf("%s\n", arg);*/
k++;
}
j = 0;
}
else
{
arg[k][j] = str[i];
j++;
}
}
if(!u && str[i] != ' ' && str[i] != '\t')
{
arg[k][j] = 0x00;
if(j > 0)
{
/*printf("%s\n", arg);*/
k++;
}
j++;
}
printf("%d\n", k);
for(i=0; i<k; i++)
{
printf("%s\n", arg[i]);
}
}
int main()
{
char linebuf[1024];
int len;
memset(linebuf, 0x00, sizeof(linebuf));
while(fgets(linebuf, 1023, stdin) != NULL)
{
len = strlen(linebuf);
if(linebuf[len-1] == '\n')
{
linebuf[len-1] = 0x00;
len--;
}
getArgs(linebuf, len);
}
return 0;
}
2.编译源码
$ gcc -o example examle.c -std=c89
4.运行及其结果
$ ./example
xcopy /s c:\\ d:\\
4
xcopy
/s
c:\\
d:\\
网友评论