2011-05-02 106 views
4

可能重複:
Getting Segmentation FaultString allocation seg fault - 爲什麼會發生這種情況?

/* Reverse a string in place 
*/ 
#import <stdio.h> 

void reverse(char * str); 

int main() 
{ 
    char * string = "This is a string."; 
    printf("%s\n", string); 
    reverse(string); 
    printf("%s\n", string); 
} 

void reverse(char * str) 
{ 
    char * start = str; 
    char * end = str; 
    if(0==*str) 
     return; 

    //Find the end 
    for(;0 != *(++end);); 

    end--; 
    do 
    { 
     *end = *end^*start; 
     *start = *end^*start; 
     *end = *end^*start; 
    }while(++start < --end); 
} 

我不知道爲什麼這賽格故障。是因爲我用一個常量字符串初始化我的char *?

+0

這在這個重複的問題中被廣泛地覆蓋。 – 2011-05-02 05:42:23

回答

6

您正試圖修改字符串常量。替換:

char * string = "This is a string."; 

char string[] = "This is a string."; 

來補救。

+0

該死的,我知道這是愚蠢的。 – 2011-05-02 06:01:16

相關問題