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 のみを取得し、残りは取得しません。
ありがとうございました :)
内部的には、文字列は有効な整数を表している限り読み取られます (そのため、'.' に遭遇すると停止します)。
日付を 1 つの整数としてどのように表現しますか? 3 つの変数を使用して、次のように読み取ることができます。
fscanf(ifp, "%d.%d.%d", &day, &month, &year);
ところで、20/20 は変な日付です :-)
フォーマット指定子を使用すると、%d
3つの数値のシーケンスではなく、単一の数値をスキャンできます。
あなたはこのようにあなたが期待するフォーマットで日付を読むことができます:
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]);