我想使用strtok传递文件的行;这些值用逗号分隔。但是,strtok也读取只包含空格的空白行。在这种情况下,是不是应该返回一个空指针?如何在使用strtok时跳过输入文件中的空行?
我该如何忽略这样的行?我试图检查NULL,但如上所述,它不起作用。
我想使用strtok传递文件的行;这些值用逗号分隔。但是,strtok也读取只包含空格的空白行。在这种情况下,是不是应该返回一个空指针?如何在使用strtok时跳过输入文件中的空行?
我该如何忽略这样的行?我试图检查NULL,但如上所述,它不起作用。
void function_name(void)
{
const char delimiter[] = ",";
char line_read[9000];
char keep_me[9000];
int i = 0;
while(fgets(line_read, sizeof(line_read), filename) != NULL)
{
/*
* Check if the line read in contains anything
*/
if(line_read != NULL){
keep_me[i] = strtok(line_read, delimiter);
i++;
}
}
}
所以说明一下。
您正在使用while循环读取文件,该循环将整行文件逐行读取(fgets
)到数组line_read
中。
每次读入一行时,它都会检查它是否包含任何内容(NULL
检查)。
如果它包含的东西是使用strtok
解析它,并将其读入keep_me
,否则它将保留在line_read
数组中,您显然不会在程序中使用它。
输入文件的格式是什么? – cnicutar 2011-06-08 04:40:15
@cnicutar它是一个纯文本文件,每行中有两个值用逗号分隔。 – drox 2011-06-08 04:51:19
第一次调用'strtok'可能会返回整行作为第一个标记。为什么不在从文件中读取行后检查行内容,然后用'strtok'分割它。 – pascal 2011-06-08 04:52:03