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);