2013-05-07 101 views
0

我想寫一個簡單的反向字符串程序並獲得上述錯誤。我無法理解我做錯了什麼。未處理的異常在訪問衝突寫入位置

void reverse(char *str) { 
char *end, *begin; 
end = str; 
begin = str; 

while (*end != '\0') { 
    end++; 
} 

    end--; 

char temp; 

while (begin < end) { 
    temp = *begin; 
    *begin++ = *end; //This is the line producing the error 
    *end-- = temp; 
} 
} 

void main() { 
char *str = "welcome"; 
reverse(str); 
} 

需要你的幫助。謝謝。

回答

1

您正試圖修改字符串常量,這是不確定的行爲。這將是main宣佈str的一個有效的方式,如果你想修改:

char str[] = "welcome"; 

而且,你要分配endstr開始,然後你這樣做:

end--; 

它將指針遞減到分配給字符串的內存之前,這是未定義的行爲。我的猜測是你的意思是這樣:

end = str+ (strlen(str)-1); 
+0

對不起,我忘記複製一些代碼,現在我會更新它(前end--) – 2013-05-07 03:56:13

+0

你的解決方案幫助。我必須以這種方式初始化字符串,並且程序起作用。謝謝。 – 2013-05-07 05:18:06

相關問題