orangesamiii 2021-12-18 00:02 采纳率: 100%
浏览 30
已结题

C语言字符串数组去空格问题

问题遇到的现象和发生背景

代码出现问题

问题相关代码,请勿粘贴截图
void qukongge(char arr[])
{
    int i = 0, j = 0;
    while (arr[i])
    {
        if (arr[i] = ' ')
        {
            j = i;
            while (arr[j + 1])
            {
                arr[j] = arr[j + 1];
                j++;
                printf("%s\n", arr);
            }
            arr[j] = 0;
        }
        i++;
    }
    printf("i = %d, j = %d\n", i, j);
}

int main()
{
    char arr[] = "h e   ll  o   w  o r ld";
    printf("arr = %s\n", arr);
    qukongge(arr);
    printf("arr = %s\n", arr);
    return 0;
}

运行结果及报错内容

img

arr = h e ll o w o r ld
e ll o w o r ldd
ll o w o r ldd
ll o w o r ldd
l o w o r ldd
l o w o r ldd
l w o r ldd
l w o r ldd
l o r ldd
l o r ldd
l or ldd
l orldd
l orl
i = 12, j = 11
arr = l orl

我的解答思路和尝试过的方法

不知道为什么会这样

我想要达到的结果

解决这个问题

  • 写回答

2条回答 默认 最新

  • fuill 2021-12-18 00:21
    关注

    iif里面应该写两个等于,一个等于是赋值

    
    void qukongge2(char *arr)
    {
        int j=0;
        int n=strlen(arr)+1;
        char p[n];
        int l=0;
        while(j<n)
        {
            if(arr[j]!=' ')
            {
                p[l]=arr[j];
                l++;
            }
            j++;
        }
        j=0;
        while(j<n)
        {
            arr[j]=p[j];
            j++;
        }
        printf("\n");
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月26日
  • 已采纳回答 12月18日
  • 创建了问题 12月18日

悬赏问题

  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?