COMANDOS BÁSICOS


  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, baseadas no Turbo C++ 3 do PC.

  Para certificar-se que o C do MSX tem ou não uma função listada nesse capítulo, basta abrir a respectiva biblioteca ".h" do MSX em um editor de texto.
  Por exemplo, para verificar se a função fclose existe no MSX, abra o arquivo stdio.h do C e procure por fclose. Ela é encontrada na declaração:
 extern int	fclose(FILE *);
  Dessa forma, eu posso utilizar esta função no MSX.



  Biblioteca STDIO.H

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.

  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:

Função Descrição
cprintf  Envia saída formatada para a tela.
fprintf  Envia saída formatada para uma stream.
printf  Envia saída formatada para a tela.
sprintf  Envia saída formatada para uma string.
vfprintf  Envia saída formatada para uma stream, usando uma lista de argumentos.
vprintf  Envia saída formatada para a tela, usando uma lista de argumentos.
vsprintf  Envia saída formatada para uma string, usando uma lista de argumentos.

  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");


  Biblioteca MATH.H

Função Descrição
fabs(double)  Absoluto. abs (inteiro), cabs (complexo), fabs(real), labs (longo).
floor(double)  Trunca número real.
ceil(double)  Arredenda 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));
} 


  Biblioteca STDLIB.H

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 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.


  Biblioteca STRING.H

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 ocorrencia de uma substring em uma string.
strtok(char *, char *)  Procura na primeira string o primieiro 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.


/MARMSX/CURSOS/C--