String使用指针进行反转

时间:2015-02-03 11:55:36

标签: c arrays pointers for-loop

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

#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;

}

1 个答案:

答案 0 :(得分:1)

你的问题是双重的。

首先,您在第一个;循环后错过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--)

注意:恕我直言,你做一件简单的事情太复杂了。想一个更简单的逻辑。有许多。对于 live 示例,请按照WhozCraig先生的评论中的链接进行操作。