簡體   English   中英

使用指針反向字符串

[英]String reverse using pointers

我正在嘗試使用指針反轉字符串。當我嘗試打印反轉的字符串而不是獲取DCBA時,我僅以BA身份退出?有人可以幫我嗎?

#include<stdio.h>
void reverse(char *);
void main()
{
  char str[5] = "ABCD";
  reverse(str);
}

void reverse(char *str)
{
  char *rev_str = str;
  char temp;
  while(*str)
      str++;
  --str;

  while(rev_str < str)
  {
      temp = *rev_str;
      *rev_str = *str;
      *str = temp;   
      rev_str++;      
      str--;
  }
  printf("reversed string is %s",str);
}

您將失去指向字符串開頭的指針,因此,在打印輸出時,您不是從第一個字符開始,因為str不再指向第一個字符。 只需放置一個占位符變量以保持指向字符串開頭的指針。

void reverse(char *str)
{
  char *begin = str; /* Keeps a pointer to the beginning of str */
  char *rev_str = str;
  char temp;
  while(*str)
      str++;
  --str;

  while(rev_str < str)
  {
      temp = *rev_str;
      *rev_str = *str;
      *str = temp;   
      rev_str++;      
      str--;
  }
  printf("reversed string is %s\n", begin);
}
char* strrev(chr* src)
{      
       char* dest
       int len=0, index=0 , rindex=0;

       while(*(src+len) != '\0')
       { len++ }

       rindex=len-1;

       while(rindex > =0)
       {
           *(dest+index) = *(src + rindex)
            index++;
            rindex--;
       }

      *(dest+index) = '\0';


return dest;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM