список индексов белых пикселей на изображении с использованием CUDA

strtok может быть очень опасным. Он не является потокобезопасным. Его предполагаемое использование должно вызываться снова и снова в цикле, передавая результат с предыдущего вызова. Функция strtok имеет внутреннюю переменную, которая хранит состояние вызова strtok. Это состояние не уникально для каждого потока - оно глобально. Если какой-либо другой код использует strtok в другом потоке, у вас возникают проблемы.

Я бы рекомендовал искать реализацию регулярного выражения или использовать sscanf, чтобы разделить эту строку.

Попробуйте следующее:

char strprint[256];
char text[256];
strcpy(text, "My string to test");
while ( sscanf( text, "%s %s", strprint, text) > 0 ) {
   printf("token: %s\n", strprint);
}

Примечание. Строка «текст» уничтожается по мере ее разделения. Это не может быть предпочтительным поведением =)

-9
задан sgarizvi 23 November 2017 в 15:05
поделиться