1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 指针写字符比较c语言 利用指针进行字符串大小比较出现的问题

指针写字符比较c语言 利用指针进行字符串大小比较出现的问题

时间:2019-07-24 19:29:55

相关推荐

指针写字符比较c语言 利用指针进行字符串大小比较出现的问题

void sort(char *str1,char *str2,char *str3),在你的这个函数中,假如你输入的是ooo aaa bbb

你经过比较转换后,其中指针str1和str4都指向了ooo存储位置的首地址,同样的str2与str6指向了aaa

的首地址,str3和str5指向了bbb的首地址,因此你在进行复制的时候在str1中写入aaa后,原来存入的ooo就被覆盖了,因此输出不了ooo

你应该直接在void sort(char *str1,char *str2,char *str3)中输出,如下

#include

void sort(char *str1,char *str2,char *str3);//字符串大小比较的函数

//void copyarray(char *strsrc,char* strdet);//字符串赋值的函数

int main()

{

char str1[255],str2[255],str3[255];

printf("please input string:");

scanf("%s%s%s",str1,str2,str3);

sort(str1,str2,str3);//调用字符串大小比较的函数

// printf("min:%s\nmiddle:%s\nmax:%s\n",str1,str2,str3);//将字符串按从小到大输出

return 0;

}

void sort(char *str1,char *str2,char *str3) //字符串大小比较函数的函数体,利用指针来进行对字符数组的接收

{

int i=0;

char *str4,*str5,*str6;//三个字符指针,存放字符串首地址,str4存放最大的,str6存放最小的,str5为中间的

for(i=0;;i++)//for循环,从字符串的第一个字符开始比较

{

if(str1[i]>str2[i])

{

if(str2[i]>str3[i])

{

str4=str1;

str5=str2;

str6=str3;

break;

}

else

if(str1[i]>str3[i])

{

str4=str1;

str5=str3;

str6=str2;

break;

}

else

{

str4=str3;

str5=str1;

str6=str2;

break;

}

}

else

{

if(str1[i]>str3[i])

{

str4=str2;

str5=str1;

str6=str3;

break;

}

else

if(str2[i]>str3[i])

{

str4=str2;

str5=str3;

str6=str1;

break;

}

else

{

str4=str3;

str5=str2;

str6=str1;

break;

}

}

}

printf("min:%s\nmiddle:%s\nmax:%s\n",str6,str5,str4);

str1=str6;

str2=str5;

str3=str4;

printf("min:%s\nmiddle:%s\nmax:%s\n",str1,str2,str3);//将字符串按从小到大输出

//copyarray(str6,str1);//调用字符串复制函数将最小的字符串拷贝给str1;

// copyarray(str5,str2);//将中间的字符串拷贝给str2;

// copyarray(str4,str3);//将最大的字符串拷贝给str3;

}

/*void copyarray(char *strsrc,char *strdst)//复制函数,strsrc为要复制的,strdst为接收复制内容的;

{

int i=0;

for(i=0;;i++)

{

strdst[i]=strsrc[i];

if(strsrc[i]=='\0')//到达字符串最后拷贝结束

{

break;

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。