实现:将参数字符串中的字符反向排列,
要求:不能使用C函数库中的字符串操作函数。
#include <stdio.h>
#include <assert.h>
char * reverse_string(char *string)
{
char ch;
char *ret = string;
assert(string != NULL);
while(*string != '\0')
{
string++;
}
for(; string-1>ret; string--,ret++)
{
ch = *(string-1);
*(string-1) = *ret;
*ret = ch;
}
return ret;
}
int main ()
{
char b[] = "ABCDEF";
reverse_string(b);
printf("%s\n",b);
return 0;
}
(1)函数先创建一个指针变量ret存放string首元素地址,
(2)while循环执行后,string指向’\0’,注意此时ret的指向没有改变。
(3)在for循环中,用字符串最后一个元素的地址和首地址元素作比较,前者大于后者,则创建一个变量用来交换最后一个元素和首元素。依次类推。直到两元素地址相同结束循环。