我想使用 strtok 传递文件的行;这些值以逗号分隔。然而,strtok 也会读取只包含空格的空行。在这种情况下不应该返回一个空指针吗?
我怎么能忽略这样的一行?我试图检查NULL,但如上所述它不起作用。
我想使用 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
您显然不会在程序中使用的数组中。