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日

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line