, , .
( , : , . , , , , x y z, x, y, z, x/y/z, (x,y,z), [x,y,z], <x y z>, <x,y,z> .., , . scanf , .)
, fgets() . . POSIX.1 (.. Windows), getline(), , - .
, sscanf().
, , scanf : . , \n " "; , , ", , ". , %c %[, ; , , , , .
scanf . ( "" %n, , , .) , EOF.
- , , , , %*s -, . , , sscanf(line, " %*d %*s %*d") 3, , (, ), .
, , ( ) . 0 , .
,
int read_game(game *one, FILE *in)
{
char buffer[GAME_LINE_MAX + 2];
char *line;
if (!one || !in)
return -1;
if (ferror(in))
return -1;
line = fgets(buffer, sizeof buffer, in);
if (!line)
return -1;
if (sscanf(line, "R%d %3s %d/%d/%d %d.%d %3s - %3s %d - %d %d\n",
&(one->round), one->weekday,
&(one->day), &(one->month), &(one->year),
&(one->hour), &(one->minute)
one->home_team,
one->away_team,
&(one->home_goals),
&(one->away_goals),
&(one->spectators)) < 12)
return -1;
one->spectators *= 1000;
return 0;
}
, (stdin):
game g;
while (!read_game(&g, stdin)) {
}
if (ferror(stdin)) {
} else
if (!feof(stdin)) {
}
if , (, - ), / ( ), .
OP: -, , 3 + 1 . '\0', %s. -, 1000, .
, one->weekday, one->home_team one->away_team . , , . ( char a[5];, a &a &(a[0]) a). " " , %s .