我正在尝试编写将每行的第一个单词注册为命令的代码,但我希望能够读取该单词而不管前面是否有空格。我目前正在使用fgets()和strncmp每行的前x个字符来执行此操作,但它不适用于任意数量的空白。我已经尝试在fgets()循环中使用sscanf()将每行的第一个单词存储到变量中,但它似乎是跳过行并错误地读取它们。我宁愿不发布代码,因为它很长,但基本上是这样的:
while( fgets(Line, BUFFER, input) != NULL )
{
if(strncmp(Line, "Word", 4) != NULL)
//DO SOMETHING
}
有许多strncmps,我希望他们每个人都忽略任意数量的前面的空格。
答案 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
}