C ++ strtok - wielokrotne użycie z większą ilością buforów danych
Mam niewielkie problemy z używaniemstrtok()
funkcjonować. Analizuję dwa pliki. Wczytuję pliki do pierwszego plikubuffer
. Ten plik zawiera nazwę drugiego pliku, który muszę załadować. Oba pliki są odczytywane wiersz po wierszu. Mój kod wygląda tak:
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" );
}
Podczas, gdyLoadSecondFile(...)
funkcja działa w ten sam sposób, a więc:
char * line = strtok( buffer, "\n" );
while( line != NULL )
{
// process file data
line = strtok( NULL, "\n" );
}
Na czym polega mój problem po wywołaniuLoadSecondFile(...)
funkcja,strtok()
wskaźnik używany do parsowania pierwszego pliku zostaje „pomieszany”. Zamiast podawać mi wiersz następujący po nazwie drugiego pliku, nie daje mi to nic - rozumiem jako „kompletny nonsens”. Czy mam rację, że jest to spowodowane przezstrtok()
wskaźnik jest współdzielony w programie, nie tylko w funkcji? Jeśli tak, jak mogę „wykonać kopię zapasową” wskaźnikastrtok()
używany do parsowania pierwszego pliku przed użyciem go do parsowania drugiego pliku?
Dzięki za każdą radę. Twoje zdrowie.