да, нужна аккуратность. Либо /* (c) 1985, Phoenix Computer Products Corp. and Novum Organum, Inc. */
#include "pdefs.h"
strtoken(char *token, char *str, char *separators){
int off, rc;
rc = RC_SUCCESS;
strtrim(str);
off = strinspn(separators, str);
if (off>NOTFND)
{
strancpy(token, str, off+1);
strdel(str, off);
strtrim(str);
if (stridxc(*str,separators)>NOTFND)
{
strdel(str,1);
strtrim(str);
}
}
else
if (*str)
{
stracpy(token,str);
*str = EOS;
}
else
{
*token = EOS;
rc = RC_FAIL;
}
return (rc);
}
-разбор делать в одной задаче -обернуть ф-и семафором -не использовать стандартную библиотеку, а использовать стороннюю. Я пользую pforce ее, есно, нужно переделать под ОС, что и делается по необходимости rc = strtoken(token, str, separators); /int/ грамматический разбор символа из строки Описание аргументов: char *str; строка (Для strdxrv() это указатель на середину строки) char *separators; набор символов, которые являются символами ограничения в строке. Вы должны включить пробел и табуляцию в этот список, если вы хотите их использовать как разделители сhar *token[]; буфер, содержащий набор символов переданных из STR. Первый символ - это всегда не пробел и отделен одним из символов разделителей. Выполнение StrToken(). ______________________ StrToken() удаляет набор символов из вводимой строки. Все лидирующие и конечные пробелы удаляются из STR, которая затем просматривается в поисках символа - SEPARATOR. Все символы выбираются, не включая символ- разделитель, и возвращаются, как следующая лексема в TOKEN. Разделитель и символы - лексемы удаляются из строки. Если разделители не найдены, в TOKEN возвращается полное содержание STR, а STR устанавливается в нуль и возвращается RC_FAIL. Заметим, что вы должны определить пробелы и табуляции в SEPARATORS, если вы желаете использовать их в качестве разделителей. Также заметим, что могут возвращаться пустые символы. Например, если запятая, пробел и точка - разделители и STR содержит "a, b, c, .. d", то 5 лексем будет возвращено : "а", "b", "c", " ", "d". Четвертая лексема - пустая.