在字符串操作中获取分段错误

时间:2012-01-24 12:30:53

标签: c string

这里我给出了像"/org/bluez/1509/hci0"

这样的输入字符串

我想要输出/org/bluez/1509/hci0

这里我使用这种方法,但我得到了分段错误。

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);
}

我正在获得这样的输出

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

最后一个问题的问题。

任何人都可以帮助我或建议我新的方式。?

1 个答案:

答案 0 :(得分:4)

使用

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

而不是指针。指针只“指向”不可修改的字符串文字。您可以阅读有关此in this question以及大量其他类似内容的详情。它甚至在c-faq中,看看它!