Я пытаюсь написать связанный список, который должен разбирать слова на узлы. На данный момент у меня это работает с использованием strtok на основе пробелов. Тем не менее, я хочу включить некоторые дополнительные правила для разбора, где я бы рассматривал
"яблоки с апельсинами" как одно слово
"яблоки с апельсинами" как 5 слов («яблоки», «-», «к», «-», «апельсины»)
«яблоки к апельсинам» как 3 слова («яблоки», «-»-oranges ')
"Джек. \", чтобы быть 3 словами ("Джек",'. ',' \ ')
и
"/// \\ "быть двумя словами ('///', '\\')
По сути, я хочу в любое время рассматривать символ '-' между двумя словами как часть слова, в противном случае все знаки препинаниянезависимо от того, сколько раз повторяется одно слово.
Можно ли каким-либо образом изменить мою существующую функцию strtok, которая по существу существует следующим образом
sourcechar = strtok (line," ");
while (sourcechar != NULL)
{
strtemp = malloc(sizeof(char)*(strlen(sourcechar) + 1));
strcpy(strtemp, sourcechar);
head = insertToList(head, strtemp);
sourcechar = strtok (NULL, " ");
}
, чтобы рассмотреть правило одного'-' между двумя словами все должны рассматриваться как одно слово?
Если нет, я предполагаю, что мне пришлось бы использовать strncpy или strcpy для сравнения i-го и i-го символов. В таком случае, как я буду отслеживать начало и конец слова, которое будет вставлено в мой связанный список.