我一直在尝试编写基本字符串反转的代码。下面的代码似乎有一些基本的指针问题,因为它给出了以下错误,但我无法弄明白:
1 [main] reversestring 9748 cygwin_exception :: open_stackdumpfile:将堆栈跟踪转储到reversestring.exe.stackdump RUN FAILED(退出值35,584,总时间:216ms)
我已经包含了注释代码,只是为了使程序有意义。使用注释执行代码时会发生错误。
#include <cstdlib>
#include <cstdlib>
#include <iostream>
#include <string.h>
using namespace std;
int main(int argc, char** argv) {
char *myString = "Hello World!";
char temp;
int len = strlen(myString);
char * strPtr = myString;
char * endPtr = myString + len-1;
//while (strPtr < endPtr){
temp=*endPtr;
//*endPtr=*strPtr;
*strPtr=temp;
// strPtr++;
// endPtr--;
//}
// cout << myString;
return 0;
}
答案 0 :(得分:1)
执行:char *myString = "Hello World!";
时,您要将常量字符串分配给myString
,并且无法修改常量字符串。
你可以这样做:
char myString[] = "Hello World!";
这将分配一个足够大的字符串来包含“hello world!”然后编译器将该字符串复制到您的字符串中。现在可以修改该字符串。