Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    [C] Problema con system("pause")

    Ragazzi mi succede una cosa strana:

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include "liste.h"
    
    int main(int argc, char *argv[])
    {
        char choise;
        char cont;
        NODO *L;
        L = NULL; 
        int element;
      
        do
        {
            printf("GESTIONE DI UNA LISTA:\n\n");
            printf("[1].     Inserisci un elemento nella lista:\n");
            printf("[2].     Stampa la lista:\n");
            printf("[3].     Cancella elemento dalla lista(estrazione in testa)\n");
      
            choise = getchar();
      
            switch(choise)
            {
               case '1':
                    // Inserisco un elemento nella lista.
                    printf("Inserisci l'elemento(int) da inserire:\n");
                    scanf("%d", &element);
                    L=AddToList(L, element);
               break;
               
               case '2':
                    // Stampo la lista.
                    StampList(NULL);  
               break;
               
               case '3':
                    ;
               break;
            }
    
            printf("Vuoi continuare ? (s/n)\n");
            cont = getchar();
        
        } while ( cont == 's' );
        
        system("\nPAUSE");
    }
    Praticamente quando effettuo una scelta, esempio 1, mi fà inserire l'elemento richiama la funzione e poi dopo e come se non considerasse il while, cioè mi esce scritto:

    Vuoi continuare ? (s/n)
    Clicca un tasto per continuare . . .

    Cioè senza contare cont = getchar();

    Come mai?

    Grazie anticipatamente
    Con i sogni possiamo conoscere il futuro...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E' la solita questione del buffer "sporco" a causa della scanf.

    Ne abbiamo parlato centinaia di volte nel forum (e probabilmente anche con te).


    P.S. Ma che c'entra la system che hai indicato nel titolo???
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Al posto della system("pause") potresti mettere una semplice getchar() di cui non prendi il valore:

    codice:
    printf("Programma terminato, premere invio per continuare\n");
    getchar();
    Invece di fare una chiamata di sistema che tra l' altro è dispendiosa.

    Comunque penso che si dovrebbe mettere un thread permanente che spiega come risolvere questo problema del buffer, è una cosa controintuitiva per il programmatore alle prime armi.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Who am I
    Comunque penso che si dovrebbe mettere un thread permanente che spiega come risolvere questo problema del buffer, è una cosa controintuitiva per il programmatore alle prime armi.
    Concordo pienamente.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.