#include <stdio.h>
#include <string.h>

int main()
{
    char str[1001] = {0};
    int quotation = 0;
    int num = 0;
    int len = 0;
    
    if(gets(str) != NULL)
    {
        len = strlen(str);
        /* 由于下面要是用 strtok,会造成原字符串数据改变,保存一份备用 */ 
        char *temp = malloc(len);
        memcpy(temp, str, len);
        
        /* 分割查找参数个数 */
        char* split = strtok(temp, " ");
        while(split != NULL)
        {
            if(split[0] == '\"')
            {
                if(split[strlen(split) - 1] == '\"')
                {
                    num++;
                }
                else
                {
                    quotation++;
                }
                
            }
            else if(split[strlen(split) - 1] == '\"')
            {
                num++;
                quotation--;
            }
            else if(!quotation)
            {
                num++;
            }
            
            split = strtok(NULL, " ");
        }
        
        
        char* split1 = strtok(str, " ");
        
        printf("%d\n", num);
        quotation = 0;
        /* 分割并输出参数字符串 */
        while(split1 != NULL)
        {
            if(split1[0] == '\"')
            {
                /* 双引号中不含空格 */
                if(split1[strlen(split1) - 1] == '\"')
                {
                    /* 去掉双引号输出 */
                    split1[strlen(split1) - 1] = '\0';
                    printf("%s\n", &split1[1]);
                }
                else /* 双引号中含有空格 */
                {
                    /* 输出时需加上空格,并去掉双引号 */
                    printf("%s ", &split1[1]);
                    /* 标志参数为 前双引号开始 */
                    quotation++;
                }
                
            }
            else if(split1[strlen(split1) - 1] == '\"')        /* 参数 后双引号结束 */
            {    
                /* 去掉双引号输出 */
                split1[strlen(split1) - 1] = '\0';
                quotation--;
                printf("%s\n", split1);
            }
            else if(quotation)
            {
                /* 双引号参数 含空格 中的数据 */
                printf("%s ", split1);
            }
            else
            {
                printf("%s\n", split1);
            }
            
            split1 = strtok(NULL, " ");
        }
        
        if(temp != NULL)
        {
            free(temp);
            temp = NULL;
        }
    }
    
    return 0;
}