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
}
![](https://profile-avatar.csdnimg.cn/default.jpg!4)
遍历cpy后为什么数组顺序乱了,为什么第一次互换把第一个字符串给替换了,且strcmp函数输出也不对
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
- c巴拉巴拉 2024-04-10 16:19关注
因为,指针tmp里面存储的是第一个元素地址,它本身没有独立空间,在cpy时将当前p[j]]字符cpy到第一个元素地址,所以没有达到预期结果
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 遥感植被物候指数空间分布图制作
- ¥20 Github上传代码没有contribution和activity记录
- ¥20 SNETCracker
- ¥15 数学建模大赛交通流量控制
- ¥15 为什么我安装了open3d但是在调用的时候没有报错但是什么都没有发生呢
- ¥50 paddleocr最下面一行似乎无法识别
- ¥15 求某类社交网络数据集
- ¥15 靶向捕获探针方法/参考文献
- ¥15 很抱歉出现错误word不能启动(24),如何解决?
- ¥15 javascript下载网络图片