Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99

    [C] viene ignorata fgets.

    Ciao a tutti, ho un problema con la funzione fgets(), in pratica devo inserire un valore e poi un altro, ma mi salta direttamente al secondo senza darmi possibilità di inserire il primo.
    ecco qua il frammento di codice:
    codice:
    void riempiVettore()
    {
        int i;
        printf("Inserisci numero studente, -1 per terminare: ");
        scanf("%d",&i);
        while(i!=-1){
            printf("Inserisci cognome di studente %d: ",i);
            fgets(Studente[i-1].cognome, 25, stdin);
    
            printf("Inserisci nome di studente %d: ",i);
            fgets(Studente[i-1].nome, 25, stdin);
    
    ...
    cosa potrei fare per ovviare il problema? o cosa potrei usare invece di fgets? (gets mi è stato consigliato di non usarlo)

  2. #2
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99
    Grazie per la risposta, con il "\n" nella scanf in effetti funziona, ma mi fa la fgets prima di scrivermi la printf

    inoltre quando prendo il valore con la fgets inserisce anche il carattere di new line e quando poi più avanti chiedo di scriverlo in printf con %s mi va a capo, come potrei fare per escludere il carattere \n dal nome che inserisco?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    E' l'ultimo carattere della stringa ... scrivi un NULL nell'ultimo carattere della stringa
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99
    Risolto tutti e due i problemi usando scanf anche per le stringhe,
    grazie comunque per gli aiuti

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Era meglio la fgets
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99
    Le reali differenze quali sono?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    La differenza è che la fgets è "sicura", la scanf, usata in quel modo, no.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99
    mmh ok allora provvederò a leggermi bene come si usa, grazie mille per i consigli

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.