我想使用strtok传递文件的行;值以逗号分隔。但是,strtok还会读取仅包含空格的空白行。是不是假设在这种情况下返回空指针?
我怎么能忽略这样一条线?我试图检查NULL,但如上所述,它不起作用。
答案 0 :(得分:0)
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
数组中。