jkjkre 2019-02-23 20:25 采纳率: 100%
浏览 2218
已采纳

c语言:输入3个字符串,按由小到大的顺序输出,为什么输出有问题

#include <stdio.h>
#include <string.h>
int main(){
void change(char *,char *);
char a[]="you";
char b[]="love";
char c[]="l";
    if(strcmp(a,b)>0)change(a,b);
    if(strcmp(a,c)>0)change(a,c);
    if(strcmp(b,c)>0)change(b,c);
    printf("%s%s%s",a,b,c);
    return 0;
}

void change(char *p1,char *p2){
    char p[50];
    strcpy(p,p1);
    strcpy(p1,p2);  
    strcpy(p2,p);       
}

输出结果为:l love 为什么少了you???

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-02-24 00:04
    关注

    函数申明没有问题,只是这种写法有些老,不建议这么写。
    char a[]="you";
    char b[]="love";
    char c[]="l";
    这里字符串的长度是固定的,a是4,b是5,c是2,当你change的时候,c容纳不下a或者b,b容纳不下a
    你可以
    char a[5]="you";
    char b[]="love";
    char c[5]="l";

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料