字符串切分,可以通过strtok实现
易出错的点:见代码注释
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char res[100][1000];
int main()
{
int num = 0;//参数个数
char in[1001];
//此处不能使用scanf,scanf遇到空格就会停止输入,应使用gets
//scanf("%s", in);
gets(in);
int len = strlen(in);
int i=0,j,m,n;
int flag = 0;//判断引号数量
int pre_flag = 0;//与flag比较判断该块是否含有""
while(i<len)
{
pre_flag = flag;
m = i;
while((in[i] != ' ' || flag%2) && i < len)
{
if(in[i] == '"')
{
flag++;
}
i++;
}
if(i >= len)
{
n = len;
if(pre_flag != flag)
{
m++;
n--;
}
for(j=m; j<n; j++)
{
res[num][j-m] = in[j];
}
res[num][n-m] = '\0';
num++;
break;
}
n = i;
if(pre_flag != flag)
{
m++;
n--;
}
for(j=m; j<n; j++)
{
res[num][j-m] = in[j];
}
res[num][n-m] = '\0';
num++;
i++;
}
printf("%d\n", num);
for(i=0; i<num; i++)
{
printf("%s\n",res[i]);
}
return 0;
}