Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16
  1. #11
    Ho provato ad usare quanto si scritto, non mi crea alcun errore eccetto uno:

    in esecusione appena premo un tasto passa all'istruzione successiva stampando il carattere che ho inserito più altri che non ho mai meso.

    Il problema che io compe parametro passo il valore 2 e lui legge un solo valore da tastiera.

  2. #12

    Codice controllo

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    
    int main (){
    	char pro[3];
    	printf("\n\ninserire la prima coordinata: ");
    	scanf("%3s", pro);
    	printf("\n\nin posizione 3 c'è il carattere %c %d\n\n",pro[3],(int)pro[3]);
    	if((int)pro[3] != '\n')//controla se il carattere successivo è lo spazio e genera un errore
    		printf("\nErrore %c\n",pro[3]);
    	
    	while ( getchar() != '\n' ); //ripulisce il buffer
    }
    faccio il controllo sul terzo carattere per vedere se è \n e quindi poter dare l'errore se così non fosse ma non va.. non funge.. stampa come codice del terzo carattere dopo l'invio il valore -73 e se inserisco uno spiazio stampa sempre -73...

  3. #13
    Utente bannato
    Registrato dal
    Nov 2004
    Messaggi
    202
    Scusate... mi intometto nella discusiione ma anche io ho un problema simile...
    inoltre ho bisogno di sontrollare i dati immessi che devono essere solo numerici.. come posso fare ?

  4. #14
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Io ho avuto un problema di questo tipo e risolsi con conio.h e getch. Esempio:
    codice:
    #include <conio.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    void GetString(int lenght, char *buffer, bool allowedchars[256])
    {
        int i;
        for(i = 0; i < lenght;)
        {
            int a = getch();
            if (allowedchars[a]) 
            {
                buffer[i] = a;
                putch(a);
                i++;
            }  
        }
        buffer[i] = '\0';
    }
    
    int main()
    {
        bool OkChars[256];
        for (int i = 0; i < 256; i++) OkChars[i] = false;
        for (int i = 65; i < 91; i++) OkChars[i] = OkChars[i+32] = true;
        char str[4];
        GetString(3, str, OkChars);
        printf("\n%s", str);
        getch();
    }
    Questa versione permette anche di stabilire i caratteri permessi.

  5. #15
    il codice qui sopra è per win se non erro, in linux non mi va.. ma va bhè resa l'idea penso che possa riconvertirlo abbastanza facilmente

    Grazie!

  6. #16
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Ti conviene leggerti il file proposto da kentaromiura per vedere come fare input senza buffering.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.