1

文字と数字を含むファイルから数字を抽出したいと考えています。

例えば:

+ 321 chris polanco 23

「+」をスキップして 321 のみを取得したい。

ここに私がこれまで持っているコードがあります。

while(fscanf(update, "%d", &currentIn->userid) != EOF){
    currentIn->index = index;
    rootIn = sort(rootIn, currentIn);
    index = index + 1;
    currentIn = malloc(sizeof(Index));
}

見つかった最初の数字を取得できると思ってい%dたのですが、間違っていました。皆さんがあれば、これを行うためのより良い方法を受け入れます。

4

2 に答える 2

2

fscanf() に苦労する (そして後でフォーマットの問題に遭遇する) 代わりに、fgets() + sscanf()の組み合わせを使用して各行を処理することをお勧めします。

関心のある整数がファイルの各行の 3 番目の位置から始まることがわかっている場合はline+2、sscanf() でそれを読み取ることができます。それ以外の場合は、入力ファイルの形式に従って sscanf() 形式文字列を変更できます。

char line[MAX_LINE_LEN + 1];

While ( fgets(line, sizeof line, update) )
{
  if(sscanf(line+2, "%d",  &currentIn->userid) != 1)
  {
   /* handle failure */
  }
  ...
}
于 2013-10-16T21:04:23.417 に答える