1

我想使用 strtok 传递文件的行;这些值以逗号分隔。然而,strtok 也会读取只包含空格的空行。在这种情况下不应该返回一个空指针吗?

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

4

1 回答 1

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您显然不会在程序中使用的数组中。

于 2011-06-23T21:10:56.443 回答