[C] Informazione su getchar e vettori
Ciao a tutti e buona serata!
Vorrei chiedervi un'informazione riguardo la funzione getchar del codice c.
Non ho ancora capito bene come funziona l'acquisizione dei caratteri nel vettore, e come far terminare il vettore con un carattere prefissato.
Prendiamo un esempio:
Acquisire da tastiera al massimo 10 numeri e memorizzarli in un vettore. Per terminare l'acquisizione digitare /. Il vettore deve inoltre terminare con il carattere nullo \0
Ho provato a scrivere il codice:
Tre cose non mi sono chiare!
1) perché se inserisco la sequenza: 123456 mi viene stampato 123456 e se invece inserisco la sequenza 0123456789/ mi viene stampato: 0123456789/0?
2) Come posso fare per non memorizzare il carattere di fine immissione /?
3) Se io inserisco la sequenza: 012345678912/ come mai mi viene stampato 012345678910, non dovrebbe essere sbagliato, in quanto il vettore numero ha dimensione 10, in questo caso invece mi viene stampato un vettore con dimensione 12!
Grazie mille, scusate ma ho un bel po' di confusione su questo argomento! Se un vettore ha dimensione 10, e chiedo di immettere numeri fino a quanto i è minore di 10, il programma non dovrebbe scartare tutti i numeri che non rientrano più nel vettore?
Ciaoo
Vorrei chiedervi un'informazione riguardo la funzione getchar del codice c.
Non ho ancora capito bene come funziona l'acquisizione dei caratteri nel vettore, e come far terminare il vettore con un carattere prefissato.
Prendiamo un esempio:
Acquisire da tastiera al massimo 10 numeri e memorizzarli in un vettore. Per terminare l'acquisizione digitare /. Il vettore deve inoltre terminare con il carattere nullo \0
Ho provato a scrivere il codice:
- Codice: Seleziona tutto
#include <stdio.h>
#define DIM 10
int main ()
{
char c, numeri[DIM];
int i=0;
while ((c=getchar())!='/' && i<DIM)
{
numeri[i++]=c;
}
numeri[i+1]='0';
printf("Numeri: %s", numeri);
return 0;
}
Tre cose non mi sono chiare!
1) perché se inserisco la sequenza: 123456 mi viene stampato 123456 e se invece inserisco la sequenza 0123456789/ mi viene stampato: 0123456789/0?
2) Come posso fare per non memorizzare il carattere di fine immissione /?
3) Se io inserisco la sequenza: 012345678912/ come mai mi viene stampato 012345678910, non dovrebbe essere sbagliato, in quanto il vettore numero ha dimensione 10, in questo caso invece mi viene stampato un vettore con dimensione 12!
Grazie mille, scusate ma ho un bel po' di confusione su questo argomento! Se un vettore ha dimensione 10, e chiedo di immettere numeri fino a quanto i è minore di 10, il programma non dovrebbe scartare tutti i numeri che non rientrano più nel vettore?
Ciaoo
).