0

すべての行の最初の単語をコマンドとして登録するコードを作成しようとしていますが、前にスペースがあるかどうかに関係なく単語を読み取れるようにしたいと考えています。現在、これを行うために各行の最初の x 文字に fgets() と strncmp を使用していますが、任意の量の空白では機能しません。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 に答える