我有使用strtok()
功能的小问题。 我解析两个文件。 Firts我加载文件1到buffer
。该文件constains我需要加载的第二个文件的名称。这两个文件都是一行一行读取的。我的代码如下所示:C++的strtok - 多用更多的数据缓冲区使用
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()
的指针,然后再使用它来解析第二个文件?
感谢您的任何建议。 干杯。
偏离主题,但您应该启用编译器警告来捕捉错误,如if(line [0] ='f')'。 –
嘿我在这里输入代码时,完全错过了这个错误,谢谢:) –