问题-要使用指针反转字符串,
但是我的代码不是打印反向字符串,而是打印字符串的第一个字母。

#include<stdio.h>

int main()
{
    int i;
    char n[100];
    char *ptr;
    ptr = n;
    char a[100];
    char *sptr;
    sptr = a;
    scanf("%s", n);

    for(i=0;n[i]!=0;i++)//Calculating the size of the string
        for(;(*sptr=*(ptr+i))!='\0';sptr++,ptr--)
        {
            ;
        }
    printf("%s",a);
    return 0;

}

最佳答案

您的问题是双重的。

首先,在第一个;循环之后您缺少了for

for(i=0;n[i]!=0;i++); //note the ;


其次,您使用的数组索引超出范围

for(;(*sptr=*(ptr+i))!='\0';sptr++,ptr--)


您需要先减少i才能使用它。

你应该写

for(;(*sptr=*(ptr+i-1))!='\0';sptr++,ptr--)


注意:恕我直言,您使简单的事情变得过于复杂。想一想更简单的逻辑。有许多。有关实时示例,请遵循WhozCraig先生的评论中的链接。

09-10 00:49