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

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器