C语言 交换两个不同长度的字符串指针 定义交换两个不同长度的字符串指针

如题所述

长度不同,两者存放单元的个数应当都大于 最长的字符串,否则交换以后 存不下,会出错。
#include <stdio.h>
#include <stdlib.h>
void jh(char *p1, char *p2){
char *t;
int i,L;
L = strlen(p1);
if (strlen(p2) > L) L = strlen(p2);
t = (char *) malloc(sizeof(char) * L);
strcpy(t,p1);strcpy(p1,p2);strcpy(p2,t); // 交换
}
main(){
char s1[100]="abc", s2[100]="1234567"; // 实际允许存放量必需足够大
printf("%s %s \n",s1,s2);
jh(s1,s2);
printf("%s %s \n",s1,s2);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-10
void swapStr(char *str1, char *str2) //交换str1 和str2指向的字符串
{
char *p1,*p2,c;
while(*p1 != '\0' && *p2 !='\0'){
c=*p1;
*p1=*p2;
*p2=c;
p1++;
p2++
}

if(*p1=='\0'){
if(*p2 =='\0')return;
c=*p2;
*p2++='\0';
*p1++=c;
while(*p2 !='\0'){*p1=*p2; p1++; p2++;}
*p1='\0';
}
else {
c=*p1;
*p1++='\0';
*p2++=c;
while(*p1 !='\0'){*p2=*p1; p1++; p2++;}
*p2='\0';
}

}追问

长度不同啊!1

追答

是不同啊,把剩下的COPY过去就行了嘛。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网