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'代码>