Ciao, ho scritto un programmino in cui leggo così una stringa dinamica:
codice:
char *leggiNome(char c) {
int i = 1;
int l;
char *temp;
char *nome = malloc(2*sizeof(char));
while(c >= 'a' && c <= 'z') {
nome[i - 1] = c;
nome = (char *)realloc(nome, ++i * sizeof(char));
c = getchar();
}
nome[i - 1] = '\0'; /* Fine nome */
return nome;
}
nel resto del programma la stringa nome è sempre associata a puntatore a carattere, e mai a stringhe preallocate come ad esempio stringa[15]. Il problema è che se le stringhe sono più lunghe di 7 caratteri il programma crasha, se le metto tutte al max di 7 lettere funziona tutto perfettamente. Sapete dirmi perchè?
mi pare di ricordare che certe stringhe siano in effetti memorizzate come abcdefgh\x1