ciao a tutti.sto realizzando un progetto per l'università e premetto di non essere troppo ferrato in c(abbiamo sempre programmato in java).
mi ritrovo a dover acquisire tre caratteri con scanf.questi caratteri vanno a comporre un codice formato da un numero,il carattere # ed un altro numero.i numeri devono essere compresi fra 1 e 5.ho provato questo codice:
char cod[1024];
do{
scanf("%3s",cod);
}while( atoi(cod[0])<1 || atoi(cod[0])>5 || atoi(cod[0])==0 || atoi(cod[2])<1 || atoi(cod[2]>5 || atoi(cod[2]==0 || strcmp(cod[1],"#")!=0 );
printf("\nFUNZIONA!\n");
praticamente continua a chiedere tre caratteri,ed assumine esattamente tre,finchè non si inserisce un codice valido.ad esempio 1#2.
il problema è che mi da segmentation fault.ho provato con un array di 4 elementi(i tre char e lo /0,visto che i char occupano un byte in memoria),ho provato con due int per i numeri e un char per l'hash facendo una scanf multipla così scanf("%c%d%c",&num1,&hash,&num2),però non sono riuscito a risolvere.sono sicuro che mi sfugge qualcosa legata agli array in c,cioè indirizzi di memoria,non accessibilità al primo elemento,ecc.
qualcuno può aiutarmi?
mi scuso preventivamente se:dovevo presentarmi e non l'ho fatto(mi ero iscritto tempo fa e non ricordo se si doveva fare e se l'ho fatto),dovevo scrivere il messaggio in un determinato modo e non l'ho fatto,o se ho esposto male il problema.
grazie a tutti quelli che risponderanno.