Página do Brat


Principais funções da linguagem C



Aqui está um resumo das principais funções presentes nas bibliotecas da linguagem C.

Nem todas estão presentes em todos os compiladores, principalmente dos microcontroladores. Foram extraídas e com tradução livre da ajuda on-line do ambiente BorlandC++®.



A função main

Todo programa C e C++ deve ter a função main .

Argumentos do main

Três parâmetros (argumentos) são passados para main pela rotina de partida do programa: argc, argv, e env.



Exemplo:

Para rodar o código de exemplo, digite:”ex_main teste 123”. Troque “teste” e “123” por outras palavras e acrescente outras.

O executável deve rodar na linha de comando para ver sua funcionalidade.

Se rodar o programa no Windows, podem haver muitas variáveis de ambiente e assim a tela texto vai rolar.

Código fonte, Executável

Retorno de valor do main

O valor retornado por main deve ser o código de status do programa, normalmente 0 (zero), -1 ou 1.

Exemplo: int main (void)

A

Função

Bibliot.

observações / exemplos

retorno

void abort (void)

stdlib.h

Encerra (aborta) o programa e escreve a mensagem “Abnormal program terminationem stderr.

retorna o código de retorno 3 para o processo pai ou para o sistema operacional

int abs (int x)

math.h


retorna o valor absoluto do argumento x

int access (const char *filename, int amode)

io.h

verifica se o arquivo “filenameexiste e se ele pode ser lido, escrito ou executado, segundo o argumento amode:

06 permissão de leitura e escrita

04 permissão de leitura

02 permissão de escrita

01 permissão de execução (prog. executável)

00 se o arquivo existe

se o acesso requisitado foi aceito, retorna 0, senão retorna -1

double acos (double x);

math.h

Calcula o arco cosseno de x

Retorna o valor em radiano

long double acosl (double x);

math.h

Versão long double do acos

Retorna o valor em radiano

double asin (double x);

math.h

Calcula o arco seno de x

Retorna o valor em radiano

long double asinl (double x);

math.h

Versão long double do asin

Retorna o valor em radiano

double atan (double x);

math.h

Calcula o arco tangente de x

Retorna o valor em radiano

long double atanl (double x);

math.h

Versão long double do atan

Retorna o valor em radiano

double atof (const char *s)

math.h

converte a string apontada por s para ponto flutuante

retorna o valor em ponto flutuante da string apontada por s

int atoi (const char *s)

stdlib.h

converte a string apontada por s para inteiro

retorna o valor em inteiro da string apontada por s

int atol (const char *s)

stdlib.h

converte a string apontada por s para inteiro longo

retorna o valor em inteiro longo da string apontada por s

C

Função

Bibliot.

observações / exemplos

retorno

double ceil (double x)

math.h

arredonda para cima (o próximo valor inteiro) o valor de x

retorna o próximo valor inteiro maior que x

void clreol (void)

conio.h

apaga todos os caracteres da posição do cursor até o fim da linha na janela de texto atual


void clrscr (void)

conio.h

limpa a janela de texto atual


double cos (double x)

math.h

Calcula o coseno de x. Os ângulos são especificados em radianos.

retorna o cosenos.

long double cosl (long double x)

math.h

Calcula o coseno de x, na versão long double. Os ângulos são especificados em radianos.

retorna o cosenos.

int cprintf (const char *format[, argument,...])

conio.h

Verifique printf

cprintf aceita uma série de argumentos, aplicados a cada especificador de formato contido na string apontada por format , e imprime a string formatada diretamente na janela de texto atual.

A string é escrita diretamente na memória de vídeo por chamada às rotinas da BIOS.

Ao contrário de fprintf e printf, cprintf não converte automaticamente caracteres de nova linha (\n) em nova linha/retorno de carro (\r\n)

retorna o número de caracteres impressos

int cputs (const char *s)

conio.h

imprime a string s na janela de texto atual. Não adiciona o caracter de nova linha.

Ao contrário de puts e cputs, cputs não converte automaticamente caracteres de nova linha (\n) em nova linha/retorno de carro (\r\n)

retorna o último caracter impresso

D

Função

Bibliot.

observações / exemplos

retorno

double difftime (time_t time2, time_t time1)

time.h

Calcula a diferença entre dois tempos

Retorna a diferença entre time2 e time1

F

Função

Bibliot.

observações / exemplos

retorno

int fclose (FILE *stream)

stdio.h

Fecha uma stream associada com o nome apontado por stream. Todos os buffers associados são esvaziados e a memória alocada é liberada para o sistema antes de fechar.

Normalmente stream se refere a um arquivo.

retorna 0 quando fechar a stream com sucesso, EOF se algum erro foi detectado

int fcloseall (void)

stdio.h

Fecha todas as streams abertas, exceto stdin, stdout, stdprn, stderr, e stdaux.

Normalmente stream se refere a um arquivo.

retorna o número total de streams fechadas, EOF se algum erro foi detectado

