Игнорирование пробелов при чтении входных файлов в C

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

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

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


person John    schedule 10.03.2012    source источник


Ответы (1)


Вы можете использовать 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
}
person perreal    schedule 10.03.2012
comment
Я не уверен, возможно ли увеличение только строки, не так ли? Я получаю сообщение об ошибке lvalue, требуемое в качестве операнда приращения. - person John; 10.03.2012
comment
Я был в этом в течение такого долгого времени. Я на самом деле столкнулся с этой функцией, но, по-видимому, сделал простую ошибку, пытаясь реализовать ее, и отклонил ее. Огромное спасибо. Это действительно идеально. - person John; 10.03.2012
comment
@Corey, вы можете принять ответ, если он вам подходит - person Coren; 10.03.2012