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

我可能应该知道这一点,但是第二个 %d 应该将日期导入到我的变量中,例如 20.20.2012 但我只得到前 20 个而不是其余的。

谢谢你 :)

4

2 回答 2

6

在内部,只要字符串代表一个有效的整数,它就会被读取(所以它会在遇到“.”时停止)。

您如何将日期表示为一个整数?您可以有 3 个变量并像这样读取它们:

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

顺便说一句,20/20 是一个奇怪的日期 :-)

于 2012-11-25T13:01:26.453 回答
3

格式说明%d符允许您扫描单个数值,而不是三个数字的序列。

您可以按照您期望的格式读取日期,如下所示:

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

文本不会被解析为三个整数,而是存储为文本。你可以像这样把它分成一个月、一天和一年:

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