Buscar

exemplos de funções de biblioteca


Continue navegando


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;