Вот пример, который выполняет то, что вы просите, с проверкой ошибок и динамическим изменением размера вашего массива по мере чтения большего количества данных.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char ** argv)
{
char buf[512];
FILE * f;
int * array = 0;
size_t array_len = 0, count = 0;
if (argc != 2) {
fprintf(stderr, "Please provide a filename to read\n");
exit(1);
}
f = fopen(argv[1], "r");
if (f == NULL) {
perror("fopen");
exit(1);
}
while (fgets(&buf[0], 512, f) != 0) {
if (count == array_len) {
array_len *= 2;
if (array_len == 0) {
array_len = 32;
}
array = realloc(array, array_len * sizeof(int));
if (array == NULL) {
perror("realloc");
exit(1);
}
}
array[count++] = strtol(buf, 0, 10);
}
return 0;
}