Paolo Guccini
"Impossibile" non è mai la risposta giusta
Cosa fa:
Varie funzioni per effettuare ricerche in matrice, verificare che una stringa sia numerica o testuale, rimuovere caratteri di controllo o spazi, suddividere una stringa (split) in una matrice, ...
Parti di questo progetto:
Il materiale accessibile da queste pagine fanno parte di una serie di progetti per i quali non è previsto ulteriore sviluppo, ma mantengono la propria validità per studio o base per implementarle in altri progetti. Il loro impiego in altri software e' libero. La loro riproduzione su siti e/o stampa deve avvenire nel rispetto della normativa del diritto d'autore. Per qualunque domanda, mandare una email utilizzando la sezione Contatti di questo sito.
Modulo:
Listato/Codice sorgente: /* * Examples * -123 diventa : * * ***-123 padstrleft( d,"-123" , 7 , "*" ) * -***123 padstrleftnegsx( d,"-123" , 7 , "*" ) * ***123- padstrleftnegdx( d,"-123" , 7 , "*" ) * */ // ------------------------------------------------------------------------ #include <ctype.h> #include <string.h> void padstrleftbase( char *dest , char * sorg , int lung , char *car ) ; char * padstrleft( char *dest , char * sorg , int lung , char *car ) ; char * padstrleftnegdx( char *dest , char * sorg , int lung , char *car ) ; char * padstrleftnegsx( char *dest , char * sorg , int lung , char *car ) ; /* ----------------------------------------------------------------------- * Function * allinea un numero a destra riempiendo a sinistra con il carattere * di padding * Notes * NON usare questa funzione in quanto vuole essere la base per * le altre ad uso utente */ void padstrleftbase( char *dest , char * sorg , int lung , char *car ) { /* inserimento carattere di padding */ for ( lung -= strlen( sorg ) ; lung-- ; ) { * dest ++ = * car ; } /* inserimento sella stringa numeri */ while ( *sorg ) { *dest ++ = * sorg ++ ; } /* chiude nuova stringa */ * dest = 0x00 ; } /* ----------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- * Function * allienea un numero (in formato stringa) a destra e mette a * sinistra il carattere car * il segno meno non comporta elaborazioni di posizione (appare * nella posizione in cui si trova) * Parameters * puntatore stringa destinzione * puntatore stringa contenente il numero * lunghezza della stringa da ottenere * carattere da inserire a sinistra * Returns * puntatore alla stringa ottenuta */ char *padstrleft( char *dest , char * sorg , int lung , char *car ) { padstrleftbase( dest , sorg , lung , car ) ; return dest ; } /* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- * Function * allienea un numero (in formato stringa) a destra e mette a * sinistra il carattere car * il segno meno (se il numero e' negativo) compare nella prima * posizione a sinistra) * Parameters * puntatore stringa destinzione * puntatore stringa contenente il numero * lunghezza della stringa da ottenere * carattere da inserire a sinistra * Returns * puntatore alla stringa ottenuta */ char *padstrleftnegsx( char *dest , char * sorg , int lung , char *car ) { char *dest_1 = dest ; /* controllo numero negativo */ if ( *sorg == '-' ) { * dest ++ = * sorg ++ ; lung -- ; } padstrleftbase( dest , sorg , lung , car ) ; return dest_1 ; } /* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- * Function * allienea un numero (in formato stringa) a destra e mette a * sinistra il carattere 'car' * il segno meno (se il numero e' negativo) compare nella ultima * posizione) * Parameters * puntatore stringa destinzione * puntatore stringa contenente il numero * lunghezza della stringa da ottenere * carattere da inserire a sinistra * Returns * puntatore alla stringa ottenuta */ char *padstrleftnegdx( char *dest , char * sorg , int lung , char *car ) { char *dest_1 = dest ; int negativo = 0 ; /* controllo numero negativo */ if ( *sorg == '-' ) { sorg ++ ; negativo = 1 ; lung-- ; } padstrleftbase( dest , sorg , lung , car ) ; /* accoda segno meno */ if ( negativo ) { strcat( dest , "-" ) ; } return dest_1 ; } // Paolo Guccini (lettori@paologuccini.it) /* ---------------------------------------------------------------------- */ /* #include <stdio.h> main () { char s[80] , d[80] ; printf( "\n\n\n" ) ; strcpy( d , " " ); printf( "%s\n" , padstrleft( d,"-123" , 7 , "*" ) ) ; strcpy( d , " " ); printf( "%s\n" , padstrleftnegsx( d,"-123" , 7 , "*" ) ) ; strcpy( d , " " ); printf( "%s\n" , padstrleftnegdx( d,"-123" , 7 , "*" ) ) ; return 0 ; } */