编写一个函数reverse_string(char* string)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中的字符串操作函数。
由于要求不能使用字符串操作函数那么自然想到利用指针变量和地址来进行反转
源代码:
#include <stdio.h>
int reverse_string(char * string)
{
int len=0;
int i;
char *p;
char *q;
char temp;
p=string; //p指向字符数组的首地址
while(*p!='\0') //计算字符数组的长度
{
len++;
p++;
}
q=p-1; //q指向末地址
p=string; //由于p的值已经改变所以要重新将数组的首地址赋值给p
for(i=0;i<=len/2;i++) //进行字符交换
{
temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
return 0;
}
int main()
{
char a[]="abcdefghi";
reverse_string(a);
printf("%s",a);
return 0;
}
小结:1.在第一遍的时候求字符数组长度的时候我用了strlen函数,实际上在C语言中并不能使用这个函数来求长度,所以我写了一个循环来求其长度。
2.第一次在求长度的时候我没有写p++,在外面直接将len-1赋值给了q;但在编译的时候报出这样的错误
不能将一个值赋值给指针地址