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

在C中读取输入文件时忽略空格,c,whitespace,fgets,strncmp,C,Whitespace,Fgets,Strncmp,我试图编写将每行的第一个字注册为命令的代码,但我希望能够读取该字,而不管前面是否有空格。我目前正在使用fgets()和strncmp作为每行的前x个字符来实现这一点,但它不适用于任意数量的空白。我曾尝试在fgets()循环中使用sscanf()将每行的第一个字存储到一个变量中,但它似乎跳过了行并错误地读取它们。我不想发布代码,因为它相当长,但基本上是这样的: while( fgets(Line, BUFFER, input) != NULL ) { if(strncmp(Line, "Word"

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

while( fgets(Line, BUFFER, input) != NULL )
{
if(strncmp(Line, "Word", 4) != NULL)
//DO SOMETHING
}
有许多strncmp,我希望它们中的每一个都可以忽略前面任意数量的空格。

您可以使用跳过空白:

#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
}
#包括
while(fgets(行、缓冲区、输入)!=NULL)
{
char*p=行;
while(isspace(*p))//跳过空白
p++;
if(strncmp(p,“Word”,4)!=NULL)
//做点什么
}
您可以使用跳过空白:

#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
}
#包括
while(fgets(行、缓冲区、输入)!=NULL)
{
char*p=行;
while(isspace(*p))//跳过空白
p++;
if(strncmp(p,“Word”,4)!=NULL)
//做点什么
}

我不确定是否可以只增加一行,是吗?我得到了一个作为增量操作数所需的错误左值。我已经做了这么长时间了。我实际上遇到过这个函数,但显然在尝试实现它时犯了一个简单的错误,并将其忽略。非常感谢。这真是太完美了。@Corey如果对你有效,你可以。我不确定是否可以只增加一行,是吗?我得到了一个作为增量操作数所需的错误左值。我已经做了这么长时间了。我实际上遇到过这个函数,但显然在尝试实现它时犯了一个简单的错误,并将其忽略。非常感谢。这真是太完美了。@Corey如果对你有用的话,你可以