Ho messo due printf nella funzione e... funziona XD
codice:
void lettura(FILE *output, char *stringa,char **vettore){
int i;
for(i=0;!feof(output);i++){
fscanf(output,"%s\n",stringa);
printf("%s\n", stringa);
vettore[i]=stringa;
printf("%s\n", vettore[i]);
}
}
Stampa le cose che vorresti tu. La domanda è perchè fuori dalla funzione non tiene i valori corretti. L'unica soluzione che mi viene in mente (per quanto brutta) è di non fare la funzione interna, ma di svolgere la funzione nel main (così in teoria funziona).
Rettiffico: Ma certo. Tu nella tua funzione memorizzi la posizione di stringa e alla fine stampi stringa (che contiene quarta e la stampi tre volte). Non è quello che volevi fare tu ma così funziona
codice:
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#define ELEM 20
int main()
{
FILE *output;
char vettore[ELEM][ELEM];//vettore di venti stringhe
char stringa[20];//stringa di venti caratteri
int i;
for(i=0;i<ELEM;i++)
vettore[i][0]='\0';
if((output=fopen("prova.txt","r"))==NULL)
printf("Impossibile leggere il file!\n");
else
{
for(i=0;!feof(output);i++)
{
fscanf(output,"%s\n",stringa);
strcpy(vettore[i], stringa);
}
}
fclose(output);
for(i=0;i<ELEM;i++)
{
if(vettore[i][0]!='\0')
printf("%s\n", vettore[i]);
}
system("pause");
return 0;
}