Prévia do material em texto
1 FUNÇÕES DE BIBLIOTECA: Manipulação de caracteres - biblioteca ctype.h int isalpha (int ch) Retorna diferente de 0 (verdadeiro) se ch é caractere do alfabeto, e 0 (falso) se não é (não considera letras as acentuadas). int isdigit (int ch) Retorna diferente de 0 (verdadeiro) se ch é digito, e 0 (falso) se não é. int isdigit2 (char ch) { if (ch<='9' && ch>='0') return 1; return 0; } int isalnum (int ch) Retorna diferente de 0 (verdadeiro) se ch é caractere alfanumérico, e 0 (falso) se não é (não considera letras as acentuadas). int iscntrl (int ch) Retorna diferente de 0 (verdadeiro) se ch é caractere de controle (0 até 0x1F, mais o 0x7F), e 0 (falso) se não é. int islower(int ch) Retorna diferente de 0 (verdadeiro) se ch é caractere minúsculo (a até z) e 0 (falso) se não é (não considera letras as acentuadas). int isupper(int ch) Retorna diferente de 0 (verdadeiro) se ch é caractere maiúsculo (A até Z) e 0 (falso) se não é (não considera letras as acentuadas). int ispunct(int ch) Retorna diferente de 0 (verdadeiro) se ch é caractere imprimível não alfanumérico e 0 (falso) se não é. int tolower(int ch) Recebe letra maiúscula e retorna o código ASCII da letra minúscula equivalente (não considera letras as acentuadas). O que acontece se o parâmetro não é uma maiúscula? Não faz nada (no exemplo abaixo, se atribuísse ‘a’ para a variável mai antes de fazer to lower, mostraria “a - a”) #include <stdio.h> #include <ctype.h> void main (void) { char min, mai; mai = 'A'; min = tolower(mai); printf ("%c - %c", min, mai); } OBS: é mais rápido (e fácil!) fazer, ao invés da chamada à função, a atribuição direta, min = mai + 32; mas isso exige que tenhamos conhecimento da tabala ASCII e façamos a verificação para ver se mai é realmente uma letra maiúscula. if (isupper(mai)) min = mai + 32; int toupper(int ch) Recebe letra minúscula e retorna o código ASCII da letra maiúscula equivalente (não considera letras as acentuadas). O que acontece se o parâmetro não é uma minúscula? Não faz nada. OBS: Da mesma forma que no tolower, é possível fazer a atribuição direta mai = min - 32; 2 com os mesmos problemas. Manipulação de strings - biblioteca string.h int strcmp(str, str) Recebe duas strings e retorna: < 0 se str1 é menor que str2 0 se str1 é igual ao str2 > 0 se str1 é maior que str2 Detalhe: o retorno quando são iguais é 0, o que representa falso. Então, para se ter verdadeiro quando forem iguais, devo ter a negação de strcmp: !strcmp(str1, str2); #include <stdio.h> #include <string.h> void main (void) { char a[] = "aaaaaaa"; char b[] = "aaaz"; printf ("%d", strcmp(a, b)); } Esta função retorna -25: negativo pois a primeira é menor (no sentido de ordem alfabética) que a primeira, e 25 é o resultado inteiro de (‘a’ - ‘z’). Com char a[] = "aaaaaaa"; char b[] = "aaaa"; o resultado seria 97. A strcmp funciona da mesma forma que o código abaixo int strcmp2(char str1[], char str2[]) { int i, b; for (i=0; !(b=str1[i]-str2[i]); i++); return b; } strcpy(str1, str2) Copia str2 para str1. Importante: str1 é o destino, str2 é a origem. #include <stdio.h> #include <string.h> void main (void) { char a[20] = "agora"; char b[20]; strcpy(b, a); printf ("%s, %s", a, b); } strlen(str) Retorna um inteiro com o número de letras que a string contém (o ‘\0’ não é contado); #include <stdio.h> #include <string.h> void main (void) { char a[20] = "agora"; printf ("%d", strlen(a)); } strcat(str1, str2) Concatena a segunda string após a primeira. #include <stdio.h> #include <string.h> 3 void main (void) { char a[20] = "aula "; char b[20] = "de hoje"; strcat(a, b); printf ("%s", a); } Funções matemáticas - biblioteca math.h double ceil (double num) Retorna o menor inteiro maior que num. Ex: num = 1.02 retorna 2.0 num = -1.02 retorna -1.0 double floor (double num) Retorna o maior inteiro menor que num. Ex: num = 1.02 retorna 1.0 num = -1.02 retorna -2.0 double fabs (double num) Retorna o valor absoluto de num. #include <stdio.h> #include <math.h> void main(void) { printf("%f %f\n", (float)1, (float)(-1)); printf("%f %f\n", fabs(1), fabs(-1)); } double pow (double base, duble exp) Retorna baseexp. double sqrt (double num) Retorna a raiz quadrada de num. Números aleatórios – biblioteca stdlib.h int rand(void) Retorna um valor aleatório entre 0 e RAND_MAX, definido na função stdlib.h. Para que o valor fique em um intervalo entre 0 e TAM-1, pode ser utilizado o resto entre o valor retornado e TAM. void srand(unsigned seed); Inicializa o gerador de números aleatórios com o valor de seed. É possível usar uma chamada à função time, da biblioteca time.h. srand(time(0)); valor=rand()%100;