int feof (FILE *stream)

stdio.h

Verifica se a stream está indicando fim de arquivo.

Normalmente stream se refere a um arquivo.

retorna um valor diferente de 0 se o fim de arquivo foi detectado e 0 caso contrário

int fgetc (FILE *stream)

stdio.h

Ex:

fgetc (stdin) - retorna o próximo caracter da entrada padrão (normalmente o teclado)

fgetc (filename) - retorna o próximo caracter do arquivo apontado por filename

retorna o próximo caracter da stream apontada, retorna EOF (fim de arquivo) se encontrar EOF ou erro

int fgetchar (void)

stdio.h


retorna o próximo caracter da stream stdin (que normalmente é o teclado)

char *fgets (char *s, int n, FILE *stream)

stdio.h

lê caracteres da stream para a string apontada por s. A função lê até n-1 caracteres ou quando encontra um caracter de nova linha (\n), aquele que vier primeiro. fgets mantém o caracter de nova linha no fim de s.

Se houver espaço, o caracter NULL é inserido no fim da string.

caso ocorra sucesso, retorna a string apontada por s, retorna NULL se encontrar fim de arquivo ou erro

double floor (double x)

math.h

arredonda para baixo o valor de x (o inteiro anterior)

retorna o valor inteiro imediatamente anterior a x

FILE *fopen (const char *filename, const char *mode)

stdio.h

Abre um arquivo com nome filename e associa uma stream a ele.

mode é usado para definir como o arquivo será criado:

r abre um arquivo somente leitura

w cria um arquivo para escrita. Se o arquivo já existe, ele será sobrescrito

a append; abre para escrita no fim do arquivo, ou cria para escrita se o arquivo não existe

r+ abre um arquivo existente para leitura e escrita

w+ cria um arquivo para leitura e escrita

a+ abre um arquivo existente para leitura e escrita no fim do arquivo ou cria se o arquivo não existe

Para especificar se o arquivo será aberto ou criado em modo texto ou binário, acrescente:

t para modo texto

b para modo binário

Ex:

fpt = fopen (“autoexec.bat, “rt); - abre o arquivo autoexec.bat para leitura no modo texto

fpt = fopen (“dummy.dat”, “wb”); - cria o arquivo dummy.dat para escrita no modo binário

retorna o ponteiro para identificar a stream em subsequentes operações

int fprintf (FILE *stream, const char *format [, argument, ...])

stdio.h

Verifique printf

fprintf aceita uma série de argumentos, aplicados a cada especificador de formato contido na string apontada por format , e imprime a string formatada na stream indicada.

Normalmente stream se refere a um arquivo.

Ex:

