Все числа, находящиеся в одной строке, облегчают задачу. По сути, вы хотите прочитать строку, используя fgets()
, и разбить ее на отдельные числа, разделив пробел, и преобразовать каждое из этих слов в целое число. Есть множество способов сделать это, но мне нравится использовать преимущество того, как strtol () будет записывать, где конец преобразованного числа состоит в объединении двух шагов в один. Что-то вроде:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char line[] = "5: 4 5 6 7";
char *curr = line;
while (*curr) {
char *end;
int n = strtol(curr, &end, 10);
if (curr == end) {
fputs("Found something not a number!\n", stderr);
return EXIT_FAILURE;
} else if (*end == ':') {
printf("Line header: %d\n", n);
end++;
} else {
printf("Number %d\n", n);
}
curr = end;
}
return 0;
}
Компиляция и запуск это производит:
Line header: 5
Number 4
Number 5
Number 6
Number 7
Вы, конечно, сохраните числа в массиве, а не просто распечатаете их, но это должно дать вам общее представление.