[c] Ciclo do/while, alla seconda iterazioni mi si esegue due volte di seguito

di il
4 risposte

[c] Ciclo do/while, alla seconda iterazioni mi si esegue due volte di seguito

Salve,

E' da molto che, per vari ragioni, non scrivo su questo forum, comunque, riprendo a riscriverci con questo problema.

Sto, dopo tanto tempo in qui lo lasciato perdere, pensando ad altri linguaggi, rivedendo il C, ho questo codice:
#include <stdio.h>
#include <ctype.h>

int main() {
   int vocal_tot = 0;
   char c;
   
   do {
	   printf("Type a character, type '#' to terminate :> ");
	   scanf("%c", &c);
	   
	   c = tolower(c);
	   
	   if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
	      vocal_tot++;
	   }
	   
	   printf("\n");
   }while (c != '#');
   
   printf("Vocal tot => %d", vocal_tot);
}
Fino alla pressione di un carattere ( scanf(%"c", &c) ) tutto bene, premendo invio però, mi stampa due volte il printf(), prima istruzione del do, e cose mi avviene per tutte le iterazione successive, come mai? spero che il mio problema sia chiaro, nel caso, invio una foto di cosa mi accede dopo aver digitato il carattere e premuto invio:


P.S.: Per il resto, se digito # mi esce e mi stampa correttamente il conteggio delle vocali.

4 Risposte

Devi accedere o registrarti per scrivere nel forum
4 risposte