Как я могу пропустить пустую строку во входном файле при использовании strtok? - PullRequest
1 голос
/ 08 июня 2011

Я хочу передать строки файла, используя strtok; значения разделены запятыми. Однако strtok также читает пустые строки, которые содержат только пробелы. Разве в такой ситуации не предполагается возвращать нулевой указатель?

Как я могу игнорировать такую ​​строку? Я пытался проверить NULL, но, как упоминалось выше, он не работает.

1 Ответ

0 голосов
/ 24 июня 2011
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, который вы явно не используете в своей программе.

...