2
  while (fscanf(ifp, " %d %d kl. %d %s - %s %d - %d %d\n", &round, &date, &clock, teeam,  &goals, &attendance)

おそらくこれを知っているはずですが、20.20.2012 のように、2 番目の %d は変数に日付をインポートする必要がありますが、代わりに最初の 20 のみを取得し、残りは取得しません。

ありがとうございました :)

4

2 に答える 2

6

内部的には、文字列は有効な整数を表している限り読み取られます (そのため、'.' に遭遇すると停止します)。

日付を 1 つの整数としてどのように表現しますか? 3 つの変数を使用して、次のように読み取ることができます。

fscanf(ifp, "%d.%d.%d", &day, &month, &year);

ところで、20/20 は変な日付です :-)

于 2012-11-25T13:01:26.453 に答える
3

フォーマット指定子を使用すると、%d3つの数値のシーケンスではなく、単一の数値をスキャンできます。

あなたはこのようにあなたが期待するフォーマットで日付を読むことができます:

char date_buf[11];
scanf("%10[0-9.]", date_buf);

テキストは3つのintとして解析されませんが、代わりにテキストとして保存されます。次のように、1か月、1日、1年に分割できます。

int month = atoi(&date_buf[0]);
int day = atoi(&date_buf[3]);
int year = atoi(&date_buf[6]);
于 2012-11-25T13:06:38.800 に答える