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个回答

函数申明没有问题,只是这种写法有些老,不建议这么写。
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";

jkjkre
jkjkre 明白了,超级感谢
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