C:分离字符串子串问题

通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。
如果输入“abc def gh i d”,结果将是abc,def,gh,i,d,

图片说明

我写的代码只能识别一个空格,不能识别多个空格

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

void DividString(const char *pInputStr, long lInputLen, char *pOutputStr);

int main()
{
    char str1[101], str2[101], len, i, j;

    gets(str1);

    len = strlen(str1);

    DividString(str1, len, str2);

    puts(str2);

    getchar();
    return 0;
}

void DividString(const char *pInputStr, long lInputLen, char *pOutputStr)
{
    int i;

    for (i = 0; i < lInputLen; i++)
    {
        if (pInputStr[i] != ' ')
            pOutputStr[i] = pInputStr[i];
        else if (pInputStr[i] == ' '&&pInputStr[1 + i] != ' ')
            pOutputStr[i] = ',';
        else if (pInputStr[i] == ' '&&pInputStr[1 + i] == ' ')
            continue;
    }
    pOutputStr[i++] = ',';
    pOutputStr[i] = '\0';
}

把函数改一下

 void DividString(const char *pInputStr, long lInputLen, char *pOutputStr)
{
    int i;
    bool bCanInputComma = false;
    int nCount = 0;

    for (i = 0; i < lInputLen; i++)
    {
        if (pInputStr[i] != ' ')
        {
            pOutputStr[nCount] = pInputStr[i];
            ++nCount;
            bCanInputComma = true;
        }
        else if (pInputStr[i] == ' ' && bCanInputComma == true)
        {
            pOutputStr[nCount] = ',';
            ++nCount;
            bCanInputComma = false;
        }
    }

    pOutputStr[nCount] = ',';
    pOutputStr[nCount + 1] = '\0';
}

bCanInputComma表示次数能不能输入逗号
nCount表示输出结果的长度