程序反转字符串

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

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

你不尊重变量scope 。 这里有一个有用的参考。

例如,在reverse() ,在for循环中引用len 。 但是, lenmain定义,因此不能用于reverse()(这甚至可以编译吗?)

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