Codice ASCII a 7 bit 0 16 32 48 64 80 96 112 0x 1x 2x 3x 4x 5x 6x 7x 0 x0 NUL 0 @ P p 1 x1! 1 A Q a q 2 x2 " 2 B R b r 3 x3 # 3 C S c s 4 x4 $ 4 D T d t 5 x5 % 5 E U e u 6 x6 & 6 F V f v 7 x7 BEL 7 G W g w 8 x8 BS ( 8 H X h x 9 x9 TAB ) 9 I Y i y 10 xa LF * : J Z j z 11 xb ESC + ; K [ k { 12 xc FF, < L \ l 13 xd CR - = M ] m } 14 xe. > N ˆ n 15 xf /? O _ o DEL Variabili di tipo char Definizione char ch ; Assegnazione ch = K ; ch = 75 ; Lettura scanf("%c", &ch) ; ch = getchar() ; Stampa prf("%c", ch) ; putchar(ch) ; Sequenze di escape \n A capo \t Tabulazione \b Backspace (cancella ultimo carattere) \a Campanello (alert) \r Ritorno carrello sulla stessa riga \\ Carattere di backslash \ \ Carattere di singolo apice \" Carattere di doppio apice " \xnn Carattere il cui codice ASCII vale NN (in base 16) Variabili di tipo stringa Definizione char s[lun+1] ; Assegnazione strcpy(s, "ciao") ; strcpy(s, s2) ; Lettura scanf("%s", s) ; gets(s) ; Stampa prf("%s", s) ; puts(s) ; c 2006 Politecnico di Torino 1
Funzioni della libreria <ctype.h> Nome Parametri Restituisce Descrizione Esempi isalpha char ch vero/falso Lettera maiuscola o minuscola (A... Z, a... z) isupper char ch vero/falso Lettera maiuscola (A... Z) islower char ch vero/falso Lettera minuscola (a... z) isdigit char ch vero/falso Cifra numerica (0... 9) isalnum char ch vero/falso Lettera oppure cifra numerica: isalpha(ch) isdigit(ch) isxdigit char ch vero/falso Cifra numerica oppure lettera valida in base 16 (a... f, A... F) ispunct char ch vero/falso Simbolo di punteggiatura (!"#$%& ()*+,-./:;<=>?@ [\]ˆ_ { } ) isgraph char ch vero/falso Qualsiasi simbolo visibile (lettera, cifra, punteggiatura) ispr char ch vero/falso Qualsiasi simbolo visibile o spazio isspace char ch vero/falso Spazio, tab o a capo iscntrl char ch vero/falso Qualsiasi carattere di controllo toupper char ch char Ritorna la versione maiuscola di ch iscntrl char ch char Ritorna la versione minuscola di ch if(isalpha(ch)) if(isupper(ch)) if(islower(ch)) if(isdigit(ch)) if(isalnum(ch)) if(isxdigit(ch)) if(ispunct(ch)) if(isgraph(ch)) if(ispr(ch)) if(isspace(ch)) if(iscntrl(ch)) for(i=0; s[i]!=0; i++) s[i] = toupper(s[i]) ; for(i=0; s[i]!=0; i++) s[i] = tolower(s[i]) ; c 2006 Politecnico di Torino 2
Funzioni della libreria <string.h> Nome Parametri Restituisce Descrizione Esempi strlen char s[n] Lunghezza della stringa lun = strlen(s) ; strcpy char src[m] Copia il contenuto di src all erno di dst strcpy(s1, s2) ; strcpy(s, "") ; strcpy(s1, "ciao") ; strncpy strcat strncat strcmp strncmp strchr strstr strspn strcspn char src[m], nc char src[n] char src[m], nc char s1[n], char s2[m] char s1[n], char s2[m], n char ch ==NULL o!=null ==NULL o!=null Copia il contenuto di src (max nc caratteri) all erno di dst Accoda il contenuto di src alla fine di dst Accoda il contenuto di src (max nc caratteri) alla fine di dst Risultato <0 se s1 precede s2, ==0 se s1 è uguale a s2, >0 se s1 segue s2 Come strcmp, ma confronta solo i primi n caratteri Risultato!=NULL se il carattere ch compare nella stringa, ==NULL se non compare. Risultato!=NULL se la sotto-stringa r compare nella stringa s, ==NULL se non compare. Restituisce la lunghezza della parte iniziale di s che è composta esclusivamente dei caratteri presenti in r (in qualsiasi ordine). Restituisce la lunghezza della parte iniziale di s che è composta esclusivamente dei caratteri non presenti in r. strncpy(s1, s2, 20) ; strncpy(s1, s2, MAX) ; strcat(s1, s2) ; strcat(s1, " ") ; strncat(s1, s2, 50) ; if(strcmp(s, r)==0) while(strcmp(r,"*")!=0) if(strncmp(r, "buon", 4)==0) if(strchr(s,. )!=NULL) if(strchr(s, ch)==null) if(strstr(s, "xy")!=null) if(strstr(s, s1)==null) lun = strspn(s, " ") ; lun = strspn(s, ".,") ; lun = strspn(s, " ") ; lun = strspn(s, ".,") ; c 2006 Politecnico di Torino 3
Il sistema dei tipi di dato in C I tipi eri <limits.h> compilatore gcc Tipo Min Max N.bit Min Max char CHAR_MIN CHAR_MAX 8 128 127 INT_MIN INT_MAX 32 2 147 483 648 2 147 483 647 short SHRT_MIN SHRT_MAX 16 32 768 32 767 long LONG_MIN LONG_MAX 32 2 147 483 648 2 147 483 647 unsigned 0 UINT_MAX 32 0 4 294 967 295 unsigned short 0 USHRT_MAX 16 0 65 535 unsigned long 0 ULONG_MAX 32 0 4 294 967 295 I tipi reali Tipo N.bit Mantissa Esponente Min/Max Epsilon float 32 23 bit 8 bit ±3.40282347 10 +38 ±1.17549435 10 38 double 64 53 bit 10 bit ±1.7976931348623157 10 +308 ±2.2250738585072014 10 308 Specificatori di formato Tipo scanf prf char "%c" "%c", "%d" "%d" "%d" short "%hd" "%hd", "%d" long "%ld" "%ld" unsigned "%u", "%o", "%x" "%u", "%o", "%x" unsigned short "%hu" "%hu" unsigned long "%lu" "%lu" float "%f" "%f", "%g" double "%lf" "%f", "%g" Conversioni di tipo automatiche Promozione automatica da... a char... short...... long long... double float... double c 2006 Politecnico di Torino 1
Conversioni di tipo esplicite Tra tipi scalari Da stringa a numero (nuovotipo)espressione gets(line) ; x = atoi(line) ; /* */ x = atol(line) ; /* long */ x = atof(line) ; /* float o double */ c 2006 Politecnico di Torino 2