你能不能一步一步地向我解释这个C程序的算法,用指针反转一个字符串?
#include <stdio.h>
int main()
{
char str[50];
char rev[50];
char *sptr = str;
char *rptr = rev;
int i=-1;
printf("Enter any string : ");
scanf("%s",str);
while(*sptr)
{
sptr++;
i++;
}
while(i>=0)
{
sptr--;
*rptr = *sptr;
rptr++;
--i;
}
*rptr='\0';
printf("Reverse of string is : %s",rev);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
魔术就在这个循环中:
while(i>=0) // while there are more letters... (i was previously set to the number of letters)
{
sptr--; // decrement source pointer (points to end of source string
*rptr = *sptr; // copy char
rptr++; // increment target pointer
--i; // decrement number of chars remaining
}
Run Code Online (Sandbox Code Playgroud)
实际上,相当直接.