Overflow ha scritto:
una stringa è un array di char, fabio, luca, ecc.. sono tutte stringhe e ognuna di esse va in un solo array di char. Quello che vuoi fare tu si ottiene con una matrice:
char matrice[10][10];
int i = 0;
FILE* file;
   file = fopen("aaaa","r");
while(!feof(file))
{
fscanf(file, "%s",&matrice[i][0]);
i++;
}
fclose(file);
in questo modo è come se avessi 10 array di 10 elementi ciascuno di tipo char.
Attenzione che la i deve essere sempre minore di 10 e che i caratteri della stringa siano anchessi minori di 10
Ciao Fabiog,
sono sicuro che ormai hai gia risolto la situazione, la matrice e una soluzione che funziona in modo ottimale. il punto e che tu cmq in certo senso la usavi gia...
char *a[10] e un puntatore ad arrays di caratteri, quindi e come una matrice... 
"char *x => pt ad un char
char x[9] => array di char ma anche il pt al primo elemento e infine char *a[10] e un puntatore ad arrayS di caratteri"
il problema e la tua variablile num... tu ha ogni posizione di 'a' assegnavi num come rvalue
a[0] = num
a[1] = num
a[2] = num
a[3] = num
 
e alla fine del ciclo num aveva il valore luca... e quindi e normale che ad ogni posizione di a[] avevi luca xke tutti puntavano a num che come ultimo valore aveva luca.
Un altra soluzione meno bella e questa
#include <string.h>
#include <fstream>
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	FILE *f;
	char *a[10];
	char *num[10];
	int count = 0;
	f = fopen("input.txt", "r");
	while(!feof(f)){
		num[count] = (char*)malloc(sizeof(char));
		fscanf(f,"%s\n",num[count]);
		a[count] = num[count];
		count++;
	}
	fclose(f);
	int i;
	for (i = 0;i < count;i++){
		cout << "in position a["<<i<<"] we have "<<a[i]<<endl;
		free(num[i]);
	}
	return 0;
}
Ciao spero di averti aiutato cmq il C/C++ sono a volte oscuri... solo la pratica aiuta... e google