PDA

Visualizza la versione completa : [C] Riempire array con numeri interi


pabe72
17-09-2014, 14:37
Ciao, sto cercando di imparare un pò di C. Sono davvero agli inizi e ho bisogno di un aiuto.
Qui di seguito vi riporto il testo di un programmino per riempire un array con dei numeri interi:




#include <stdio.h>


void inserisciArray (int array[], int n); //prototipo della funzione


int main ()


{


int array[]={0,0,0,0,0};


int i=0;


inserisciArray (array,5);


for (i=0;i<5;i++)


{


printf("%d\t",array[i]);


}


return 0;


}


void inserisciArray (int array[], int n) //scrivo la funzione


{


int i=0;


for (i=0;i<n;i++)


{


printf("Inserisci un numero:\n");


scanf("%d",&array[i]);


}



Questo programmino funziona perfettamente.
Ora, voglio modificare il programmino in modo da poter riempire un array con dei caratteri ... e qui casca l'asino ... Io lo ho modificato come segue, ma ovviamente non funziona:




#include <stdio.h>


void inserisciArray (char array[], int n); //prototipo della funzione


int main ()


{


char array[]={0,0,0,0,0};


int i=0;


inserisciArray (array,5);


for (i=0;i<5;i++)


{


printf("%c\t",array[i]);


}


return 0;


}


void inserisciArray (char array[], int n) //scrivo la funzione


{


int i=0;


for (i=0;i<n;i++)


{


printf("Inserisci una lettera:\n");


scanf("%c",&array[i]);


}

}



Qualcuno mi aiuta a capire cosa sbaglio?!
Grazie mille

oregon
17-09-2014, 14:41
Il problema potrebbe essere nella scanf perché il buffer rimane sporco per l'uso del tasto invio.
Dopo la scanf utilizza una linea

while(getchar()!='\n');

pabe72
17-09-2014, 15:00
Grazie mille! Così funziona.

minomic
17-09-2014, 15:22
Se non sbaglio (ora non ho tempo di provare) un'altra soluzione potrebbe essere quella di inserire uno spazio nella scanf, quindi


scanf(" %c", ...);


E' giusto?

Scara95
17-09-2014, 16:05
Se non sbaglio (ora non ho tempo di provare) un'altra soluzione potrebbe essere quella di inserire uno spazio nella scanf, quindi


scanf(" %c", ...);


E' giusto?
Uno spazio rimuove qualsiasi blank. Se l'utente decidesse di inserire uno spazio la tua soluzione non funzionerebbe in quanto la rimozione non si fermerebbe a '\n'.
Prova ad eseguire questo inserendo solamente degli spazi e te ne renderai conto
#include <stdio.h>

int main(void) {
char c;
scanf("%c", &c);
printf("Carattere [%c]\n", c);
while(getchar()!='\n');
scanf("%c", &c);
printf("Carattere [%c]\n", c);
scanf(" %c", &c);
printf("Carattere [%c]\n", c);
return 0;
}

Loading