|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2006
Città: Bracciano (RM)
Messaggi: 243
|
[C] Problema input vettori
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? Codice:
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;
}
Grazie!
__________________
My Mod |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Edit: sto dormendo...ho letto solo ora che a[] va letto in input...
Ultima modifica di vendettaaaaa : 29-04-2012 alle 01:37. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Oct 2010
Città: Savona
Messaggi: 194
|
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.
__________________
AMD Phenom II X6 3Ghz, MB Gigabyte 790xta-ud4 F4A, 4Gb Ram ddr3, HD Segate Barracuda 1T, SV ASUS GTX 560 Ti DirectCu II ,Monitor Philips 1920x1080 led 2 ms, Xbox360 Slim, Tablet Asus Transformer Pad TF300T, Gameboy Advance, Ipod Touch 16Gb |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
|
|
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Feb 2006
Città: Bracciano (RM)
Messaggi: 243
|
Quote:
perchè non gli basta "*" + "invio"??
__________________
My Mod |
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Oct 2010
Città: Savona
Messaggi: 194
|
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/libr...(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.
__________________
AMD Phenom II X6 3Ghz, MB Gigabyte 790xta-ud4 F4A, 4Gb Ram ddr3, HD Segate Barracuda 1T, SV ASUS GTX 560 Ti DirectCu II ,Monitor Philips 1920x1080 led 2 ms, Xbox360 Slim, Tablet Asus Transformer Pad TF300T, Gameboy Advance, Ipod Touch 16Gb |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:34.




















