C字符串交换

面试的一个简单的字符串操作竟然搞错了  唉  自省中。。。


#include<stdio.h>

#include<string.h>
void change(char str1[],char str2[])
{
char temp;
int len1 = 0;
int len2 = 0;
while(str1[len1]!='\0'){
len1++;
}
while(str2[len2]!='\0'){
len2++;
}


    printf("%d,%d\n",len1,len2);


  if(len1<3||len2<3)
{
  printf("长度不够3\n");
}
if(str1[2]>str2[2])
{//数组交换
int x = len1>=len2?len2:len1;
for(int i=0;i<x;i++)
{
temp = str1[i];
str1[i] = str2[i];
str2[i] = temp;
}
if(len1>=len2) // 
{
while(x<len1)
{
str2[x] =str1[x++];
}
str2[len1] = '\0';
str1[len2] = '\0';

}else
{
   while(x<len2)
{
str1[x] =str2[x++];
}
str2[len1] = '\0';
str1[len2] = '\0';
}
    }
}




void main()
{
char str1[150];
char str2[150];
printf("输入两字符串\n");
gets(str1);
gets(str2);
printf("改变之前\n");
    printf("%d\n",strlen(str1));
printf("%d\n",strlen(str2));
printf("str1 = %s\n",str1);
printf("str2 = %s\n",str2);
change(str1,str2);
printf("改变之后\n");
    printf("str1 = %s\n",str1);
printf("str2 = %s\n",str2);

}


-------------------------------------------------分割线 --------------------------------------------------------------------------

#include <stdio.h>
#include <string.h>


void SwapPointer(char *p,char*q)  
{  
   char temp,i;  
   int n1=strlen(p);  
   int n2=strlen(q);  
   
   if(n1>n2)  
   {  
       for(i=0;i<n2;i++)  
       {  
           temp=p[i];  
           p[i]=q[i];  
           q[i]=temp;  
       }
  
       for(i=n2;i<n1;i++)  
       {  
           q[i]=p[i];  
           p[i]='\0';  
       }
      q[n1] = '\0';
   }  
   else  
   {  
        for(i=0;i<n1;i++)  
       {  
           temp=p[i];  
           p[i]=q[i];  
           q[i]=temp;  
       }  
       for(i=n1;i<n2;i++)  
       {  
           p[i]=q[i];  
           q[i]='\0';  
       }
  p[n2] = '\0';
   }  

 
void main()
{
char str1[150];
char str2[150];
printf("输入两字符串\n");
gets(str1);
gets(str2);
printf("改变之前\n");
    printf("%d\n",strlen(str1));
printf("%d\n",strlen(str2));
printf("str1 = %s\n",str1);
printf("str2 = %s\n",str2);
SwapPointer(str1,str2);
printf("改变之后\n");
    printf("str1 = %s\n",str1);
printf("str2 = %s\n",str2);
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值