我想使用strtok传递文件的行;这些值用逗号分隔。但是,strtok也读取只包含空格的空行。在这种情况下不应该返回空指针吗?
我怎么能无视这样一句话?我试图检查空值,但正如上面提到的,它不起作用。
最佳答案
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
数组中,而您显然不会在程序中使用该数组。关于c - 使用strtok时如何跳过输入文件中的空白行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6274267/