把源码先贴上,
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int mylen(char*str);
char*fanzhuan(char*str);
char* fanzhuan(char* str)
{
char*first = str;
char*last = str + mylen(str) -1;
// char*last = str + strlen(str) -1;
char temp;
while(first < last)
{
temp = *first;
*first = *last;
*last = temp;
first++;
last--;
}
return str;
}
int mylen(char *str)
{
if(str==NULL)
return 0;
int len = 0;
while(*str !='\0')
{
len++;
str++;
}
return len;
}
int main()
{
char o[] = "abcedfg";
char *str = o;
str= fanzhuan(str);
printf("%s\n",str);
return 0;
}
刚开始写的时候main函数中的前两句是这样的,char×str=“abcedfg”,编译的时候没问题,但运行有问题,找了好久没想明白,后来发现在×first=×last这句中有问题,如果是原来那样的话,它相当于‘a’=‘g’,相当于给常量赋值,改成现在的做法后,他相当与o[0]=o[7];是给变量赋值,所以可以运行。
我是这样以为的,有不对的地方请多指教。