我想學習C的基礎知識,但我無法弄清楚爲什麼這段代碼不起作用。 reverse()中的while循環會導致總線錯誤。我在編程面試書中發現了幾乎完全相同的代碼作爲一個有效的解決方案,但是這些或者其他類似的方法我都沒有在這裏發佈過,但沒有發生總線錯誤。In-Place String Reverse in C
#include <stdio.h>
void reverse(char* str) {
char* end = str;
char tmp = 0;
if(str) {
while(*end) {
end++;
}
--end;
while(end>str) {
tmp = *end;
*end-- = *str;
*str++ = tmp;
}
}
}
int main() {
char* a = "12";
puts(a);
reverse(a);
puts(a);
return 0;
}
見http://stackoverflow.com/questions/4493139/are-string-literals-const等諸多問題(如至少每週一次)對SO。 – ephemient 2011-01-24 19:05:26