程序来反转一个字符串

时间:2013-01-24 15:34:02

标签: c

我是C的初学者。我正在尝试这个程序来反转一个字符串。任何帮助有什么不对吗?

#include<stdio.h>
#include<string.h>

char *reverse(char *);

void main()
{
    char str[]="kundan";
    int len=strlen(str);
    char *ptr;
    ptr=reverse(str);
    printf("the reversed string is :%s",ptr);
}

char *reverse(str)
{
    char *rtr=str;
    char qtr[10];

    for(int i=len-1;i<=0;i--)
    {
        qtr=rtr+i;
        qtr++;
    }
    return qtr;
}

1 个答案:

答案 0 :(得分:2)

您不尊重变量scope。关于此问题的一个有用的参考,here

例如,在reverse()中,您引用len循环中的for。但是,len中定义了main,因此reverse()无法使用reverse()(这甚至可以编译吗?)

main()返回的值是指向堆栈值的指针,该堆栈值仅在该函数的范围内。虽然调用函数reverse()将以有效指针结束,但当{{1}}返回时,指针引用的信息已超出范围,因此 volatile ,可能会有变化。对于这个简单的示例,您可以按值返回反转的字符串,而不是通过引用。 (发送回字符数组,而不是指向它们的指针。)