使用strtok时如何跳过输入文件中的空行?

时间:2011-06-08 04:38:20

标签: c strtok fileparsing

我想使用strtok传递文件的行;值以逗号分隔。但是,strtok还会读取仅包含空格的空白行。是不是假设在这种情况下返回空指针?

我怎么能忽略这样一条线?我试图检查NULL,但如上所述,它不起作用。

1 个答案:

答案 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数组中。