实现字符串数组中字符串交换

实现字符串数组中字符串交换

2015-06-01  青岛  张俊浩 

《实现字符串数组字符串交换》分为三部分:

1】论坛帖子

2】代码思路

3】代码、运行结果 

1.论坛帖子

                           技术分享

2.代码思路

(1)两个字符串等长正常交换即可;

(2)两个字符串不等长交换短字符串宽度的字符数据(包括结束符),拷贝长字符剩余字符到短字符串数据区(此时长字符串剩余数据还在内存只是被结束符\0分割)。

3.代码、运行结果

#include<stdio.h>
void swap(char *a,char *b) 
{
	char temp = -1;

	do{
       temp = *a;
       *a = *b;
	   *b = temp;

	   ++a;
	   ++b;
	}while(*a != '\0' && *b != '\0');//遇到两者之一结束时,终止交换

	if(*a =='\0'){//此时结束符未交换位置,说明字符串a先结束,只把字符串b剩余部分拷贝到字符串a位置就好
	   temp = *a;
       *a = *b;
	   *b = temp;//交换结束符

	   ++a;
	   ++b;

		do{
			*a++ = *b++;
		}while(*b != '\0');//拷贝b剩余字符(结束符未拷贝)
		*a = *b;//拷贝结束符
	}
	else{//此时结束符未交换位置,说明字符串b先结束,只把字符串a剩余部分拷贝到字符串b位置就好
	   temp = *b;
       *b = *a;
	   *a = temp;//交换结束符

		do{
			*b++ = *a++;
		}while(*a != '\0');//拷贝a剩余字符(结束符未拷贝)
		*b = *a;//交换结束符
	}

}
void main()
{
  char a[][7]={"foo","bar","foobar"};
 	printf("old:%-6s\t%-6s\t%-6s\n",a[0],a[1],a[2]);
    swap(a[0],a[2]);
	printf("new:%-6s\t%-6s\t%-6s\n",a[0],a[1],a[2]);
}
                            技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。