Funzione per pulire schermo sia windows, Linux, Mac

di il
13 risposte

Funzione per pulire schermo sia windows, Linux, Mac

Ciao, volevo chiedere se esiste un modo(codice) in C, magari tramite qualche libreria particolare di scegliere il sistema operativo sulla quale si deve operare, ad esempio un possessore di un sistema Windows può scegliere di usare system ("cls"); o system("PAUSE"); ed uno di Linux system ("clear"); getchar (); getchar (); il tutto deve essere automatico.

Esiste qualche modo per selezionare l' architettura ? Ne sarei felice se riuscissi a trovare un modo per fare una cosa del genere.
Grazie mille in anticipo.

13 Risposte

  • Re: Funzione per pulire schermo sia windows, Linux, Mac

    Dato che devi ricompilare userai il preprocessore ad esempio

    #ifdef __linux__
    //linux code
    #elif _WIN32
    // windows code
    #else

    #endif

    Guarda questo sito

    http://sourceforge.net/p/predef/wiki/OperatingSystems
  • Re: Funzione per pulire schermo sia windows, Linux, Mac

    oregon ha scritto:


    Dato che devi ricompilare userai il preprocessore ad esempio

    #ifdef __linux__
    //linux code
    #elif _WIN32
    // windows code
    #else

    #endif

    Guarda questo sito

    http://sourceforge.net/p/predef/wiki/OperatingSystems
    Grazie mille, questo va inserito all' inizio...dove si dichiarano i define ?
  • Re: Funzione per pulire schermo sia windows, Linux, Mac

    Dove ti serve
  • Re: Funzione per pulire schermo sia windows, Linux, Mac

    Ad esempio, non so se ho colto il concetto per intero...se ho bisogno di pulire lo schermo sia in windows che in linux in un menù scrivo, indipendentemente dall' architettura che c'è nel pc:

    ovvimente inserendo l' istruzione system("cls");
    #ifdef __linux__
    
    
    #elif _WIN32
    
    
        do {
            printf("1.\n");
            printf("2. \n");
            printf("3. \n");
            printf("4. \n");
            printf("5. \n");
            printf("0. \n\n");
            
            printf("\tScelta: ");
            scanf("%d", &scelta);
                    
            #else
    
    #endif
  • Re: Funzione per pulire schermo sia windows, Linux, Mac

    Il codice che ti ho proposto era un esempio. Non devi applicarlo sempre e comunque ma ragionarci e utilizzarlo dove e nella misura in cui serve.

    Ad esempio, potresti scrivere
    
    #include <stdlib.h>
    
    #ifdef __linux__
    	#define CANCELLA_VIDEO "CLEAR"
    #endif
    
    #if _WIN32
    	#define CANCELLA_VIDEO "CLS"
    #endif
    
    
    int main()
    {
    	system(CANCELLA_VIDEO);
    
    	return 0;
    }
    
  • Re: Funzione per pulire schermo sia windows, Linux, Mac

    Con system cls funziona perfettamente, con getchar(); non funziona...c'è un modo alternativo per fare system("PAUSE");
  • Re: Funzione per pulire schermo sia windows, Linux, Mac

    Non funziona cosa? Quale codice?
  • Re: Funzione per pulire schermo sia windows, Linux, Mac

    oregon ha scritto:


    Non funziona cosa? Quale codice?
    Ho inserito un altro define con scritto pausa getchar(); getchar();
  • Re: Funzione per pulire schermo sia windows, Linux, Mac

    Per mostrarci il codice dobbiamo pregarti?
  • Re: Funzione per pulire schermo sia windows, Linux, Mac

    oregon ha scritto:


    Per mostrarci il codice dobbiamo pregarti?
    
    #include <stdlib.h>
    
    #ifdef __linux__
       #define PULISCI_SCHERMO "CLEAR"
       #define PAUSA getchar(); getchar();
    
    #endif
    
    #if _WIN32
       #define PULISCI_SCHERMO "CLS"
      #define PAUSA system("cls");
    #endif
    
    
    int main(){
      system(PULISCI_SCHERMO);
       printf("1, 2, 3, 4....");
       
    
       return 0;
    }
    
    questo è un esempio...getchar(); che in linux scritto 2 volte significa pausa non funziona con questa funzione. invece system("PAUSE"); si...sbaglio qualcosa ?
  • Re: Funzione per pulire schermo sia windows, Linux, Mac

    Non te la prendere ma un buon libro sul linguaggio C, partendo dal primo capitolo, non farebbe male leggerlo ... non penserai di imparare il C a spizzichi e bocconi facendo qualche domanda sul forum e attaccando pezzi di codice senza senso ...

    Comunque ...

    Nel main ... alla fine
    
    ...
    ...
    ..
    
    #ifdef __linux__
       getchar(); 
       getchar();
    #endif
    
    #if _WIN32
       system("PAUSE");
    #endif
    
      return 0;
    }
    
  • Re: Funzione per pulire schermo sia windows, Linux, Mac

    oregon ha scritto:


    Non te la prendere ma un buon libro sul linguaggio C, partendo dal primo capitolo, non farebbe male leggerlo ... non penserai di imparare il C a spizzichi e bocconi facendo qualche domanda sul forum e attaccando pezzi di codice senza senso ...

    Comunque ...

    Nel main ... alla fine
    
    ...
    ...
    ..
    
    #ifdef __linux__
       getchar(); 
       getchar();
    #endif
    
    #if _WIN32
       system("PAUSE");
    #endif
    
      return 0;
    }
    
    ma le cose basi le so, solamente questa cosa è la prima volta che la vedo, non sapevo nemmeno che si potesse fare una cosa del genere...e soprattutto noi queste cose non le abbiamo mai fatte all' università
  • Re: Funzione per pulire schermo sia windows, Linux, Mac

    Appunto... Per tutti i motivi che hai scritto e dato che parliamo di roba di base, affrontala sui libri
Devi accedere o registrarti per scrivere nel forum
13 risposte