字符串切分,可以通过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;
}