hakermatik
22-04-2005, 18:39
devo allocare una matrice in modo dinamico. non so a priori di quante righe e colonne la matrice sarà composta. la matrice deve contenere caratteri
Lo scopo della matrice è questo: devo acquisire una stringa; finchè non ci sono spazi devo memorizzare quello che acquisisco nella stessa riga della matrice. quando do uno spazio devo incrementare l'indice della riga. in pratica, parola della stringa che acquisico deve essere memorizzata in una riga diversa. l'acquisizione del testo si interrompe con la pressione del tasto #
Questo è quello che ho scritto:
.....ometto le librerie......
char *parola;
char **stringa;
char scelta;
int inst,inpa;
void inserimento (int, int, char**, char*);
main(){
stringa=(char**)malloc(sizeof(char*));
//parola=(char*)malloc(sizeof(char));
printf ("Premi '1' per inserire la parola e la stringa da confrontare");
scelta=getch();
switch (scelta){
case '1': {printf ("hai scelto di inserire la parola e la stringa da confrontare...inserisci ora");
inserimento (inst, inpa, stringa, parola); //free(stringa);
}
}
}
void inserimento (int ist, int ipa, char **fra,char *par){
printf ("sono nella funzione"); //per vedere se almeno entra nella funzione
int ics,irs,irp,icp;
char inp;
irs=0;
ics=0;
while (inp!='#'){
inp=getch();
printf ("%c",inp);
fra[irs][ics]=inp;
fra=(char**)realloc(fra,sizeof(char*));
if (inp==32)
{irs++;}
ics++;
}
}
dopo aver digitato un carattere mi appare una finestra di errore di windows.
se non uso la realloc(), capita che delle volte mi si blocca, altre volte scrivo tutto il testo che voglio finchè non premo #, che è il carattere che ferma l'inserimento.
il programma non è ancora terminato... però come potete vedere ho problemi con l'allocazione dinamica...
Lo scopo della matrice è questo: devo acquisire una stringa; finchè non ci sono spazi devo memorizzare quello che acquisisco nella stessa riga della matrice. quando do uno spazio devo incrementare l'indice della riga. in pratica, parola della stringa che acquisico deve essere memorizzata in una riga diversa. l'acquisizione del testo si interrompe con la pressione del tasto #
Questo è quello che ho scritto:
.....ometto le librerie......
char *parola;
char **stringa;
char scelta;
int inst,inpa;
void inserimento (int, int, char**, char*);
main(){
stringa=(char**)malloc(sizeof(char*));
//parola=(char*)malloc(sizeof(char));
printf ("Premi '1' per inserire la parola e la stringa da confrontare");
scelta=getch();
switch (scelta){
case '1': {printf ("hai scelto di inserire la parola e la stringa da confrontare...inserisci ora");
inserimento (inst, inpa, stringa, parola); //free(stringa);
}
}
}
void inserimento (int ist, int ipa, char **fra,char *par){
printf ("sono nella funzione"); //per vedere se almeno entra nella funzione
int ics,irs,irp,icp;
char inp;
irs=0;
ics=0;
while (inp!='#'){
inp=getch();
printf ("%c",inp);
fra[irs][ics]=inp;
fra=(char**)realloc(fra,sizeof(char*));
if (inp==32)
{irs++;}
ics++;
}
}
dopo aver digitato un carattere mi appare una finestra di errore di windows.
se non uso la realloc(), capita che delle volte mi si blocca, altre volte scrivo tutto il testo che voglio finchè non premo #, che è il carattere che ferma l'inserimento.
il programma non è ancora terminato... però come potete vedere ho problemi con l'allocazione dinamica...