C++问题求解,利用指针,编写一个函数将字符串反序在主函数中调用该函数将用户输入的一个字符串反序输出

下面哪里错了

#include<iostream>
#include<string.h>
using namespace std;

void fun(char *str)
{
char *a,*b,c;
char *a=str;
char *b=str+strlen(str);
for(;a<=b;a++,b--)
{
c=*a;
*a=*b;
*b=c;
}
}

int main()
{
char str[100];
cin>>str;
fun(str);
cout<<str<<endl;
return 0;
}
调试没错,就是没有输出

第1个回答  2014-03-19
char *a=str;
char *b=str+strlen(str);
这两句的语法错了,重复声明了两个指针的类型,str的指针顺序你给改过来了,你是想通过这个顺序改变字符串的输出顺序,但是a,b在这里是局部变量,没有改变str的顺序,甚至最后str都没有输出结果,建议把a,b改为全局变量后再继续你的思路做追问

我这个程序没有输出怎么回事??

追答

调用方法的时候需要返回值,并且接收才可以,这些这段代码里都没有,所以输出的是空

本回答被提问者采纳
第2个回答  2014-03-18
char *b=str+strlen(str);

这句错了,应该是
char *b=str+strlen(str)-1;

str+strlen(str);指向的是字符串最后一个字符的下一个位置,也就是'\0'的位置
例如字符串str = "abc",strlen(str)=3

'a' 'b' 'c' '\0'
str +1 +2 +3本回答被网友采纳
第3个回答  2014-03-18
基础