Curso de C
Comandos Básicos


Você está em: MarMSX >> Cursos >> C   Diferente do Pascal, o C tem funções e constantes dentro de algumas bibliotecas.
  Neste capítulo, serão apresentadas as principais bibliotecas do C e suas respectivas funções. Serve como um guia de referência para identificar as funções necessárias para a criação de programas.


  Biblioteca STDIO.H - Entrada e saída de dados

Função Descrição
FILE  Variável do tipo arquivo.
fclose(FILE *stream)  Fecha uma stream (arquivo).
feof(FILE *stream)  Testa o fim de um arquivo.
fgetc(FILE *stream)  Lê um caracter de uma stream.
fputc(int c, FILE *stream)  Escreve um caracter em uma stream.
fgetpos(FILE *stream, fpos_t *pos)  Retorna a posição do ponteiro na stream.
fsetpos(FILE *stream, const fpos_t *pos)  Ajusta o ponteiro de uma stream.
fgets(char *s, int n, FILE *stream)  Lê n caracteres de uma stream para a string s.
fputs(const char *s, FILE *stream)  Copia a string s para a stream.
fopen(const char *filename, const char *mode)  Abre uma stream. Modos, adiante.
printf()  Funções de escrita. Vide tabela abaixo.
scanf()  Funções de leitura. Idem tabela printf.
fread(void *ptr, size_t size, size_t n, FILE stream)  Transfere um bloco da stream para um buffer.
fwrite(void *ptr, size_t size, size_t n, FILE stream)  Transfere um bloco do buffer para uma stream.
fseek(FILE *stream, long offset, int whence)  Ajusta ponteiro de offset posições, a partir de whence (vide abaixo).
EOF  Indica fim de arquivo.

  Obs: uma stream é um arquivo de E/S aberto.

  Modos de abertura de arquivo:

Modo Descrição
r  Somente leitura.
w  Criado para escrita.
a  Append (continua arquivo existente).
r+  Abre um arquivo existente para atualização (escrita e leitura).
w+  Cria um novo arquivo para atualização.
a+  Append, se existente, ou cria, se não existente.
t  Arquivo texto.
b  Arquivo binário

  Exemplo:
fopen("teste.bin","rb");

  A opção "whence" do fseek:

Constante Descrição
SEEK_SET  A partir do inicio do arquivo. Valor de SEEK_SET é 0.
SEEK_CUR  A partir da posição atual. Valor de SEEK_CUR é 1.
SEEK_END  A partir do fim do arquivo. Valor de SEEK_END é 2.


  Funções relacionadas ao printf e scanf:

Função Descrição
printf(char*, ...)  Envia saída formatada para a tela.
scanf(char*, ...)  Lê dados do teclado.
fprintf(FILE *, char*, ...)  Envia saída formatada para uma stream.
fscanf(FILE *, char*, ...)  Lê uma stream e formata saída para variáveis.
sprintf(char*, char*, ...)  Envia saída formatada para uma string.
sscanf(char*, char*, ...)  Lê uma string e formata saídas para variáveis.

  Todas as funções acima fazem o mesmo que as funções printf e scanf. Entretanto, estas realizam operações no terminal, enquanto que as precedidas por "f" realizam operações sobre arquivos e as precedidas por "s" em strings.

  Exemplo de como separar uma string em variáveis:
#include <stdio.h>

main()
{
	char *dados = "Texto 123";
	char texto[10];
	int numero;

	sscanf(dados, "%s %d", texto, &numero);

	printf("O texto dos dados e': %s\n", texto);
	printf("O valor numerico dos dados e': %d\n", numero);
}
  Obs: as reticências na descrição dessas funções indicam que podemos colocar quantos parâmetros desejarmos. Entretanto, o número de parâmetros deverá corresponder à quantidade de variáveis indicadas na formatação utilizada na função. No exemplo acima, temos "%s" e "%d" indicados, que nos obriga a utilizar duas variáveis, sendo a primeira do tipo string e a segunda do tipo inteiro.

  Exemplo de abertura de arquivo binário:
#include <stdio.h>

FILE *arquivo;
char buffer[1024];

void main(void)
{
  arquivo = fopen("exemplo.bin","rb");
  fread(buffer, 1024, 1, arquivo);
  fseek(arquivo,40,SEEK_SET);
  fclose(arquivo);
} 

  Para saber se tal arquivo que está sendo aberto não foi encontrado, faça o seguinte teste:
if (!fopen("exemplo.bin","rb"))
  printf("Não achei teste arquivo.\n");

  O capítulo 14 aborda os arquivos.


  Biblioteca MATH.H - Funções matemáticas

