可能重複:
What is the difference between char s[] and char *s in C?
Why does this program give segmentation fault?總線錯誤10
這裏是代碼:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void reverse(char *c){
int len = strlen(c);
char tmp;
int i;
for(i = 0; i < len; i++){
tmp = c[len-1-i];
c[len-1-i] = c[i];
c[i] = tmp;
}
}
int main(){
char *s = "antonio";
//printf("%zd\n", strlen(s));
reverse(s);
printf("%s\n", s);
return 0;
}
的問題是反向(字符* c),它採取了一個字符串廣告相反,但我不明白它在哪裏g錯了。
你試圖修改字符串文字。這是未定義的行爲,通常會崩潰。 –
你沒有使用你的編譯器警告和/或注意它們。再次編譯代碼,並啓用所有警告,並確保您瞭解編譯器告訴您的所有內容。自動化工具可以在您需要尋求幫助之前爲您提供很長的路要走! –
@KerrekSB我沒有收到任何警告,我會看到如何啓用我的編譯器的所有警告。 – AR89