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

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";

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

报告相同问题?