字符串内容交换在某些地方还是较为常见的。
void SwapPointer(char *p,char*q)
{
char temp;
int n1=strlen(p);
int n2=strlen(q);
if(n1>n2)
{
for(int i=0;i<n2;i++)
{
temp=p[i];
p[i]=q[i];
q[i]=temp;
}
for(int i=n2;i<n1;i++)
{
q[i]=p[i];
p[i]='\0';
}
}
else
{
for(int i=0;i<n1;i++)
{
temp=p[i];
p[i]=q[i];
q[i]=temp;
}
for(int i=n1;i<n2;i++)
{
p[i]=q[i];
q[i]='\0';
}
}
}
char s1[]="dddffff";
char s2[]="qweeeee";
此种是可以的,将字符串内容赋值给s1,s2所指空间中,相当于副本,因而其内容是可以改变的。
char *s1="dddffff";
char *s2="qweeeee";
以上就不行,将常量字符串的地址赋给s1和s2,其内容是受保护的。可用以下函数:
void SwapStr(char **str1,char** str2)
{
char* temp=*str1;
*str1=*str2;
*str2=temp;
}
如果考虑一般情况,可用c++语言里string.swap()函数操作,大大简化操作步骤。
char* s="as,12,er,weeee,qwe";
char* s1="ddddddddd";
char s2[]="asxcvgtd";
char* s3[2]={"qqqqq","tttttt"};
string ss(s);
string ss1(s3[0]);
ss.swap(ss1);
s=(char*)ss.c_str();
s1=(char*)ss1.c_str();