Я хочу сказать strtok()
использовать в качестве разделителей все, кроме буквенно-цифровых символов.
Мои попытки приведены на примере ref:
/* strtok example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}
return 0;
}
Однако я собираюсь анализировать настоящие текстовые файлы (содержащие отзывы о сайте). В настоящее время я проверяю, какие другие разделители встречаются, и увеличиваю второй аргумент strtok()
. Например, я увидел [
, поэтому я сделал это " ,.-["
и так далее, но ладно, я мог что-то упустить, и, возможно, новый текстовый файл содержит новый разделитель.
Неужели нельзя сделать что-то поумнее (и собственно правильное, ибо этого нет)?
Например, если я получу:
[Hello_sir I'm George]
Я хотел бы получить эти токены:
Hello
sir
I
m
George
Проблема в том, что я не знаю, какие разделители.
Я бы хотел использовать в качестве разделителей все, кроме буквенно-цифровых символов.
РЕДАКТИРОВАТЬ
Я подумал о том, чтобы пройти посимвольно и проверить, является ли он буквенно-цифровым, но я надеялся на что-то встроенное, например, на подачу по желанию strtok()
.
isalpha
char за char? cplusplus.com/reference/cctype/isalpha - person user2485710   schedule 12.11.2014isalnum()
, все будет в порядке? - person gsamaras   schedule 12.11.2014