Получение ошибки сегментации при манипулировании строками - PullRequest
0 голосов
/ 24 января 2012

Здесь я даю такую ​​строку ввода "/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 Ответ

4 голосов
/ 24 января 2012

Используйте

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

Вместо указателя.Указатель только «указывает» на строковый литерал, который нельзя изменить.Вы можете прочитать больше об этом в этом вопросе и тонне других подобных.Это даже в c-faq , посмотрите на это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...