首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

大侠,一个递归调用的字符串逆序有关问题,在X86上和ARM上运行结果不同的有关问题

2012-09-20 
请教各位大侠,一个递归调用的字符串逆序问题,在X86下和ARM下运行结果不同的问题这是我的程序,其实就是一个

请教各位大侠,一个递归调用的字符串逆序问题,在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);} 

热点排行