2015-11-08 18 views
0

我一直在試圖編寫基本的字符串反轉代碼。似乎有一些基本指針問題用下面的代碼,因爲它提供了以下錯誤,但我無法弄清楚:我的指針有什麼問題(open_stackdumpfile錯誤)?

1 [主] reversestring 9748 cygwin_exception :: open_stackdumpfile:轉儲堆棧跟蹤reversestring。 exe.stackdump運行失敗(退出值35,584,總時間:216毫秒)

我已經包含了評論的代碼只是爲了使程序有意義。代碼與註釋一起執行時發生錯誤。

#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

Olaf:是什麼讓這個C++代碼而不是C代碼? – ABD

回答

1

當你這樣做:char *myString = "Hello World!";您正在分配字符串常量myString,和字符串常量不能被修改。

你可以這樣做:

char myString[] = "Hello World!"; 

這將分配一個字符串,它是足夠大,以包含「世界,你好!」然後編譯器將該字符串複製到您的字符串中。現在可以修改該字符串。