PDA

Visualizza la versione completa : [c] Aiuto "%c"


Power Dragon
14-06-2010, 13:07
Dobbiamo inizializzare un array di char con una dimensione già prefissatae in un secondo momento visualizzarea video il suo contenuto.
ecco qui il codice:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{


char array[5];
int i;


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

printf("dammi car \n");
scanf( "%c" , &array[i] );

}

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

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

}



system("pause");
return 0;
}


Compila ma sbaglia ad eseguire: in pratica, al secondo "colpo"di for scrive due volte: "dammi char" e poi la ricostruzione della'rray è arrata.
Purtroppo siamo OBBLIGATI a usare scanf() e non gets/puts e ci è vietato l'uso della libreria "string.h"
Abbiamo usato anche il "%s" e sappiamo che va, ma perché non va con il "%c"?
Sapete come risolvere??? Usiamo Geany con Ubuntu, grazie per la risposta

YuYevon
14-06-2010, 13:22
Classico problema del carattere di newline che rimane nel buffer dello stream di input standard e ti fa "saltare" l'istruzione di input da tastiera successiva...



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

printf("dammi car \n");
scanf( "%c" , &array[i] );
while (getchar() != '\n');

}


in questo modo elimini appunto il newline rimasto nel buffer e non hai problemi. Si può anche ricorrere a fflush(stdin) ma il comportamento della funzione su stdin non è definito dallo standard, di conseguenza la soluzione non funziona con tutti i compilatori...



Usiamo Geany con Ubuntu, grazie per la risposta


Togliete quel system("pause") allora ;D

Loading