翻转字符串

来源:互联网 发布:js弹出输入框 并取值 编辑:程序博客网 时间:2024/04/29 16:24

#include<stdio.h>
/*
**翻转字符串

*/
void reverse_string(char *string)
{
 char* last_char;           //指向最后一个字符的位置;
 
 for(last_char=string;*last_char!='/0';last_char++)
  ;
 last_char--;
 while(string<last_char )

{
        char temp

        temp=*string;
       *string++=*last_char;
        *last_char--=temp;
 }
}
int main()
{
 char  str[]="error help!";/*不能写成char *str="error help!";*/
               
 
 reverse_string(str);     
 printf("%s/n",str);

 return 0;
}


catamount3000:

"error help!"

这是一个不可改变的常字符串
char p[]="error help!"==>char p[12]={'e','r','r','o',...,'!','/0'};
可以看出char p[]申请了12个字节的空间,然后将常字符串一个一个的复制到这个空间内. 由于这个空间属于我们的,所以我们可以任意在这个空间内进行操作
char *p="error help!";
   p是一个地址变量,它专门用来保存地址值的,它不是保存数据的,这条语句是将常字符串的地址保存到p里面.

/****************用递归做此题****************/

void reverse(char *s)
{
    char *p,temp;
    static int i=0,,j=0;  //用静态变量控制字符串的移动;

    if(*(s+i)=='/0')       //递归结束条件;
        return;
    else
    {
        p=s+i;
        temp=*p;         //递归压栈abcde;
        i++;
        reverse(s);    
    }
    if(j<i)
    {
        *(s+j)=temp;     //出栈edcba;
        j++;
    }
}
int main()
{
    char s[]="abcde";

    reverse(s);
    printf("%s/n",s);
    return 0;
}

原创粉丝点击