Здесь я даю строку ввода, как этот "/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' и добавьте' return 0; ', если вы хотите совместимость с C89 (также необходимо объявить все переменные перед любым кодом). – pmg
Я предлагаю изменить '* (str1 + (strlen (str) -2)) = '\ 0';' to 'str1 [strlen (str1) - 1] = '\ 0';' – Lundin