在C中读取输入文件时忽略空格

时间:2012-03-10 02:00:38

标签: c whitespace fgets strncmp

我正在尝试编写将每行的第一个单词注册为命令的代码,但我希望能够读取该单词而不管前面是否有空格。我目前正在使用fgets()和strncmp每行的前x个字符来执行此操作,但它不适用于任意数量的空白。我已经尝试在fgets()循环中使用sscanf()将每行的第一个单词存储到变量中,但它似乎是跳过行并错误地读取它们。我宁愿不发布代码,因为它很长,但基本上是这样的:

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

有许多strncmps,我希望他们每个人都忽略任意数量的前面的空格。

1 个答案:

答案 0 :(得分:3)

您可以使用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
}