Ciao


Qualcuno mi può aiutare a capire dove sbaglio.
Voglio costruire un array di strighe con i puntatori, ma non so bene come si allocca la memoria.

//char stringa[100][3000];
char** stringa= (char **)malloc(20*(1000 * sizeof(char))); //in particolare questa riga
char char_letto = '\0';
int fd;
int n;

if((fd=open("prova.csv",O_RDONLY,644))<0)
syserr("nomefile", "creat file error");

//invoco la read passando il puntatore al carattere
int bytes_letti;

int utente = 0;
int posizione_corrente = 0;
//continuo a leggere finchè non trovo il carattere di
//fine linea o finchè non raggiungo la fine del file

do
{
bytes_letti = read(fd, &char_letto, sizeof(char));
//se c'è stato errore ritorno null
if(bytes_letti == -1)
{
//istruzione per deallocare stringa
syserr("nomefile", "read file error");
free(stringa);

}

if((char_letto == 'A')||(char_letto == 'M')||(char_letto == 'D')||(char_letto == '1'))
{
stringa[utente][posizione_corrente] = char_letto;
bytes_letti = read(fd, &char_letto, sizeof(char));
if(char_letto == ';')
{
while (char_letto != '\n')
{
//metto il carattere letto nella stringa
posizione_corrente++;
stringa[utente][posizione_corrente] = char_letto;
bytes_letti = read(fd, &char_letto, sizeof(char));

}
}
stringa[utente][posizione_corrente] = '\0';
utente++;
}

}while(bytes_letti > 0);