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

    [C] Funzione che scarica l'input

    Ciao a tutti

    Mettiamo che prendo dei dati da tastiera così:
    codice:
    fgets(stringa, DIM+2, stdin)
    Esiste una funzione che elimina tutto quello che c'è dopo DIM+2 caratteri?
    Cioè se l'utente inserisce troppi caratteri, questa scarta quelli in più indipendentemente da quanti sono?

    Grazie.

  2. #2
    Ci sono vari modi per elminare i caratteri in eccesso . Il più semplice è quello di porre semplicemente stringa[DIM+2]='\0' , oppure utilizzare la funzione strcpy() . Saluti

  3. #3
    Il problema è che per un certo numero di volte (ciclicamente) vado a leggere un certo numero di caratteri da tastiera con fgets.
    Se non elimino i caratteri in più al ciclo successivo la fgets mi va a prendere quei caratteri che non deve prendere.

    Adesso provo a leggere DIM+2 caratteri e poi:
    codice:
    while((car1=getchar())!='\n');

    Vediamo...

  4. #4
    Per eliminare dal buffer i caratteri eccedenti il primo prelievo
    devi utilizzare la funzione fflush(stdin)
    esempio:
    codice:
    #define DIM 5 // numero massimo di caratteri (4) +1 per il terminatore
    int main()
    {
    	char stringa[DIM];
    	for(int ciclo=0; ciclo <3; ciclo++)
    	{
    		fflush(stdin); // Svuota il contenuto del buffer di input
    		fgets(stringa, DIM, stdin);
    		printf("stringa[2%d] = \"%s\"\n", ciclo, stringa);
    	}
    	return EXIT_SUCCESS;
    }
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  5. #5
    Grazie 1000

    Per ora ho usato lo stratagemma del while.
    Per le prossime volte terrò conto di questa funzione.

    Se per esempio faccio
    codice:
    fflush(nome_file);
    Cosa succede? Elimina tutto il contenuto del file?

  6. #6
    Originariamente inviato da spiderontheweb
    Grazie 1000

    Per ora ho usato lo stratagemma del while.
    E' solo un pò meno elegante
    Per le prossime volte terrò conto di questa funzione.

    Se per esempio faccio
    codice:
    fflush(nome_file);
    Cosa succede? Elimina tutto il contenuto del file?
    Se gli passi come parametro lo stream associato ad un file, aperto in scrittura, si.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

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