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

    [Pillola]Formattazione del testo in ambienti UNIX (2 version)

    /*File term2_0.h*/
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    #include<termios.h>
    #include<unistd.h>
    
    /*SOFTWARE sotto licenza gpl (oppure diesel) e' possibile la eventuale modifica del
    codice senza la cancellazione dei commenti originali*/
    
    /****
    *Versione Finale della libreria che permette di usare i colori sulla
    *Console Linux
    *2.0+ final relase Carlesso Cristian //corretto l'errore del cls()
    *****/
    
    /*
    [2.21.05.03 relase]
    
    aggiunto gotoxy,//sposta il cursore in posizione x,y
    retard(base,n)	//aspetta un tempo definito dall' utente con 2 variabili
    e delay(n).	//aspetta un tempo uguale a 100000 cicli macchina per n
    
    >>2.01.06.03 relase nome in codice Cattaratta
    aggiunto: 
    set_raw()	//modo non bufferizzato e sz echo
    unset_raw()	//modo bufferizzato con echo
    Getch()		//getch con echo
    getche()	//getch senza echo
    #allora|?
    versione 2.17.03.04 codename DDT
    >>aggiunto:
    controlli di predefinizione
    Gets(stringa,n)	//legge una stringa di n caratteri(n=\0)
    isNatural(stringa) //controlla se una stringa e solo numerica
    randomize()	//Randomizza il random
    Random(max)	//random da 1 a max
    Random0(max)	//random da 0 a max
    cls() piu veloce 
    quella vecchia rinominata fcls()
    gotoxy risistemata
    Normalizzate tutte le funzioni in modo che inizino tutte con lettera Maiuscola
    Aggiunto Echoset_raw();
    
    ALL Done by Cristian Carlesso Aka Kentaromiura
    
    aggiunta randomxy(min,max) //random da min a max
    
    */
    
    /***********************How to use
    Semplicemente basta mettere il codice colore
    davanti ad una stringa  printf(colore"Ciao");
    poi se si vuole cambiare colore basta fare cosi'
    printf(colore1"ciao "colore2"Mamma!!");
    ovvero dopo la prima stringa mettere il 2 codice colore
    e imettere successivamente la nuova stringa.
    Ogni stringa deve essere racchiusa tra apici;
    I modificatori restano attivi finche' si mette
    un nor o un norm.funzionano come i colori.
    
    esistono i colori di background(sfondo)che sono preceduti da una b
    e i colori di foreground(scritta):
     ------------------------------------
    |  Colore  | Foreground | Background |
     ------------------------------------
    | NERo     |   nero     |   bnero    |
    | ROSSo    |   rosso    |   brosso   |
    | VERDe    |   verde    |   bverde   |
    | GIALLo   |   giallo   |   bgiallo  |
    | BLu      |   blu      |   bblu     |
    | MAGENTa  |   magenta  |   bmagenta |
    | ACQUa    |   acqua    |   bacqua   |
    | BIANCo   |   bianca   |   bbianca  |
    ************+++++***********************/
    /*DEFiNiZiONE Del tipo Bool + true e false *//*Aggiunto un paio di controlli*/
    
    #ifndef true
    #define true 1
    #endif
    #ifndef True
    #define True 1
    #endif
    
    #ifndef false
    #define false 0
    #endif
    
    #ifndef False
    #define False 0
    #endif
    
    #ifndef bool
    #define bool char
    #endif
    
    #ifndef Bool
    #define Bool char
    #endif
    
    
    /*Funzioni nuove! aggiunte*/
    struct termios old_attr,new_attr;
    bool modo_gia_settato=0;
    void set_raw()
    {if (modo_gia_settato==0){
    if(tcgetattr(STDIN_FILENO,&old_attr)<0)
        {
        perror("tcgetattr");
        exit(EXIT_FAILURE);
        }
        memcpy(&new_attr,&old_attr,sizeof(struct termios));
        new_attr.c_lflag &= ~(ICANON|ECHO); /*NON CANONICAL MODE*/
    /*    new_attr.c_iflag &= 0xFF; */
        if(tcsetattr(STDIN_FILENO,TCSANOW,&new_attr)<0)
    	{perror("tcsetattr");
    	 exit(EXIT_FAILURE);
    	}
    modo_gia_settato=1;
    }
    }
    
    
    #ifndef Set_raw
    #define Set_raw() set_raw()
    #endif
    
    void Echoset_raw()
    {if (modo_gia_settato==0){
    if(tcgetattr(STDIN_FILENO,&old_attr)<0)
        {
        perror("tcgetattr");
        exit(EXIT_FAILURE);
        }
        memcpy(&new_attr,&old_attr,sizeof(struct termios));
        new_attr.c_lflag &= ~(ICANON); /*NON CANONICAL MODE*/
    /*    new_attr.c_iflag &= 0xFF; */
        if(tcsetattr(STDIN_FILENO,TCSANOW,&new_attr)<0)
    	{perror("tcsetattr");
    	 exit(EXIT_FAILURE);
    	}
    modo_gia_settato=1;
    }
    }
    
    void unset_raw()
    {if (modo_gia_settato==1){
    if(tcsetattr(STDIN_FILENO,TCSANOW,&old_attr)<0)
        {
        perror("tcsettattr");
        exit(EXIT_FAILURE);
        }
    }
    modo_gia_settato=0;
    }
    
    #ifndef Unset_raw
    #define Unset_raw() unset_raw()
    #endif
    
    char Getch(){
    char pippo;
        set_raw();
        pippo=getchar();
        unset_raw();
        printf("%c",pippo);
        return pippo;
    }
    
    char getche(){
    char pippo;
        set_raw();
        pippo=getchar();
        unset_raw();
        return pippo;
    }
    #ifndef Getche
    #define Getche() getche()
    #endif
    
    /*Funzione nuova: GOTOXY :non piu bacata*/
    void gotoxy(int X,int Y){printf("\e[%d;%dH",Y,X);}
    #ifndef Gotoxy
    #define Gotoxy(x,y) gotoxy(x,y)
    #endif
    
    /*Funzione nuova: DELAY*/
    void delay(int t){int i;
    while(t>0){
    	    for (i=0;i<100000;i++);
    	    t--;}
    }
    #ifndef Delay
    #define Delay(t) delay(t)
    #endif
    
    /*Funzione nuova: RETARD*/
    void retard(int t,int c){
    int i;
    while(t>0){
    	    for (i=0;i<c;i++);
    	    t--;}
    }
    #ifndef Retard
    #define Retard(t,c) retard(t,c)
    #endif
    
    /*Funzione implementata per la gioia di fulvio*/
    void Gets(char stringa[],int n){
    int i=0;
    while(n-1>i++){
    stringa[i-1]=Getch();
    if (stringa[i-1]==127){i-=2;
    		      printf("\b \b");
    		      }
    if (stringa[i-1]=='\n'){i--;
    		      break;
    		}
    }
    printf("i-%d",i);
    stringa[i]='\0';
    }
    
    /*riconosce se la stringa e' un intero(non fa il bounds control)*/
    bool isNatural(char str[]){
    int i;
    for(i=0;;i++){
    if (str[i]=='\0')return true;
    if (str[i] > '9' || str[i] < '0') return false;
    }
    }
    #ifndef Isnatural
    #define Isnatural(s) isNatural(s)
    #endif
    
    /*>>aggiunto funzioni di random e randomize*/
    #ifndef randomize
    #define randomize() srand(time(NULL));
    #endif
    #ifndef Randomize
    #define Randomize() randomize()
    #endif
    
    long Random(long max){
    return rand()%max+1;
    }/*random da 1 a max*/
    
    long Random0(long max){
    return rand()%max;
    }/*random da 0 a max*/
    
    long Randomxy(long min,long max){
    return rand()%max+min;
    }
    /*random da min a max*/
    
    
    /*Modificatori di stringa*/
    #define nor  "\e[;m"
    #define norm "\e[0m"/*Normale*/
    #define lumi "\e[1m"/*Luminoso*/
    #define sott "\e[4m"/*Sottolineato*/
    #define inte "\e[5m"/*Intermittente*/
    #define inve "\e[7m"/*Invertito*/
    #define conc "\e[8m"/*Nascosto?*/
    
    /*Definizione 7 colori di Backgroung*/
    #define bnero "\e[40m"                /*NERO*/
    #define brosso "\e[41m"               /*ROSSO*/
    #define bverde "\e[42m"               /*VERDE*/
    #define bgiallo "\e[43m"              /*GIALLO*/
    #define bblu "\e[44m"                 /*BLU*/
    #define bmagenta "\e[45m"             /*MAGENTA*/
    #define bacqua "\e[46m"               /*ACQUA*/
    #define bbianco "\e[47m"              /*BIANCO*/
    
    /*Definizione 7 colori Foreground*/
    #define nero "\e[30m"                 /*NERO*/
    #define rosso "\e[31m"                /*ROSSO*/
    #define verde "\e[32m"                /*VERDE*/
    #define giallo "\e[33m"               /*GIALLO*/
    #define blu "\e[34m"                  /*BLU*/
    #define magenta "\e[35m"              /*MAGENTA*/
    #define acqua "\e[36m"                /*ACQUA*/
    #define bianco "\e[37m"               /*BIANCO*/
    
    /**/
    #define Nor  "\e[;m"
    #define Norm "\e[0m"/*Normale*/
    #define Lumi "\e[1m"/*Luminoso*/
    #define Sott "\e[4m"/*Sottolineato*/
    #define Inte "\e[5m"/*Intermittente*/
    #define Inve "\e[7m"/*Invertito*/
    #define Conc "\e[8m"/*Nascosto?*/
    
    /*Definizione 7 colori di Backgroung*/
    #define Bnero "\e[40m"                /*NERO*/
    #define Brosso "\e[41m"               /*ROSSO*/
    #define Bverde "\e[42m"               /*VERDE*/
    #define Bgiallo "\e[43m"              /*GIALLO*/
    #define Bblu "\e[44m"                 /*BLU*/
    #define Bmagenta "\e[45m"             /*MAGENTA*/
    #define Bacqua "\e[46m"               /*ACQUA*/
    #define Bbianco "\e[47m"              /*BIANCO*/
    
    /*Definizione 7 colori Foreground*/
    #define Nero "\e[30m"                 /*NERO*/
    #define Rosso "\e[31m"                /*ROSSO*/
    #define Verde "\e[32m"                /*VERDE*/
    #define Giallo "\e[33m"               /*GIALLO*/
    #define Blu "\e[34m"                  /*BLU*/
    #define Magenta "\e[35m"              /*MAGENTA*/
    #define Acqua "\e[36m"                /*ACQUA*/
    #define Bianco "\e[37m"               /*BIANCO*/
    #ifndef Cls
    #define Cls() printf("\e[2J\e[H")
    #endif
    #ifndef Fcls
    #define Fcls() fprintf(stderr,"\033[2J\033[H")
    #endif
    
    /*Clear Screen!*/
    #ifndef cls
    #define cls() printf("\e[2J\e[H")
    #endif
    #ifndef fcls
    #define fcls() fprintf(stderr,"\033[2J\033[H")
    #endif
    
    /**
          *  Real Programmers aren't afraid to use GOTO's.
     
          *  Real Programmers can write five-page-long DO  loops
             without getting confused.
     
          *  Real Programmers like  Arithmetic  IF  statements--
             they make the code more interesting.
     
          *  Real   Programmers   write   self-modifying   code,
             especially  if  they can save 20 nanoseconds in the
             middle of a tight loop.
     
          *  Real Programmers don't need comments--the  code  is
             obvious.
    **/

  2. #2

    come si utilizza la libreria

    questa libreria permette l'utilizzo dei caratteri ansi
    per colorare la shell cosi'
    invece di scrivere
    printf("\e[44mciao");
    è possibile scrivere
    printf(blu"ciao");
    e il risultato sara':
    ciao

    infatti in linux esiste uno standard ansi per colorare
    la shell con l'utilizzo di caratteri di escape.

    questa versione della libreria inoltre permette la non bufferizzazione dell' input della shell
    cosi' da evitare buffer overflow(con opportuni controlli).
    ed alcune funzioni di utilità_

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444
    la random tra min e max non mi convince molto... cmq questo programma funge solo su sistemi unix o anke win?
    *********************************
    Andrea
    *********************************

  4. #4
    e' vero..
    :master:

    devi fare

    return rand()%(max+1-min)+min;


    quella scritta restituisce il rand da min a min+max-1
    alcune funzioni si..
    (tipo la rand..altre dipende se usi una shell bash)
    quindi nel 98% dei casi NO.
    altre (tipo set_raw) proprio non vanno.

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    "BUMP!"

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.