Ciao a tutti
oggi mentre stavo facendo un programma di quelli pallosi che ci aveva lasciato il prof. di uni ho riscontrato un problema strano che ho estrapolato e inserito in questo semplice programmino: :master:
#include<stdio.h>
#include<stdlib.h>
main()
{
char *prova;
prova=(char*)malloc(5*sizeof(char));
scanf("%s",prova);
printf("%c",prova[0]);
printf("%c",prova[1]);
printf("%c",prova[2]);
printf("%c",prova[3]);
printf("%c",prova[4]);
printf("%c",prova[5]);
}
Nello scanf ho scritto una parola + lunga di 5 caratteri e non mi dava nessun errore,poi ho inserito l'ultimo printf per vedere se li stampava anche gli elementi che "trabbordavano" dall'array e con sgomento ho visto che li stampava!!! VVoVe: sono arrivato alla conclusione che C non fa nessun controllo sulla lunghezza della stringa se corrisponde alla relativa variabile, è una conclusione sensata? il fatto che non mi dia una Segmentation fault è dato dal fatto che i carattereri che escono dall'array vanno a finire in zone di memoria ancora destinate al programma?.....il punto essenziale....come faccio a controllare che l'utente non metti + caratteri di quanto ne può contenere la variabile "prova" ?