【问题标题】:Getting Segmentation Fault in String Manipulation在字符串操作中获取分段错误
【发布时间】: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';

标签: c string


【解决方案1】:

使用

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

而不是指针。指针仅“指向”不可修改的字符串文字。您可以阅读更多关于此in this question 和大量其他类似内容的信息。居然还在c-faq,快来看看吧!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 2019-08-21
    • 2020-02-05
    • 1970-01-01
    相关资源
    最近更新 更多