Função Descrição
fabs(double)  Absoluto. abs (inteiro), cabs (complexo), fabs(real), labs (longo).
floor(double)  Trunca número real.
ceil(double)  Arredonda número real
modf(double, double *)  Quebra um real em uma parte inteira e outra fracionária.
sqrt(double)  Raiz quadrada.
atof(char *)  Converte string para real.
sin(double)  Seno.
cos(double)  Cosseno.
tan(double)  Tangente.
asin(double)  Arco seno.
acos(double)  Arco cosseno.
atan(double)  Arco tangente.
atan2(double, double)  Arco tangente.
frexp(double, int *)  Quebra número real em mantissa e expoente.
ldexp(double, int)  Equivale a (double * 2^int)
log(double)  Logaritmo natural.
log10(double)  Logaritmo na base 10.
pow(double, double)  x ^ y. Ex: pow(2,4) = 16.
exp(double)  e ^ double
sinh(double)  Seno hiperbólico.
cosh(double)  Cosseno hiperbólico.
tanh(double)  Tangente hiperbólico.

  Exemplo de utilização das funções matemáticas:
#include <stdio.h>
#include <math.h>

void main(void)
{
  double angulo = 1.45;  
  printf("O seno de %f radianos é: %f",angulo,sin(angulo));
} 

  Não esquecer de compilar com a opção "-lf".


  Biblioteca STDLIB.H - Sistema

Função Descrição
atof(char *)  Converte string para real.
atoi(char *)  Converte string pata inteiro.
atol(char *)  Converte string para longo.
rand(void)  Gera número aleatório. Ex: rand() % 100.
srand(unsigned int)  Inicializa gerador de números aleatórios. 
calloc(size_t, size_t)  Aloca memória principal.
free(void *)  Libera memória alocada.
malloc(size_t)  Aloca memória.
realloc(void *, size_t)  Realoca memória principal.
abort(void)  Termina um processo.
exit(int)  Termina um programa.
getenv(char *), putenv(char *)  Pega uma string do meio. Coloca no meio uma string. 
system(char *)  Realiza um comando de DOS. Ex: system("dir").
qsort(void *, size_t, size_t, int (*)(void *, void *))  Realiza uma ordenação por quicksort.
abs(int)  Valor absoluto, isto é, sem o sinal; módulo. Para inteiros
labs(long)  Valor absoluto, isto é, sem o sinal; módulo. Para longos.

  Exemplo de geração de número aleatório:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

main()
{
  srand(time(NULL));
  printf("Numero aleatorio entre 0 e 99: %d\n", rand() % 100);
}
  Obs: para o "time.h" funcionar corretamente no MSX, é necessário adicionar um patch ao Hitech-C, localizado no diretório hitech-4/time do pacote da Funet. Copie o arquivo "time.obj" desse diretório para o disco do Hitech-C e dê o seguinte comando no MSX-DOS para instalar:
A> LIBR R LIBC.LIB TIME.OBJ

  Exemplo de alocação de memória:
#include <stdlib.h>

char *buffer;

void main(void)
{
  buffer = (char *) malloc(10); 
}
  O buffer fica com o tamanho de 10 bytes. A cada uso de malloc, 10 bytes são acrescidos ao tamanho de buffer.

  O capítulo 8 fala sobre a alocação de memória.


  Biblioteca STRING.H - Funções de string

Função Descrição
memcpy(void *, void *, size_t)  Copia um bloco de n bytes para destino de fonte. memcpy(dest, fonte, n).
memmove(void *, void *, size_t)  Copia um bloco de n bytes para destino de fonte. memmove(dest, fonte, n).
strcpy(char *, char *)  Copia string. Sempre destino, fonte.
strncpy(char *, char *, size_t)  Copia n caracteres.
strcat(char *, char *)  Concatena string.
strncat(char *, char *, size_t)  Concatena n caracteres.
memcmp(void *, void *, size_t)  Compara duas strings. Retorna 0, se foram iguais.
strcmp(char *, char *)  Compara duas strings. Retorna 0, se foram iguais.
strncmp(char *, char *, size_t)  Compara duas strings, em n caracteres.
strcoll(char *, size_t, char *)  Compara duas strings.
memchr(void *, int, size_t)  Procura n bytes pelo caracter c.
strcspn(char *, char *)  Procura em que parte duas string tem pontos em comum.
strpbrk(char *, char *)  Procura em uma string, a primeira ocorrência de qualquer caracter da segunda.
strspn(char *, char *)  Procura em que parte duas string passam a se diferenciar.
strstr(char *, char *)  Acha a primeira ocorrência de uma substring em uma string.
strtok(char *, char *)  Procura na primeira string o primeiro token não encontrado na segunda.
memset(void *, int, size_t)  Ajusta para menos, o tamanho de uma string.
strerror(int)  Constrói uma mensagem de erro.
strlen(char *)  Retorna o tamanho de uma string.
strchr(char *, int)  Procura a primeira ocorrência de um caracter.
strrchr(char *, int)  Procura a última ocorrência de um caracter.

  Exemplo de concatenação de string:

#include <stdio.h>
#include <string.h>

char pal1[10] = "arara", pal2[5] = "quara";

void main(void)
{
  strcat(pal1,pal2);
  printf("Pal1 agora é %s\n",pal1);
}
  Saída:
  Pal1 agora é araraquara.



<< Anterior Linguagem C Próxima >>