c巴拉巴拉 2024-04-09 19:20 采纳率: 87.5%
浏览 1
已结题

遍历cpy后为什么数组顺序乱了,为什么第一次互换把第一个字符串给替换了,且strcmp函数输出也不对


void strsq(char    p[][4],int n)
{
    int i,j;
    char* tmp=p[0];
    for(i=0;i<n-1;i++)//1 2 3
    {
        for(j=0;j<n-1-i;j++)//
        {
            if(strcmp(p[j],p[j+1])>0)
            {
                strcpy(tmp,p[j]);
                strcpy(p[j],p[j+1]);
                strcpy(p[j+1],tmp);
            }
        }
    }
    
}

int main()
{
    char p[][4]={"acd","frg","dee"};
    int i=0;
    strsq(p,3);
    i=0;
    while(i<3)
    {
        printf("%s ",p[i]);
        i++;
    }
//期待输出应是acd  dee  frg

}

img

  • 写回答

5条回答 默认 最新

  • c巴拉巴拉 2024-04-10 16:19
    关注

    因为,指针tmp里面存储的是第一个元素地址,它本身没有独立空间,在cpy时将当前p[j]]字符cpy到第一个元素地址,所以没有达到预期结果

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月18日
  • 已采纳回答 4月10日
  • 创建了问题 4月9日

悬赏问题

  • ¥20 遥感植被物候指数空间分布图制作
  • ¥20 Github上传代码没有contribution和activity记录
  • ¥20 SNETCracker
  • ¥15 数学建模大赛交通流量控制
  • ¥15 为什么我安装了open3d但是在调用的时候没有报错但是什么都没有发生呢
  • ¥50 paddleocr最下面一行似乎无法识别
  • ¥15 求某类社交网络数据集
  • ¥15 靶向捕获探针方法/参考文献
  • ¥15 很抱歉出现错误word不能启动(24),如何解决?
  • ¥15 javascript下载网络图片