我对使用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()
用于解析第一个文件的指针?
感谢您的任何建议。干杯。