【发布时间】:2012-01-24 12:30:52
【问题描述】:
这里我给出这样的输入字符串"/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\"";。同样main返回一个整数;更改void,如果您想要 C89 兼容性,则添加return 0;(还需要在任何代码语句之前声明所有变量)。 -
我建议把
*(str1+ (strlen(str)-2)) = '\0';改成str1[ strlen(str1) - 1 ] = '\0';