C 字符串操作中的分段错误

C 字符串操作中的分段错误,c,string,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

在这里,我给出如下输入字符串
“/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
“最后一个”字符有问题

任何人能帮我或给我建议新的方法吗?

使用

char str[] = "\"/org/bluez/1509/hci0\"";
而不是指针。指针只“指向”不可修改的字符串文字。您可以阅读更多关于这一点以及大量其他类似的内容。它甚至在中,请查看它!

使用

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

而不是指针。指针只“指向”不可修改的字符串文字。您可以阅读更多关于这一点和其他类似的内容。它甚至在中,请看一看!

字符串文字不可修改。请尝试将其复制到数组:
char str[]=“\”/org/bluez/1509/hci0\”";。另外
main
返回一个整数;更改该
void
,并添加一个
返回0
如果您想要C89的兼容性(还需要在任何代码语句之前声明所有变量)。我建议更改
*(str1+(strlen(str)-2))='\0'
str1[strlen(str1)-1]='\0'字符串文字不可修改。尝试将其复制到数组:
char str[]=“\”/org/bluez/1509/hci0\”。另外
main
返回一个整数;更改该
void
,并添加一个
返回0
如果您想要C89的兼容性(还需要在任何代码语句之前声明所有变量)。我建议更改
*(str1+(strlen(str)-2))='\0'
str1[strlen(str1)-1]='\0'