0

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

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

有很多 strncmps,我希望它们中的每一个都忽略任意数量的前面的空格。

4

1 回答 1

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
}
于 2012-03-10T02:02:34.987 回答