这个C程序如何使用指针反转字符串?

Bio*_*ock 0 c

你能不能一步一步地向我解释这个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)

PMF*_*PMF 6

魔术就在这个循环中:

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)

实际上,相当直接.