Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [c]problema lettura carattere da tastiera

    ciao a tutti..non riesco a leggere un carattere da tastiera pur facendo tutto giusto..praticamente l'esecuzione non si ferma quando ce' da inserire il dato.Ho provato anke con getchar ma non si ferma.Solo se metto %s si ferma l'esecuzione e legge l'input..com'e' possibile?
    io faccio questo:

    char lett;
    while(flag==1);
    {-
    -
    -
    printf("inserisci lettera\n");
    scanf("%c", &lett);
    -
    -
    }

  2. #2

    Re: [c]problema lettura carattere da tastiera

    Originariamente inviato da maninblack
    ciao a tutti..non riesco a leggere un carattere da tastiera pur facendo tutto giusto..praticamente l'esecuzione non si ferma quando ce' da inserire il dato.Ho provato anke con getchar ma non si ferma.Solo se metto %s si ferma l'esecuzione e legge l'input..com'e' possibile?
    io faccio questo:

    char lett;
    while(flag==1);
    {-
    -
    -
    printf("inserisci lettera\n");
    scanf("%c", &lett);
    -
    -
    }
    Oh sii ch è possibile... VVoVe: queste funzioni di IO del c non sono programmate benissimo a mio avviso e danno di questi problemi.Spesso sono dovuti a dei caratteri spuri presenti nello stream di input standard,sinceramente non ho una soluzione definitiva al tuo problema,io in genere quando me lo da mi "arrangio" cercando di modificare il prog a seconda della situazione.Comunque in genere questi cicli controllati solo dalla funzione di lettura li evito come la peste.Un problema simile lo da anche la fread su un file se metti come condizione di terminazione l'incontro del carattere EOF,in teoria dovrebeb funzionare ma di fatto a me non ha mai funzionato.In genere quel problema lo risolvo con una cosa del tipo while(fread(..bla bla bla..) > 0) dato che fread ritorna -1 a fine file o in caso di problemi.Prova a seguire questa "pista" anche nel tuo caso
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    ho provato a dichiarare la mia var come globale e adesso me la legge!!! possibile??

  4. #4
    Originariamente inviato da maninblack
    ho provato a dichiarare la mia var come globale e adesso me la legge!!! possibile??
    Non saprei come spiegare la cosa,come ti ho detto o smesso di considerare le varie getchar,scanf etc...del c come "una scienza esatta",devi attendere risposte di gente più informata di me in questo settore del c
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #5
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119

    Re: [c]problema lettura carattere da tastiera

    Originariamente inviato da maninblack
    ciao a tutti..non riesco a leggere un carattere da tastiera pur facendo tutto giusto..praticamente l'esecuzione non si ferma quando ce' da inserire il dato.Ho provato anke con getchar ma non si ferma.Solo se metto %s si ferma l'esecuzione e legge l'input..com'e' possibile?
    io faccio questo:
    Credo sarebbe preferibile allocare dinamicamente lett:
    codice:
    ...
    char * lett = (char*) malloc(sizeof (char));
    ...
    ...
    ...
    scanf("%c", lett);
    ...

    (Maledetti apici...)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    420
    Salve a tutti, scusate se m'intrometto ma la discussione si fa interessante....
    unomichisiada: mi sai fare un esempio di quello che dici x la fread?

    io ho dei problemi con la fwrite perchè mi salva un record in più (l'ultimo due volte) ma il codice è giustissimo
    the sALIEN

  7. #7
    Originariamente inviato da thesalien
    Salve a tutti, scusate se m'intrometto ma la discussione si fa interessante....
    unomichisiada: mi sai fare un esempio di quello che dici x la fread?

    io ho dei problemi con la fwrite perchè mi salva un record in più (l'ultimo due volte) ma il codice è giustissimo
    Mi dispiace non ho esempi sottomano al momento,dovrei cercarli (in mezzo ad un bel po di roba) ed anche se cerco di tenermi organizzato mi ci vorrebeb un po mentre non ho tempo.Comunque stai tranquillo,il tuo problema non credo sia legato a quello della fread,a me la fwrite non ha mai dato problemi di sorta,si tratta di qualcos'altro al 90% nel tuo caso.La fread non è che dia poi un vero è proprio problema poi,diciamo che questo benedetto carattere EOF lo ignorano abbastanza un po tutte le funzioni di INPUT (nota bene di INPUT,mentre fwrite e di output).Ciao
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  8. #8
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Penso che dipende dal fatto che quando leggi singoli caratteri il carattere di fine linea resta nello strem di input, che dovrebbe essere svuotato dopo o prima della lettura con fflush(stdin), prova con:

    char lett;
    while(flag==1);
    {-
    -
    -
    printf("inserisci lettera\n");
    //svuoto il buffer di input
    fflush(stdin);
    scanf("%c", &lett);
    -
    -
    }

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    65
    metti prima della scanf


    codice:
    fflush(stdin);

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 © 2024 vBulletin Solutions, Inc. All rights reserved.