2012-01-24 36 views
0

這裏我給輸入字符串這樣"/org/bluez/1509/hci0"獲取分段錯誤

,我想這樣的/org/bluez/1509/hci0

輸出在這裏,我用這個方法,但我得到了分段故障。這樣

length 22 
String 1 = /org/bluez/1509/hci0" 
Segmentation fault 

問題的最後「字

void main() 
{ 
    char *str = "\"/org/bluez/1509/hci0\""; 
    int len = strlen(str); 
    printf("\nlength %d\n",len); 
    char *str1; 
    str1 = str+1; 
    printf("String 1 = %s\n",str1); 
    *(str1+ (strlen(str)-2)) = '\0'; 
    printf("\nString 1 = %s\n",str1); 
} 

我得到的輸出。

任何機構可以幫我或給我建議新的方式?

+1

字符串文字不可修改。嘗試將其複製到數組中:'char str [] =「\」/ org/bluez/1509/hci0 \「」;'。 'main'也返回一個整數;如果你想要C89兼容性(也需要在任何代碼語句之前聲明所有變量),那麼改變'void',並添加一個'return 0;'。 – pmg

+0

我建議改變'*(str1 +(strlen(str)-2))='\ 0';'str1 [strlen(str1) - 1] ='\ 0';' – Lundin

回答

4

使用

char str[] = "\"/org/bluez/1509/hci0\""; 

而不是一個指針。指針只能「指向」不可修改的字符串文字。你可以閱讀更多關於這個in this question和其他許多類似的東西。它甚至在c-faq,看看它!

+0

它也給出錯誤 – user1089679

+0

ya works..Thanks – user1089679