Non la scanf, ma sscanf. I dati arrivano dalla stringa che ho letto dal file, non dallo stdin.

Il problema per cui non riuscivo ad usare sscanf, era che:
1) prima dei dati dell'array ne avevo altri, e non sapevo come iniziare la lettura dal punto corretto della stringa
2) sscanf in ogni caso non funziona nei cicli, dato che ogni volta ricomincia a leggere dall'inizio della stringa:

codice:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int v[10];
    char str[] = "10 11 12 13 14 15 16 17 18 19";
    int i = 0;

    for (i = 0; i < 10; i++)
        sscanf(str, "%d", &v[i]);

    for (i = 0; i < 10; i++)
        printf("%d, ", v[i]);

    return 0;
}
L'output di questo programma è

codice:
10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
e non

codice:
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
come vorrei io. Per questo ho dovuto usare strtok.