我想使用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/

10-13 08:29