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