首页 > 电脑

将/*处用函数代替无法运行

更新时间2019-03-31 16:31:13

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main(void){

int i,j;

char *color[5]={"red","blue","black","green","yellow"},*t;

t=(char *)calloc(10,sizeof(char));

for(i=0;i<5;i++){

for(j=i+1;j<5;j++){

if(strcmp(color[i],color[j])>0)

{

/*

strcpy(t,color[i]);

strcpy(color[i],color[j]);

strcpy(color[j],t);

*/            t=color[i];/*-------------------------------

               color[i]=color[j];

                color[j]=t;

}

}

printf("%s ",color[i]);

}

return 0;

}


你用指针t直接赋值,并不会交换(改变)原串的内容的

而你strcpy,明确要改写数据的内容

问题是你的数组长度不等,若将“yellow”赋给“red”

明显装不下,下标溢出了,所以你的指针方法不适合长度不等的数据

改为

   char  color[5][10]= {"red","blue","black","green","yellow"},*t;

肯定没有问题了

上一篇:语言训练的基本内容是什么?

下一篇:wps日期排序不了