C ++ strtok - многократное использование с большим количеством буферов данных
У меня мало проблем с использованиемstrtok()
функция. Я анализирую два файла. Во-первых, я загружаю файл 1 вbuffer
, Этот файл содержит имя второго файла, который мне нужно загрузить. Оба файла читаются строка за строкой. Мой код выглядит так:
char second_file_name[128] = { "" };
char * line = strtok( buffer, "\n" );
while( line != NULL )
{
if ( line[0] = 'f' )
{
sscanf( line, "%*s %s", &second_file_name );
LoadSecondFile( second_file_name );
}
// processing other lines, not relevant for question
line = strtok( NULL, "\n" );
}
В то время какLoadSecondFile(...)
Функция работает примерно так же, таким образом:
char * line = strtok( buffer, "\n" );
while( line != NULL )
{
// process file data
line = strtok( NULL, "\n" );
}
В чем моя проблема, после вызоваLoadSecondFile(...)
функция,strtok()
указатель, используемый для разбора первого файла, становится "испорченным". Вместо того, чтобы давать мне строку, которая следует за именем второго файла, он ничего не дает - понимайте как «полная чушь». Правильно ли я понимаю, что это вызваноstrtok()
указатель используется в программе, а не только в функции? Если это так, как я могу «создать резервную копию» указателяstrtok()
используется для разбора первого файла перед использованием его для разбора второго файла?
Спасибо за любой совет. Приветствия.