将/*处用函数代替无法运行
#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日期排序不了
上一篇:语言训练的基本内容是什么?
热门标签: