[英]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.