读书人

大侠一个递归调用的字符串逆序有关问

发布时间: 2012-09-20 09:36:50 作者: rapoo

请教各位大侠,一个递归调用的字符串逆序问题,在X86下和ARM下运行结果不同的问题
这是我的程序,其实就是一个使用递归调用来实现字符串逆序的程序。
程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char * myreverse(char * name,unsigned left,unsigned right)
{
if(left >= right)
{
printf("name:%s\n",name);
printf("address of name: %x\n",name);
return name;
}
char tmp;

tmp = name[left];
name[left++] = name[right];
name[right--] = tmp;

myreverse(name,left,right);
}


int main(int argc,char **argv)
{
char name[100]="";
char * p = NULL;
strcpy(name,argv[1]);

printf("main: address of name %x\n",name);
p = myreverse(name,0,strlen(name)-1);
printf("p: %x\n",p);
printf("result:%s\n",p);
return 0;

}
这是我在X86下编译和运行的结果
cc recure.c -o recure
./recure william
main: address of name bf9eeb44
name:mailliw
address of name: bf9eeb44
p: bf9eeb44
result:mailliw
结果是正确的。

但是我在开发板上运行的结果却总是不正确:
这是我在arm开发板上编译和运行的结果:
arm-hismall-linux-gcc recure.c -o recure
\cp recure /tmp/nfs/
./recure william
main: address of name beb55d60
name:mailliw
address of name: beb55d60
p: 4005c668
result:板
我试过很多方法:但是仍然没有定位到问题出在哪里?
请教各位高手能给我指点迷津,不胜感激!

[解决办法]

C/C++ code
char * myreverse(char * name,unsigned left,unsigned right){  if(left >= right)  {  printf("name:%s\n",name);  printf("address of name: %x\n",name);return name;    }  char tmp;      tmp = name[left];  name[left++] = name[right];  name[right--] = tmp;  myreverse(name,left,right);} 

读书人网 >C语言

热点推荐