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

    [c]fgets vs scanf

    Ho letto molte discussioni nelle quali si parlava dell'instabilità di scanf. Il problema principale che ho riscontrato è stato il fatto che scanf accetta anche char se gli dico di accettare int, e il programma mi va in overflow. In pratica non controlla l'input. Mentre fgets teoricamente dovrebbe farlo. Ho letto un pò di cose su fgets e volevo sapere...
    è vero che fgets non mi andrà in overflow se gli dò un char invece che un int? in tal caso dovrebbe essere la sintassi
    char *fgets(char *s, int size, FILE *fd)
    oppure
    int *fgets(int *s),int size, file *fd)?

    e file *fd lo posso omettere visto che non voglio leggere da un file ma il programma sta tutto in un file a se stante? come mi devo comportare se voglio memorizzare in x un numero nel mio file con fgets?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [c]fgets vs scanf

    Originariamente inviato da rubyno
    Ho letto un pò di cose su fgets e volevo sapere...
    Esempio:
    codice:
    char buf[30];
    int a, b;
    
    if (fgets (buf, sizeof (buf), stdin) != NULL)
    {
        if (sscanf (buf, "%d %d", &a, &b) == 2)
            printf ("a=%d b=%d\n", a, b);
        else
            printf ("Errore\n");
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3

    Re: [c]fgets vs scanf

    Originariamente inviato da rubyno
    Ho letto molte discussioni nelle quali si parlava dell'instabilità di scanf. Il problema principale che ho riscontrato è stato il fatto che scanf accetta anche char se gli dico di accettare int, e il programma mi va in overflow. In pratica non controlla l'input. Mentre fgets teoricamente dovrebbe farlo. Ho letto un pò di cose su fgets e volevo sapere...
    è vero che fgets non mi andrà in overflow se gli dò un char invece che un int? in tal caso dovrebbe essere la sintassi
    char *fgets(char *s, int size, FILE *fd)
    oppure
    int *fgets(int *s),int size, file *fd)?

    e file *fd lo posso omettere visto che non voglio leggere da un file ma il programma sta tutto in un file a se stante? come mi devo comportare se voglio memorizzare in x un numero nel mio file con fgets?
    ma FILE * gli dice da che stream lui prende i dati, nel tuo caso dallo stdin....

    e in ogni caso se vuoi un controllo su cio che metti in ingresso potresti usare funzioni come isdigit(variabile) unite alla getch()....

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.