Игнорирование пробелов при чтении входных файлов в C - PullRequest
0 голосов
/ 10 марта 2012

Я пытаюсь написать код, который регистрирует первое слово каждой строки как команду, но я хочу иметь возможность читать слово независимо от того, есть ли пробелы или нет перед ним. В настоящее время я использую fgets () и strncmp первые x символов каждой строки, чтобы сделать это, но это не работает для произвольного количества пробелов. Я пытался использовать sscanf () внутри цикла fgets (), чтобы сохранить первое слово каждой строки в переменной, но, похоже, он пропускает строки и неправильно их читает. Я бы не стал публиковать код, так как он довольно длинный, но в основном это так:

while( fgets(Line, BUFFER, input) != NULL )
{
if(strncmp(Line, "Word", 4) != NULL)
//DO SOMETHING
}

Существует много strncmps, и я бы хотел, чтобы каждый из них игнорировал произвольное количество предшествующих пробелов.

1 Ответ

3 голосов
/ 10 марта 2012

Вы можете использовать isspace для пропуска пробелов:

#include <ctype.h>

while( fgets(Line, BUFFER, input) != NULL )
{
  char *p = Line;
  while (isspace(*p)) // skip whitespace
    p++;
  if(strncmp(p, "Word", 4) != NULL)
  //DO SOMETHING
}
...