字符串逆序是C语言编程的基本操作之一,这里讨论两种字符串逆序的方式:
1、申请空间法
#include "stdio.h" #include "string.h" #include "stdlib.h" int main() { char* src = "abcd"; char* dest = NULL; int len = strlen(src); dest = (char*)malloc(len + 1); char* d = dest; char* s = &src[len - 1]; while(len--) { *d++ = *s--; } *d = ' '; printf("%s ", dest); free(dest); dest = NULL; return 0; }
2、内部替换法
这种方法不用额外申请内存,并且数据循环次数减半,效率更高
#include "stdio.h" #include "string.h" int main() { char src[] = "abcd"; int len = strlen(src); int i = 0; char temp; //临时变量 for(i = 0; i < len/2; i++) { temp = src[i]; src[i] = src[len - i - 1]; //这里要注意,数组下标是以0开始的 src[len - i - 1] = temp; } printf("%s ", src); return 0; }