Парсинг строки и ошибка сегментации - C (СИ)
Формулировка задачи:
Здраствуйте. Нужно было распарсить строчку. Взялся за strtok. Написал небольшой пример, для себя, что-бы убедится в правильности использования:
во время выполнения получаю ошибку сегментации(см. скрин)
дале зашел уже на С++ Reference - strtok посмотрел прототип функции - все правильно. у меня так же char*
потом посмотрел на пример который там приведен ниже. скомпилировав и выполнив его я удивился - оно рабоает!
оказывается все дело в пятой строчке моего кода. то есть:
собственно почему так? ведь, если я не ошибаюсь, в обеих случаях, str - это указатель на начало масива(строки). может кто просветить почему так?
#include <stdio.h> #include <string.h> int main(){ char* str = "Hellow World! This string will be tokenized." char* delimiters = " .!"; char* next = strtok(str, delimiters); while(next != NULL){ printf("%s\n", next); next = strtok(NULL, delimiters); } return 0; }
// вместо char* str = "Hellow World!.."; // надо char str[] = "Hellow World!..";
Решение задачи: «Парсинг строки и ошибка сегментации»
textual
Листинг программы
char *str = "hello"; str[0] = 'H';
Объяснение кода листинга программы
- Объявляется переменная типа char* с именем
str
и инициализируется строкойhello
. - Затем, используя оператор индексации, переменной
str
присваивается новое значение 'H'. - Оператор индексации используется для доступа к определенному символу в строке. В данном случае, переменная
str
содержит адрес первого символа строкиhello
, и его значение меняется на 'H'. - В результате, переменная
str
теперь содержит строкуHello
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д