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.