实现字符串数组中字符串交换
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]); }
时间: 2024-11-06 20:32:49