字符串反向错误

use*_*004 -1 c++ string

任何人都可以向我解释为什么我得到一个".exe遇到问题并需要关闭"错误,它有时编译和工作当我摆弄char数组,但当它工作时我有时会得到奇怪的字符在结束时串.

    #include <iostream>
using namespace std;
char* StrReverse3(char*);
char* StrReverse3(char* str)
{
    char *p;

    int length=0,start=0,end=0;
    length=strlen(str);

    for(start=0,end=length-1;end>= 0,start<=length-1;end--,start++)
    {
        p[start]=str[end];
    }   


    return p;
}
int main()
{
  char str[100]="Saw my reflection in snow covered hills";
  StrReverse3(str);

cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 6

你没有初始化p.这是你正在写的未初始化的指针.

既然你是用C++编写的,而不是C语言,我建议使用std::stringstd::reverse:

#include <string>
#include <algorithm>
#include <iostream>

int main()
{
    std::string str = "Saw my reflection in snow covered hills";
    std::reverse(str.begin(), str.end());
    std::cout << str;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

sllih derevoc wons ni noitcelfer ym waS

看到它在ideone上在线工作