字符串反转在面试过程中经常被涉及,所以写一个简单的字符串倒序。
功能实现:
将字符串:“hello,world”倒序,变成“dlrow,olleh”。
以下写出两种方法实现:
方法一:用两个指针s 和 d 进行字符串头尾的交换 。
代码实现:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *src="hello,world";
printf("倒序前的顺序为:%s\n",src);
int len=strlen(src);
char *dest=(char *)malloc(len+1);//申请内存+1,用于为\0分配空间
char *d=dest;
char *s=&src[len-1]; //指向src最后一个字符
while(len-- != 0)
*d++ = *s--; //将src的字符从末尾写进dest中
*d = 0; //尾部要加\0
printf("倒序后的顺序为:%s\n",dest);
free(dest); //释放空间,以免内存泄漏
return 0;
}
方法二:第二个方法简单一些,利用数组实现倒序。
代码实现:
#include <stdio.h>
#include <string.h>
int main()
{
char str[]="hello,world";
printf("倒序前的顺序为:%s\n",str);
int len=strlen(str);
for(int i=0;i<=len/2;i++)
{
char t=str[i];
str[i]=str[len-i-1];
str[len-i-1]=t;
}
printf("倒序后的顺序为:%s\n",str);
return 0;
}