面试的一个简单的字符串操作竟然搞错了 唉 自省中。。。
#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);
}