[C] getch e scanf dentro un while

di il
5 risposte

[C] getch e scanf dentro un while

Ciao ragazzi sono nuovo. Ho appena iniziato a programmare in C per lavoro e ho subito notato questo forum.
Avrei bisogno di un aiuto per una piccola questione. Sto facendo un programmino che funga da interfaccia utente, stampi a schermo delle opzioni e dei comandi che siano poi cliccabili da tastiera. Funziona tutto, c'è solo una cosa che mi irrita. In pratica quando l'utente schiaccia il tasto "T" si gli chiede successivamente di inserire un altro valore (un byte in formato hex), questo viene letto correttamente ma essendo composto da 2 cifre mi appare il messaggio a schermo di Error: digitazione errata perchè non viene premuto nessun tasto riconosciuto.
Primo non capisco perchè appare questo messaggio... una volta che entro nel "case : T" il sistema dovrebbe rimanere in attesa per la scanf e fare il getch() soltanto dopo che ho premuto invio.
Secondo vorrei sapere un modo per evitare che venga mostrato il messaggio di errore che potrebbe confondere gli utilizzatori...
Grazie a tutti, spero di essere stato chiaro

while(1){
  	  digit2=getch();
  	  printf(" Typed: %c\n", digit2-32);
	  switch(digit2){
	 
          case T:
  		  close(pipe2[0]);
  		  close(piped[0]);
  		  pkt_flag=1;
  		  puts("\nPacket type: defined");
  		  puts("\nSelect pattern in hexadecimal format: 0x**h");
  		  scanf("%02x",&bob);
  		  write(piped[1], &bob, sizeof(unsigned char));
  		  write(pipe2[1], &pkt_flag, sizeof(int));
  		  break;
           ...
           ...
          default: 
                 puts(" \n ERROR: type \"m\" for intructions");
  		 break;
         }
}

5 Risposte

  • Re: [C] getch e scanf dentro un while

    Nessuno mi sa aiutare o nessuno ha capito quello che ho scritto?
  • Re: [C] getch e scanf dentro un while

    L'utente deve scrivere solamente le due cifre esadecimali, ad esempio

    A5

    P.S. Al posto di

    case T

    forse volevi scrivere

    case 'T'

    Senza gli apici T è una variabile ...
  • Re: [C] getch e scanf dentro un while

    Scusami non ho capito cosa intendi... vuoi dire premere soltanto le due cifre senza invio?
    In questo caso non va avanti perchè è fermo su scanf finchè non premo invio.
  • Re: [C] getch e scanf dentro un while

    No ... ho detto senza 0x e h ...

    A5 e invio
  • Re: [C] getch e scanf dentro un while

    oregon ha scritto:


    No ... ho detto senza 0x e h ...

    A5 e invio
    Ma certo i dati vengono inseriti solo premendo le cifre. Infatti nel printf ho scritto 0x ** h per far capire che si devono inserire solo le due cifre al posto degli asterischi. Ho la sensazione che sia l'invio a generarmi il messaggio di errore.
Devi accedere o registrarti per scrivere nel forum
5 risposte