View Full Version : [C] Problema input vettori
>Alexan<
28-04-2012, 20:12
Ciao a tutti! In un mio programma ho bisogno di una funzione che legga un vettore char[] dato in input.
deve restituire il comando al main quando viene inserito il carattere '*' e riportare in un parametro l'indice del vettore in cui è stato inserito l'ultimo carattere prima di '*'.
la domanda è: perchè questo codice non va?
void input_w(char a[],int *n){
int i=0;
while (1){
scanf("%c\n",&a[i]);
if (a[i]=='*') break;
i++;
}
*n=i-1;
}
questa funzione mi legge il vettore, ma non capisco perchè, dopo aver inserito un asterisco, ha bisogno che venga inserito un altro carattere prima di terminare.
Grazie!
vendettaaaaa
29-04-2012, 01:35
Edit: sto dormendo...ho letto solo ora che a[] va letto in input...
AllerITA
29-04-2012, 09:05
Per curiosità, quando inserisci l'asterisco poi devi confermare con "invio" no?
Come hai inserito nella stringa formattata in scanf:
"%c"che ti permette di inserire il carattere e poi "\n" che indica che devi premere "invio" per uscire da scanf.
Correggetemi se sbaglio.
vendettaaaaa
29-04-2012, 09:50
Per curiosità, quando inserisci l'asterisco poi devi confermare con "invio" no?
Come hai inserito nella stringa formattata in scanf:
"%c"che ti permette di inserire il carattere e poi "\n" che indica che devi premere "invio" per uscire da scanf.
Correggetemi se sbaglio.
Vero! Ora funziona :D
>Alexan<
29-04-2012, 11:56
Per curiosità, quando inserisci l'asterisco poi devi confermare con "invio" no?
Come hai inserito nella stringa formattata in scanf:
"%c"che ti permette di inserire il carattere e poi "\n" che indica che devi premere "invio" per uscire da scanf.
Correggetemi se sbaglio.
sì, ho bisogno che dopo ogni carattere inserito venga premuto "invio"! ma per uscire da questa funzione bisogna premere "*" + "invio" + "*" + "invio"...
perchè non gli basta "*" + "invio"??
AllerITA
29-04-2012, 12:58
Hai provato a fare una prova inserendo direttamente il puntatore a a[i] cioè (a+i)
e inoltre hai verificato con il debugger cosa ti restituisce scanf tutte le volte che esce da scanf?
Forse potrebbe essere una gestione non corretta del stdin guarda qui:
http://msdn.microsoft.com/en-us/library/9y6s16x1(v=VS.80).aspx
se il carattere in stdin è unicode (tipico in windows 7) ti da dei problemi infatti si tende ad usare
scanf_s
al suo posto.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.