zcmerlin 2016-09-06 03:58 采纳率: 70%
浏览 1182

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';
}
  • 写回答

2条回答 默认 最新

  • AlbertS 博客专家认证 2016-09-06 04:14
    关注

    把函数改一下

     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';
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