fprintf (fpt, “arquivo de teste # %d”, num);

retorna o número de caracteres impresso, se ocorrer erro, retorna OEF (fim de arquivo)

int fputc (int c, FILE *stream)

stdio.h

Imprime o caracter c na stream indicada.

Ex:

fputc ('A', stdout); - imprime o caracter 'A' na saída padrão (normalmente o vídeo)

fputc ('A', fpt); - imprime o caracter 'A' na stream apontada por fpt

Normalmente stream se refere a um arquivo.

se ocorrer sucesso, retorna o caracter, caso contrário retorna EOF (fim de arquivo)

int fputchar (int c)

stdio.h

Imprime o caracter c na saída padrão (normalmente o vídeo)

se ocorrer sucesso, retorna o caracter, caso contrário retorna EOF (fim de arquivo)

int fputs (const char *s, FILE * stream)

stdio.h

Imprime a string apontada por s na stream apontada por stream

Ex:

fputs (“Olá mundo”, stdout); - imprime a string “Olá mundo” na saída padrão (normalmente o vídeo)

fputs (“Olá mundo”, fpt); - imprime a string “Olá mundo” na stream indicada por fpt

se ocorrer sucesso, retorna um valor não negativo, caso contrário retorna EOF (fim de arquivo)

size_t fread (void *ptr, size_t size, size_t n, FILE * stream)

stdio.h

Lê dados binários de uma stream.

n itens de dados, cada um com size bytes, da stream para o buffer apontado por ptr.

Ex:

fread (buffer, 80, 1, fpt); - copia 1 item de 80 bytes da stream apontada por fpt para buffer.

Normalmente stream se refere a um arquivo.

caso ocorra sucesso, retorna o número de itens (não bytes) lidos, retorna um valor baixo (possivelmente 0) quando encontra o fim do arquivo - EOF - ou erro

void free (void *block)

alloc.h

Libera um bloco de memória alocada dinamicamente, apontado por block


int fseek (FILE *stream, long offset, int whence)

stdio.h

Reposiciona o ponteiro da stream, posicionando-o em uma nova posição offset bytes da posição atual para whence.

Em streams em modo texto, offset deve ser 0.

whence deve ser um dos seguintes valores:

SEEK_SET (0) início da stream

SEEK_CUR (1) posição atual

SEEK_END (2) EOF (fim de arquivo)

Normalmente stream se refere a um arquivo.

retorna 0 quando conseguiu reposicionar o ponteiro, qualquer outro valor em caso de falha

int fwrite (const void *ptr, size_t size, size_t n, FILE * stream)

stdio.h

Escreve dados em uma stream.

Escreve n itens de dados, cada um com size bytes, do buffer apontado por ptr, para a stream.

Ex:

fwrite (buffer, 80, 1, fpt); - copia 1 item de 80 bytes do buffer para a stream apontada por fpt.

Normalmente stream se refere a um arquivo.

caso ocorra sucesso, retorna o número de itens (não bytes) escritos, retorna um valor baixo (possivelmente 0) quando encontra erro

G

Função

Bibliot.

observações / exemplos

retorno

int getc (FILE *stream)

stdio.h

Ex:

getc (stdin) - retorna o próximo caracter da entrada padrão (normalmente o teclado)

getc (filename) - retorna o próximo caracter do arquivo apontado por filename.

retorna o próximo caracter da stream apontada, retorna EOF (fim de arquivo) se encontrar EOF ou erro

int getch (void)

conio.h

Captura caracter do teclado. Não ecoa no vídeo.

retorna o caracter lido do teclado

int getchar (FILE *stream)

stdio.h

Captura caracter da entrada padrão - stdin.

stdin normalmente é o teclado.

retorna o caracter lido, se ocorrer erro ou fim de arquivo, retorna EOF (fim de arquivo)

int getche (void)

conio.h

Captura caracter do teclado. Ecoa no vídeo.

retorna o caracter lido do teclado

void getdate (struct date *datep)

dos.h

Captura a data do sistema.

Armazena na estrutura date apontada por datep a data do sistema.

A estrutura date está definida da seguinte forma:

struct date {

int da_year; /* ano corrente */

char da_day; /* dia do mês */

char da_mon; /* mês (1 = janeiro) */

};

Ex:

int main (void)

{

struct date d; /*cria a estrutura de tipo definido (date) “d”*/

getdate (&d); /* captura a data do sistema */

printf (“\nAno atual: %d”, d.da_year); /* imprime o ano corrente */

printf (“\nMês atual: %d”, d.da_mon); /* imprime o mês corrente */

printf (“\nDia atual: %d”, d.da_day); /* imprime o dia corrente */

}

Veja setdate para alterar a data do sistema.

void gettime (struct time *timep)

dos.h

Captura a hora do sistema.

Armazena na estrutura time apontada por timep a hora do sistema.

A estrutura time está definida da seguinte forma:

struct time {

unsigned char ti_min; /* minutos */

unsigned char ti_hour;/* horas */

unsigned char ti_hund;/* décimos de segundo */

unsigned char ti_sec; /* segundos */

};

Ex:

int main (void)

{

struct time t; /* cria a estrutura de tipo definido (time) “t” */

gettime (&t); /* captura a hora do sistema */

printf (“\nHora: %d”, t.ti_hour); /* imprime a hora */

printf (“\nMinuto: %d”, t.ti_min); /* imprime o minuto */

printf (“\nSegundo: %d”, t.ti_sec); /* imprime o segundo */

}

Veja settime para alterar a hora do sistema.


void gotoxy (int x, int y)

conio.h

Posiciona o cursor em uma janela de texto, sendo x=coluna, y=linha. Chamadas a essa função com valores de coluna e/ou linha invlalidos fazem o comando ser ignorado.

Os valores válidos dependem da configuração da tela. Por exemplo, para o padrão de 80 colunas por 25 linhas, x pode variar de 1 a 80 e y de 1 a 25

I

Função

Bibliot.

observações / exemplos

retorno

int inport (int portid)

dos.h

Lê um byte de uma porta de hardware.

retorna byte lido

char *itoa (int value, char *string, int radix)

stdlib.h

Converte value em uma string terminada com NULL. Armazena o resultado em string.

radix especifica a base numérica utilizada para a conversão, podendo ser de 2 a 36. Se value for negativo e radix 10, o primeiro caracter da string será o sinal (-).

retorna o ponteiro para a string

K

Função

Bibliot.

observações / exemplos

retorno

int kbhit (void)

conio.h

Verifica se alguma tecla do teclado foi pressionada.

kbhit não retira o caracter do buffer de teclado.

retorna zero se nenhuma tecla foi pressionada, qualquer valor diferente de 0 caso contrário.

L

Função

Bibliot.

observações / exemplos

retorno

double log (double x)

math.h

Calcula o logaritmo natural de x ().

retorna o valor calculado

double log10 (double x)

math.h

Calcula o logaritmo de x na base 10 ().

retorna o valor calculado

char *ltoa (long value, char *string, int radix)

stdlib.h

Converte value (que é um inteiro longo) em uma string terminada com NULL. Armazena o resultado em string.

radix especifica a base numérica utilizada para a conversão, podendo ser de 2 a 36. Se value for negativo e radix 10, o primeiro caracter da string será o sinal (-).

retorna o ponteiro para a string

M

Função

Bibliot.

observações / exemplos

retorno

void *malloc (sizt_t size)

stdlib.h

Aloca memória principal, de tamanho size bytes.

malloc não altera o conteúdo da memória alocada.

Ex:

char *str; // ponteiro de caracter

str = malloc (10); /* aloca 10 bytes e passa o

** ponteiro para str */

retorna o ponteiro para a primeira posição de memória alocada, NULL se não há memória disponível.

void *memcpy (void *dest, const void *src, size_t n)

mem.h

Copia um bloco de n bytes de src para dest.

ATENÇÃO: Se os segmentos de memória ocupados por src e dest se sobreporem, o resultado da cópia é indefinido. Neste caso, utilize memmove.

retorna dest.

void *memmove (void *dest, const void src, size_t n)

mem.h

Copia um bloco de n bytes de src para dest.

retorna dest

void *memset (void *s, int c, size_t n)

mem.h

Seta n bytes de memória com o caracter c.

retorna s

O

Função

Bibliot.

observações / exemplos

retorno

void outport (int sportid, int value)

dos.h

Escreve em uma porta de hardware apontada por portid o valor de value.


P

Função

Bibliot.

observações / exemplos

retorno

double pow (double x, double y)

math.h

Calcula .

retorna o valor calculado.

double pow10 (int p)

math.h

Calcula .

retorna o valor calculado.

printf

Função

int printf (const char *format[, argument, ...])

Biblioteca

stdio.h

Observações

printf aceita uma série de argumentos, aplicados a cada especificador de formato contidos na string apontada por format . Imprime os dados formatados em stdout. É necessário que o número de especificadores de formato seja o mesmo número de argumentos.

A string formatada, presente em todas as funções XXprintf (printf, cprintf, fprintf, sprintf, etc.) controla como a função converterá, formatará e imprimirá cada argumento. É necessário que exista o mesmo número de especificadores de formato e de argumentos.

A string formatada contém dois tipos de objetos: caracteres imprimíveis e especificadores de formato:

Especificadores de formato

Cada especificador de formato começa com o sinal de porcento (%). Após este sinal, seguem os seguintes especificadores, nesta ordem:

N = ponteiro (near)

F = ponteiro (far)

h = short int

l = long

L = long double

Conversores de formato

A tabela a seguir apresenta os conversores de formato, o tipo de dado de entrada para cada um e como é o formato do dado na saída, considerando que não foi utilizado nenhum caracter de flag citado acima.



Símbolo

tipo de argumento

formato da saída

exemplo

Formato

Saída

Numéricos

d

inteiro

inteiro decimal sinalizado

(“%d”, i)

[-]26

i

inteiro

inteiro decimal sinalizado

(“%i”, i)

[-]26

o

inteiro

inteiro octal sem sinal

(“%o”, i)

32

u

inteiro

inteiro decimal sem sinal

(“%u”, i)

26

x

inteiro

inteiro hexadecimal sem sinal (com a, b, c, d, e, f)

(“%x”, i)

1a

X

inteiro

inteiro hexadecimal sem sinal (com A, B, C, D, E, F)

(“%X”, i)

1A

f

ponto flutuante

ponto flutuante com o formato [-]dddd.dddd

(“%f”, i)

123.456

e

ponto flutuante

ponto flutuante com o formato [-]d.dddd ou e[+/-]ddd

(“%e”, i)

[-]1.2e[±]3

g

ponto flutuante

igual e ou f, valendo quem tiver maior precisão

(“%g”, i)

[-]1.2e[±]3

E

ponto flutuante

o mesmo que e, mas com o indicador E maiúsculo

(“%d”, i)

[-]1.2E[±]3

G

ponto flutuante

o mesmo que g, mas com o indicador E maiúsculo, se usado

(“%d”, i)

[-]1.2E[±]3

Caracteres





c

caracter

caracter isolado

(“%c”, i)

a

s

ponteiro de string

imprime caracteres até encontrar NULL ou a precisão for alcançada

(“%s”, i)

texto

%

----

imprime o caracter %

(“%%”)

%

Ponteiros





n

ponteiro para int

armazena na variável apontada o total de caracteres impressos

(“%n”, &i)


p

ponteiro

imprime o ponteiro (endereço físico da memória, não seu conteúdo)

(“%p”, &i)

02A3:457B

Convenções

Algumas convenções acompanham alguns destes especificadores, conforme a tabela abaixo:

Caracteres

Convenções

e ou E

O argumento é convertido para o estilo [-]d.ddd...e[±]ddd, quando

  • um dígito precede o ponto decimal

  • o número de dígitos após o ponto decimal é igual à precisão

  • o expoente sempre contém pelo menos dois dígitos

f

O argumento é convertido para a notação decimal no estilo [-]ddd.ddd..., quando o número de dígitos após o ponto decimal for igual à precisão (se a precisão for diferente de zero)

g ou G

O argumento é impresso no estilo e, E ou f com a precisão especificando o número de dígitos significativos. Zeros à direita são removidos do resultado e o ponto decimal aparece somente se necessário.

O argumento é impresso no estilo e ou f (com algumas restrições) se g for o caracter de conversão e no estilo E se o caracter de conversão for G. O estilo e é usado somente se o expoente resultante da conversão for maior que a precisão ou menor que -4.

x ou X

Para conversões onde as letras hexadecimais devem aparecer em minúsculo (a, b, c, d, e e f) o caracter de conversão deve ser x, caso contrário, para maiúsculos (A, B, C, D, E e F) o caracter deve ser X.

Obs.:

Números em ponto flutuante infinitos são impressos como +INF e -INF. Valores não numéricos são impressos como +NAN ou -NAN.

Flags

Os caracteres de flag são: menos (-), mais (+), sharp (#) e vazio ( ). Eles podem vir em qualquer ordem e combinação.



Flag

O que especifica

exemplo

Formato

Saída

-

justifica à esquerda o resultado, completando com espaços vazios.

(“%-4dteste”,i)

12 teste

+

sinaliza o valor, mesmo se for positivo

(“%+d”,i)

+12

vazio

se o valor não for negativo, a saída começa com um espaço vazio. Se for negativo, começa com menos (-)

(“teste% d”,i)

teste 12

#

especifica que o argumento será convertido obedecendo a tabela abaixo.



Formas alternativas

Se o flag # for usado, ele tem o seguinte efeito sobre o argumento a ser convertido:



Caracter de conversão

Como # afeta o argumento

Exemplo



c, s, d, i, u

sem efeito



o (octal)

o caracter 0 (zero) é acrescentado em valores diferentes de zero

(“%#o”,i)

014

x ou X

0x ou 0X é acrescentado

(“%#x”,i)

0xc

e, E ou f

o resultado sempre contém o ponto decimal, mesmo que não tenham dígitos depois do ponto.

(“%#f”,i)

12.

g ou G

o mesmo que o anterior, com o adicional que os zeros à direita também são mantidos.

(“%#g”,i)

12.0000

Especificadores de comprimento

O especificador de comprimento define o comprimento mínimo da saída. Pode ser especificado diretamente, através de um especificador decimal ou indiretamente com o asterisco (*). Se o especificador for o asterisco, o próximo argumento deve ser um int com o valor do comprimento.

exemplos

formato

saída

(“%3d”,i)

12

(“%03d”,i)

012

c=4, i=12

(“%*d”,c,i)

12

c=4, i=12

(“%0*d”,c,i)

0012

Especificadores de precisão

O especificador de precisão sempre começa com um ponto (.). Assim como o especificador de comprimento, ele pode ser especificado diretamente através de um especificador decimal ou com o asterisco (*). Se o especificador for o asterisco, o próximo argumento deve ser um int com o valor da precisão.



Especificador de precisão

Como a saída é afetada

Exemplo

Formato

Saída

nenhum

a precisão é ajustada para o padrão:

  • 1 para d, i, o, u, x e X

  • 6 para e, E e f

  • todos os dígitos significantes para g e G

  • imprime até o primeiro caracter NULL para s

  • sem efeito para c

(“%f”,i)

(“%g”,i)

1.234500

1.2345

.0 (zero)

  • mantém o padrão para d, i, o, u, x e X

  • não imprime nenhum ponto decimal para e, E e f

(“%f”,i)

1

.n

n caracteres ou n casas decimais são impressas. Se a saída for maior que n, o valor será truncado.

i=1.2345, *s=”teste”

(“%.3f”,i)

(“%.3s”,s)



1.234

tes

*

o argumento que acompanha o valor especifica a precisão.

p=2, i=1.2345

(“%.*f”,p,i)



1.23

Obs.: Se a precisão de zero for explicitamente especificada, e o formato for um dos formatos inteiros (d, i, o, u, x ou X), e o valor a ser impresso for 0 (zero), o 0 (zero) não será impresso, no lugar dele será impresso um espaço vazio.

Modificadores de tamanho

Os modificadores de tamanho informam o tamanho do argumento de entrada

Modificador de tamanho

Como o argumento é interpretado

exemplo

F

é lido como um ponteiro far

(“%Fp”,i)

N

é lido como um ponteiro near

(“%Fp”,i)

h

é interpretado como short int para d, i, o, u, x ou X

(“%hd”,i)

l

é interpretado como um long int para d, i, o, u, x ou X; é interpretado como double para e, E, f, g ou G

(“ld”,i)

L

é interpretado como long double para e, E, f, g ou G

(“%Lf”,i)

Retorno

printf retorna o número de caracteres impressos, caso ocorra erro, retorna EOF.



Função

Bibliot.

observações / exemplos

retorno

int putc (int c, FILE *stream)

stdio.h

Imprime o caracter c na stream.

A stream pode ser por exemplo o vídeo (stdout), um arquivo ou outra stream válida.

retorna o caracter impresso. Caso ocorra erro, retorna EOF (fim de arquivo).

int putch (int c)

conio.h

Imprime o caracter c no vídeo.

retorna o caracter impresso. Caso ocorra erro, retorna EOF (fim de arquivo).

int putchar (int c)

stdio.h

Imprime o caracter c no na stream stdout.

Normalmente stdout é o vídeo.

retorna o caracter impresso. Caso ocorra erro, retorna EOF (fim de arquivo).

int puts (const char *s)

stdio.h

Imprime a string apontada por s em stdout, acrescentando os caracteres de nova linha (0x0d 0x0a).

Normalmente stdout é o vídeo.

Caso ocorra erro, retorna EOF (fim de arquivo), senão retorna qualquer valor maior ou igual a zero.



R

Função

Bibliot.

observações / exemplos

retorno

int rand (void)

stdlib.h

Gerador de números randômicos.

Gera um número pseudo-randômico com range de 0 a

Obs.: veja também random, randomize e srand.

retorna número gerado.

int random (int num)

stdlib.h

Gerador de números randômicos.

Gera um número randômico entre 0 e num-1. O valor retornado é inteiro.

Obs.: veja também rand, randomize e srand.

retorna o número gerado.

void randomize (void)

stdlib.h

time.h

Inicia o gerador de números randômicos.

É importante que a biblioteca time.h também seja incluída.

Obs.: veja também rand, random e srand.


int remove (const char *filename)

stdio.h

Apaga um arquivo.

Se o arquivo estiver aberto, feche-o primeiro.

A string apontada por filename pode incluir o caminho (path) completo do arquivo.

Apagando o arquivo, retorna zero, caso contrário retorna -1 e a variável de global errno é modificada para um dos seguintes valores:

  • ENOENT - o arquivo não existe

  • EACCES - permissão negada

int rename (const char *oldname, const char *newname)

stdio.h

Renomeia um arquivo.

Troca o nome do arquivo de oldname para newname.

Diretórios em oldname e newname devem ser os mesmos. Especificando diretórios diferentes, rename copia o arquivo de um local para outro. Caracteres coringa (*,?,~) não são permitidos.

Renomeando o arquivo, retorna zero, caso contrário retorna -1 e a variável de global errno é modificada para um dos seguintes valores:

  • ENOENT - o arquivo não existe

  • EACCES - permissão negada

  • ENOTSAM - não é o mesmo dispositivo (device)

void rewind (FILE *stream)

stdio.h

Reposiciona o ponteiro da stream para o início.


int rmdir (const char *path)

dir.h

Apaga o diretório indicado por path. O diretório deve estar vazio, não ser o diretório de trabalho atual. nem o diretório raiz.

Retorna 0 se o diretório foi apagado com sucesso, caso contrário retorna -1 e a variável de global errno é modificada para um dos seguintes valores:

  • ENOENT - o path é inválido ou o diretório não existe

  • EACCES - permissão negada

S

scanf

Função

int scanf (const char *format[, address, ...])

Biblioteca

stdio.h

Observações

scanf faz a varredura de uma série de campos da entrada padrão, um caracter de cada vez. Cada campo é interpretado de acordo com um especificador de formato e armazena a entrada interpretada de cada campo no endereço passado a ele. É essencial fornecer o mesmo número de especificadores de formato e de argumentos do endereço, senão os resultados serão desastrosos, imprevizíveis.



Especificadores de formato

Os especificadores de formato devem começar com um sinal de porcento (%) e tem o seguinte formato:

%[*][comprimento] [F?N] [h/l/L] tipo

* suprime o que for digitado depois do campo de dados

comprimento determina o número máximo de caracteres a serem lidos

N/F tipo de ponteiro do dado armazenado (near ou far)

h/l/L modifica o tipo de dado: h = short int

l (“ele” minúsculo) = long int (se o especificador for inteiro)

l (“ele” minúsculo) = double (se o especificador for ponto flutuante)

L = long double (valido somente para especificador de ponto flutuante)

tipo especificador de formato veja a tabela a seguir



scanf (%[especificador],&[argumento]);

Especificador

entrada esperada

tipo de argumento

exemplo

Numéricos

d

inteiro decimal

ponteiro para int

int valor;

scanf (“%d”,&valor);

D

inteiro decimal

ponteiro para long

long valor;

scanf (“%D,&valor);

o

inteiro octal

ponteiro para int

int valor;

scanf (“%o”,&valor);

O

inteiro octal

ponteiro para long

long valor;

scanf (“%O”,&valor);

i

inteiro decimal, octal ou hexadecimal

ponteiro para int

int valor;

scanf (“%i”,&valor);

I (i maiúsculo)

inteiro decimal, octal ou hexadecimal

ponteiro para long

long valor;

scanf (“%I”,&valor);

u

inteiro decimal não sinalizado

ponteiro para unsigned int

unsigned int valor;

scanf (“%u”,&valor);

U

inteiro decimal não sinalizado

ponteiro para unsigned long

unsigned long valor;

scanf (“%U”,&valor);

x

inteiro hexadecimal

ponteiro para int

int valor;

scanf (“%x”,&valor);

X

inteiro hexadecimal

ponteiro para long

long valor;

scanf (“%X”,&valor);

e,E

ponto flutuante

ponteiro para float

float valor;

scanf (“%e”,&valor);

f

ponto flutuante

ponteiro para float

float valor;

scanf (“%f”,&valor);

g,G

ponto flutuante

ponteiro para float

float valor;

scanf (“%g”,&valor);

Caracteres

s

string de texto

ponteiro para uma matriz de caracteres (char[ ])

char valor[80];

scanf (“%s”,&valor);

c

caracter

ponteiro para char

char valor;

scanf (“%c”,&valor);

%

caracter '%'

sem conversão, apenas o caracter '%' é armazenado


ponteiros

n

endereço de memória (hexadecimal)

ponteiro para int

int valor;

scanf (“%n”,&valor);

p

endereço de memória (hexadecimal)

no formato YYYY:ZZZZ ou

ZZZZ

ponteiro para um objeto (far* ou near*)

esta conversão depende do modelo de memória


Retorno

scanf retorna o número campos lidos, convertidos e armazenados com sucesso. Se scanf encontrar EOF, retorna EOF.

Para mais informações, pesquise em literatura específica (ex.:Borland C++ Library Reference) ou na internet.



Função

Bibliot.

observações / exemplos

retorno

double sin (double x)

math.h

Calcula o seno de x. Os ângulos são especificados em radianos.

retorna o seno.

long double sinl (long double x)

math.h

Calcula o seno de x, na versão long double. Os ângulos são especificados em radianos.

retorna o seno.

void sleep (unsigned seconds)

dos.h

Suspende a execução do programa pelo número de segundos especificado em seconds.


int sprintf (char *buffer, const char *format [, argument, ...])

stdio.h

Escreve em uma string.

Sua utilização é idêntica a printf, verifique para mais detalhes.

Retorna o número de bytes escritos. Não inclui o NULL na contagem. Caso ocorra erro, retorna EOF.

double sqrt (double x)

math.h

Calcula a raiz quadrada positiva de x.

Retorna a raiz quadrada de x. Caso ocorra erro ou o resultado seja negativo, a variável global errno é modificada para:

  • EDOM - erro de domínio

long double sqrtl (long double x)

math.h

Calcula a raiz quadrada positiva de x. Versão long double.

O mesmo que sqrt.

void srand (unsigned seed)

stdlib.h

Reinicia o gerador de números aleatórios, com seed igual a 1. Pode ter um novo ponto de início com outros números para seed.


char *strcat (char *dest, const char *src)

string.h

Concatena (acrescenta no final) uma string (src) em outra (dest).

Retorna o ponteiro para dest.

int strcmp (const char *s1, const char *s2)

string.h

Compara s1 com s2.

Retorna

  • < 0 se s1 for menor que s2

  • == 0 se s1 for igual a s2

  • > 0 se s1 for maior que s2

int strcmpi (const char *s1, const char *s2)

string.h

Compara s1 com s2, sem considerar maiúsculas e minúsculas

Retorna o mesmo que strcmp

char *strcpy (char *dest, const char *src)

string.h

Copia a string src para dest.

Retorna o ponteiro para dest

size_t strlen (const char *s)

string.h

Calcula o comprimento de s.

Retorna o número de caracteres até o NULL, sem contá-lo

char *strncat (char *dest, const char *src, size_t maxlen)

string.h

Concatena (acrescenta no final) uma porção da string src em dest, a quantidade de caracteres é definida em maxlen.

Retorna o ponteiro para dest.

int strncmp (const char *s1, const char *s2, size_t maxlen)

string.h

Compara s1 com s2, apenas maxlen caracteres.

Retorna o mesmo que strcmp

int strncmpi (const char *s1, const char *s2, size_t maxlen)

string.h

Compara s1 com s2, apenas maxlen caracteres, sem considerar maiúsculas e minúsculas.

Retorna o mesmo que strcmp

char *strncpy (char *dest, const char *src, size_t maxlen)

string.h

Copia a string src para dest, apenas maxlen caracteres.

Retorna o ponteiro para dest

char *strstr (const char *s1, const char *s2)

string.h

Procura pela primeira ocorrência da sub-string s2 na string s1.

Retorna o ponteiro para o primeiro caracter de s2 contido em s1 caso tenha encontrado. Caso contrário, retorna NULL.

char *strtok (char *s1, const char *s2)

string.h

Separa s1 em segmentos cujo separador é determinado em s2.

A primeira chamada a strtok retorna o ponteiro do primeiro segmento de s1 e escreve NULL imediatamente após o segmento retornado em s1.

As próximas chamadas a strtok com NULL no primeiro argumento fará a busca pelos próximos segmentos contidos em s1.

O separador s2 pode ser diferente de chamada a chamada.



Exemplo de código:

#include <string.h>

#include <stdio.h>



int main(void)

{

char input[] = "teste 12 3";

char *p;



/* strtok escreve NULL depois do segmento,

se encontrado */

p = strtok(input, " ");

if (p)

printf("%s\n", p);



/* Seguintes chamadas a strtok usando NULL

como primeiro parametro retorna um ponteiro

para o proximo segmento */

while ((p = strtok(NULL, " ")) != NULL)

printf("%s\n", p);



return 0;

}



Saída do programa:

teste

12

3

Retorna o ponteiro para o segmento encontrado ou NULL caso não tenha encontrado nenhum ou não tenha mais segmentos em s1.

int system (const char *command)

stdlib.h

Chama o interpretador de comandos (command.com, no DOS) para executar command.

Se command for um ponteiro NULL e o processador de comandos estiver ativo, retorna um valor diferente de 0. Ce command não for NULL, retorna 0 se o interpretador de comandos foi corretamente iniciado. Se ocorreu algum erro, retorna -1 e a variável global errno é modificada para um dos seguintes valores: ENOENT, ENOMEM, E2BIG ou ENOEXEC

T

Função

Bibliot.

observações / exemplos

retorno

double tan (double x)

math.h

Calcula a tangente de x. Os ângulos são especificados em radianos.

retorna a tangente.

long double tanl (long double x)

math.h

Calcula a tangente de x, na versão long double. Os ângulos são especificados em radianos.

retorna a tangente.

void textbackground (int newcolor);

conio.h

Troca a cor de fundo da tela texto

Tabela de cores válidas:

BLACK

BLUE

GREEN

CYAN

RED

MAGENTA

BROWN

LIGHTGRAY

Ex: textbackground (BLUE); /* troca o fundo para azul */


void textcolor (int newcolor);

conio.h

Troca a cor dos caracteres

Tabela de cores válidas:

BLACK

BLUE

GREEN

CYAN

RED

MAGENTA

BROWN

LIGHTGRAY

DARKGRAY

LIGHTBLUE

LIGHTGREEN

LIGHTCYAN

LIGHTRED

LIGHTMAGENTA

YELLOW

WHITE

Ex: textcolor (YELLOW); /* troca a cor dos caracteres para amarelo */


void textmode (int newmode);

conio.h

Muda o modo de exibição da tela texto.

Modos válidos:

LASTMODE retorna ao modo anterior

BW40 preto e branco, 40 colunas

C40 colorido, 40 colunas

BW80 preto e branco, 80 colunas

C80 colorido, 80 colunas

MONO monocromático, 80 colunas

C4350 EGA = 43 linhas, VGA = 50 linhas

Ex: textmode (C4350); /* muda para o modo de 50 linhas */


time_t time (time_t *timer)

time.h

Ex:

time_t t; // variável “t”

t = time (NULL); // “t” recebe o número de segundos

Retorna o tempo, em segundos, desde às 0:00h de 1º de janeiro de 1970 e armazena o valor em timer, se este ponteiro não for NULL.

int tolower (int ch)

ctype.h

Converte um caracter maiúsculo em minúsculo, se for possível, senão mantém o caracter intacto.

Veja toupper.

Retorna o caracter convertido.

int toupper (int ch)

ctype.h

Converte um caracter minúsculo em maiúsculo, se for possível, senão mantém o caracter intacto.

Veja tolower.

Retorna o caracter convertido.

U

Função

Bibliot.

observações / exemplos

retorno

int unlink (const char *filename)

io.h

Apaga o arquivo especificado em filename.

Arquivos com o atributo de somente leitura não podem ser apagados por essa função. Para remover esses arquivos, modifique o atributo utilizando chmod ou _chmod.

Se o arquivo está aberto, tenha certeza que ele foi fechado antes de chamar unlink.

Se ocorreu sucesso, retorna 0, senão retorna -1 e a variável global errno é modificada para um dos seguintes valores:

  • ENOENT - caminho ou arquivo não existe

  • EACCES - permissão negada

W

Função

Bibliot.

observações / exemplos

retorno

void window (int left, int top, int right, int bottom);

conio.h

Define uma janela de texto na tela. Se qualquer coordenada for inválida, a função é ignorada.

(left, top) são as coordenadas superiores à esquerda da janela.

(right, bottom) são as coordenadas inferioresà direita da janela.

O tamanho mínimo de uma janela de texto é de uma coluna por uma linha.

Seus valores válidos são:

Modo 80 colunas: (1, 1, 80, 25)

Modo 40 colunas: (1, 1, 40, 25)

Ex: criando uma janela da coluna 20 da linha 10 até a coluna 40 da linha 20: window (20, 10, 40, 20);




Em eterna construção