字符串逆序是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 = '\0';
printf("%s\n", 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\n", src);
return 0;
}