Problema con fflush

di Anonimizzato26592 il
4 risposte
Salve, sto avendo un problema: non riesco a capire dove mettere l'fflush nel codice che vi ho postato sotto. Il problema si pone al primo gets nella funzione "informazioni_persona", quindi ho pensato di inserire fflush subito dopo lo scanf, però non ho risolto nulla( per la precisione, ho scritto fflush(stdin)), allora l'ho inserita dentro la funzione "informazioni_persona", ma nulla. Come dovrei fare?
	int elementi =1;
	int dim = 0, i = 0;
	int scelta = -1;
	persona p;
	list lista_persone;
	inizializza_lista(&lista_persone);
	while (scelta = menu()!=0) {
		switch (scelta) {
		case 1: printf("Quanti elementi vuoi inserire?\n");
			scanf("%d", &dim);
			for (i = 0; i < dim; i++) {
				p = informazioni_persona();
				inserimento_ordinato(&lista_persone, p);



persona informazioni_persona() {
	persona temp;
	printf("inserisci nome\n");
	gets_s(temp.nome,10);
	printf("inserisci cognome\n");
	gets_s(temp.cognome,20);
	printf("inserisci eta'\n");
	scanf("%d", &temp.eta);
	
	return temp;

4 Risposte

  • E la funzione menu dov'è?
  • Devi descrivere il problema che vuoi risolvere. Comunque sarebbe meglio che fflush(stdin) non sia parte della soluzione in ogni caso, perché ha comportamento indefinito secondo lo standard
  • Weierstrass ha scritto:


    Devi descrivere il problema che vuoi risolvere. Comunque sarebbe meglio che fflush(stdin) non sia parte della soluzione in ogni caso, perché ha comportamento indefinito secondo lo standard
    Allora, non dovendo utilizzare fflush, come faccio a svuotare il buffer? O comunque, come faccio a non far saltare il primo gets dopo lo scanf nel case 1 ?
  • Non hai neanche letto quello che ti ho scritto?

    Il fflush funziona adesso solo con compilatori MS.

    Usa una while per svuotare il buffer esistono tanti thread in questo forum fai una ricerca
Devi accedere o registrarti per scrivere nel forum
4 risposte