Estrutura do programa C /* comentários */

#include <nome do arquivo> variáveis globais protótipos das funções int main(void) { variáveis locais corpo da função return(0); } tipo_de_retorno nome_da_função (lista_de_parâmetros ) { variáveis locais corpo da função return(valor); ou return; }

Diretiva #include

Inclui arquivo da biblioteca padrão #include <nome do arquivo>

Inclui arquivo da diretório atual #include "nome do arquivo"

Tipos de dados

Tipo Descrição BytesIntervalo de valores char Um único caracter 10 a 255 int Números inteiros 4-2147483648 a +2147483647 float Números e m pon to flutuante com precisão simples double Números e m pon to flutuante com precisão dupla

Diretiva #define

Definição de macro (valor constante): #define nome valor

Arr anjos

Declaração de vetores:

tipo nome[tamanho]; Declaração de matriz:

tipo nome[lin][col]; Declaração de string:

char nome[tamanho]; Exemplos de inicialização:

int vet[3]={20, 5, 1}; char uf[3]=”RS”;

Printf

Exibe valores. printf(“formato”, valores);

Formato Descrição

%d Número inteiro decimal

%o Número inteiro octal

%x Número inteiro hexadecimal

%c Um único caracter

%s String

%f Número em ponto flutuante

%% Exibe um %

Função getchar

Leitura de caracter.

var = getchar(); ou getchar();

Função scanf

Leitura de valores. scanf(“formato”, &variavel);

FormatoTipo

%d int

%f float

%lf double

%c Um caracter

Uma string. E spaço em branco finaliza entrada.

Função gets

Leitura de string. gets(string);

Operado res a ritméticos

Operador Descrição

= Atribuição

+ Soma

- Subtração

* Multiplicação

Divisão (com valores int , o resultado não terá casas decimais)

% Resto da divisão inteira

++ Incremento pré ou pós-fixado

-- Decremento pré ou pós-fixado

Operado res c o mbinado s

Expressão NormalExpressão Simplificada a = a + b;a+=b; a = a - b;a-=b; a = a * b;a*=b; a = a / b;a/=b; a = a % b;a%=b;

Operado res relac ion ais

Operador Descrição

> Maior que

>= Maior ou igual à

< Menor que

>= Menor ou igual à

== Igual à

!= Diferente de

Operadores lógicos

Operador Descrição

&& AND lógico

|| OR lógico

! NOT lógico

Operador ternário

Avalia condição, se verdadeira assume valor1 senão valor2. (condição )? valor1 : valor2

Operador sizeof

Calcula tamanho em bytes ocupado por variável, arranjo ou tipo. sizeof(expressão) ou sizeof(tipo)

Operador de moldagem ou cast

Converte valor de um tipo para outro. (tipo) valor

Comando if

Executa comandos condicionalmente. if( condição ){ comandos a executar se condição é verdadeira } else{ comandos a a executar se condição é falsa }

Comando do while

Repete enquanto condição for verdadeira, testando no final do laço. do{ comandos a serem repetidos }while( condição );

Comando while

Repete enquanto condição for verdadeira, testando no início do laço. while( condição ){ comandos a serem repetidos; }

Comando continue

Ignorar o restante da passagem atual em um laço. continue ;

Comando break

Finaliza o laço atual break;

Comando for

Cria u mlaç o qu e con têm u m con jun to de co mando s qu e seráexec utado u m número fixo de vezes.

for( inicialização ; condição ; atualização ){ comandos a serem repetidos; }

Comando switch Compara uma variável com diversos valores diferentes.

switch( var ){ case valor1: comandos a executar se var==valor1 break; case valor2: comandos a executar se var==valor2 break; default: comandos a executar se nenhum dos valores }

Declaração de ponteiros

Um pon teiro é u ma variável dec larada para ar maze nar o end ereç o de memória onde está armazenada outra variável.

tipo *nome_do_ponteiro;

Operadores para ponteiros

OperadorDescrição

& (End ereç o de) Fornece o end ereç o de me mória ond e está armazenada uma variável.

* (Valor apon tado por) Valor ar maze nado na variável apontada por um ponteiro.

Apontando para vetores

Ono me de u m vetor (se míndice )corr espond e ao end ereç o do seu primeiro ele mento.

ponteiro = vetor; equivale a ponteiro = &vetor[0]; Valores e m u m vetor apon tado por u m pon teiro pod e m ser obtido s através do ponteiro (colocando o índice nele, sem o * ) ponteiro = vetor; v=ponteiro[0]; equivale a v=vetor[0];

Operações aritméticas com ponteiros

Incre mentar u m pon teiro qu e apon ta para vetorfaráco m qu e ele apon te para o próximo elemento . Decrementá-lo faz com que ele aponte para o elemento anterior.

p++;

Passagem de parâmetros por referência

Neste ca so pass a- se o end ereç o da variávelco mo parâmetro para a fun çã o, para u ma variável de parâmetro dec larada co mo pon teiro. Per mite alterar indiretamente o valor da variável local na função chamada.

funcao(&variavel);

Alocação Dinâmica de Memória: <stdlib.h>

• void *malloc(int tamanho)

Aloca dinamicamente uma área de memória com o tamanho solicitado .

Parâmetros:

– ta manho : Quantidade de bytes a sere m reservado s. Deve- se cha mar a atençã o de qu e, por ser definido e m bytes, na alocaçã o de arr anjos o ta manho não éigu alao nú mero de ele mentos. Deve- se utili za r afór mula nu m_ ele mentos*size of(tipo ).

Valor de retorno:

Retorna o end ereç o do início da me mória aloca da, ou retorna NU L se não existir memória disponível suficiente.

• void *realloc(void *mem, int tamanho)

Altera o tamanho da área alocada anteriormente por malloc.

Parâmetros:

– me m: End ereç o da me mória a ser rea loca da. Deve- se pass ar nesta po siçã o o pon teiro qu e anterior mente rece beu o retorno da fun çã o malloc.

– ta manho : Novo ta manho , e m bytes, da área aloca da. Este valor pod e ser maior ou menor que o originalmente alocado.

Valor de retorno:

Se a área de me mória não pud er ser rea loca da retorna NU L , senão retorna o end ereç o da área aloca da, qu e deve ser atribuído nov a mente ao pon teiro.

• void free(void *mem)

Libera a área de memória alocada previamente por malloc.

Parâmetro:

– me m: End ereç o da me mória a ser rea loca da. Deve- se pass ar nesta po siçã o o pon teiro qu e anterior mente rece beu o retorno da fun çã o malloc.

Valor de retorno: Esta função não retorna nenhum valor.

Declaração de estruturas struct etiqueta { tipo membro_1; tipo membro_2; tipo membro_n; };

Declaração de variáveis de estruturas struct etiqueta variavel; ... variavel.membro_1 = 0;

Ponteiros para estruturas struct etiqueta *ponteiro; ... ponteiro = &variavel; ponteiro->membro_1 = 0;

Funções de manipulação de strings : <string.h>

• char *strcpy(char *destino, char *origem)

Copia o con teúdo de u ma string para ou tra. Deve ser e mpregado para atribuição de strings, no lugar do operador normal de atribuição (=). Parâmetros:

– destino: String que irá receber o conteúdo.

– origem: String cujo conteúdo será copiado.

Valor de retorno: A função retorna o endereço do primeiro caracter da string destino.

• char *strncpy(char *destino, char *origem, int n)

Copia no máximo n ca rac teres de u ma string para a ou tra. Não coloca o'\0' no final de destino., a não ser que tenha atingido o final da string origem. Parâmetros:

– destino: String que irá receber o conteúdo.

– origem: String cujo conteúdo será copiado.

– n: Número máximo de caracteres a serem copiados.

Valor de retorno: A função retorna o endereço do primeiro caracter da string destino.

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

Co mpara o con teúdo de du as string s. Esta fun çã o deve ser utili za da e m substituição aos operadores relacionais no caso de uso com strings. Parâmetros:

– s1 e s2: As duas strings a serem comparadas.

Valor de retorno:

Afun çã o retorna 0(ze ro)se a mbas o con teúdo de a mbas as string s são igu ais. Retorna algu m valor maior qu e 0se o con teúdo de s1é maior e m orde m qu e s2 e u m valor meno r qu e 0se o con teúdo de s1 é meno r e m ordem que s2.

• int strncmp(char *s1, char *s2, int n)

Co mpara apenas u m trec ho do início de du as string s co m ta manho espec ifica do. Parâmetros:

– s1 e s2: As duas strings a serem comparadas.

– n: Número de caracteres a serem comparados.

Valor de retorno: O mesmo da função strcmp (ver acima).

• int strcasecmp(char *s1, char *s2)

Co mpara o con teúdo de du as string s se m diferenciar a ca ixa (letras maiúsculas ou minúsculas). Parâmetros:

– s1 e s2: As duas strings a serem comparadas.

Valor de retorno: O mesmo da função strcmp.

• char *strcat(char *destino, char *origem)

Con ca tena string s, isto é, copia o con teúdo da string orige m ao final da string destino. O conteúdo anterior de destino é preservado. Parâmetros:

– destino : String qu e irárece ber, no seu final, o con teúdo . Ela deve ter tamanho suficiente para armazenar o conteúdo atual mais o novo.

– origem: String cujo conteúdo será acrescentado ao final da outra.

Valor de retorno: A função retorna o endereço do primeiro caracter da string destino.

• int strlen(char *str)

Conta o número de caracteres armazenados em uma string, antes do '\0'. Parâmetros:

– str: A string que terá seu tamnho calculado.

Valor de retorno: Retorna o número de caracteres da string.

Funções de teste de classe de caracter: <ctype.h>

Tod as estasfun çõesrece be m u m único ca rac ter co mo parâmetro eretorna m verdadeiro(u m valor diferente de 0)se a cond içã ofoisatisfeita, ou falso(0) em outro caso.

• int isalnum(int c)

Testa se o caracter passado por parãmetro é uma letra ou dígito numérico.

• int isalpha(int c)

Testa se o caracter passado por parãmetro é uma letra.

• int isdigit(int c)

Testa se o caracter passado por parãmetro é um dígito numérico.

• int islower(int c)

Testa se o caracter passado por parãmetro é uma letra minúscula.

• int isupper(int c)

Testa se o caracter passado por parãmetro é uma letra maiúscula.

• int isspace(int c)

Testa se o ca rac ter pass ado por parãmetro é u m espaç o e m branco. O ca rac ter corr espond ente àbarr a de espaç os, qu ebra delinh a etabulaç ões são con siderado s brancos.

Funções de conversão de caracter: <ctype.h>

Rece be m u m ca rac ter po r parâmetro retorna m este ca rac ter conv ertido para outro formato (caixa).

• int tolower(int c)

Converte uma letra para o formato minúsculo.

• int toupper(int c)

Converte uma letra para o formato maiúsculo.

Funções diversas: <stdlib.h>

• void exit(int codigo)

Esta fun çã o finaliza a exec uçã o do prog ra ma, pod endo ser cha mada a partir de qualquer função, ou em substituição ao return, na função main. Parâmetros:

– codigo: Valor a ser retornado pelo progra ma. Por padrão deve ser 0

(ze ro)no ca so defim no r mal, ou u m valor maior qu e 0, ca so o progra ma esteja sendo finalizado por alguma situação anormal.

Valor de retorno: Esta função não retorna.

• int atoi(char *str)

Converte uma string para um valor numérico inteiro. Parâmetros:

– str: String a ser convertida.

Valor de retorno: Retorna um número inteiro correspondente ao valor armazenado na string.

• double atof(char *str)

Converte uma string para um valor numérico em ponto flutuante. Parâmetros:

– str: String a ser convertida.

Valor de retorno:

Retorna u m valor doub le corr espond ente ao con teúdo ar maze nado na string.

Argumentos de linha de comando int main(int argc, char **argv)

– argc: Número de argu mentos fornec ido s nalinh a de co mando , con tando o próprio nome do programa.

– argv: Éu m vetor de string s (na for ma de pon teiro para pon teiros para char) ond e ca da po siçã o apon ta para u m do s argu mentos pass ado s. argv[0]ése mpre o no me do progra ma, argv[1]o segundo argu mento fornecido, e assim por diante.

Funções de entrada e saída em arquivos: <stdio.h>

• FILE *fopen(char *nome,char *modo)

Abre um arquivo, tornando-o disponível a ser acessado pelo programa Parâmetros:

– nome: String contendo o nome do arquivo a ser aberto.

– modo : Modo de abertura do arquivo . Indica qu altipo de ace s o ao arquivo estásendo solicitado para o siste ma op erac ion al. Deve ser u ma string con tendo u ma co mbinaçã o válida do s ca rac teres apresentado s na tabela abaixo.

Caracter Descrição

"r" Abre o arquivo somente para leitura

"w" Cria u m novo arquivo para escrita. Sejáexistir u m arquivo co m o mesmo nome, ele é eliminado e recriado vazio

"a" Abre um arquivo para escrita no final do arquivo

"+" Acesso de leitura e escrita

"b" Arquivo binário

"t" Arquivo texto

• int fclose(FILE *arquivo)

Fecha um arquivo aberto, tornando-o indisponível para o programa. Parâmetros:

– arquivo : A variável qu e rece beu o valor de retorno da fun çã o fop en, correspondente ao arquivo a ser fechado.

Valor de retorno:

Afun çã oretorna 0(ze ro)se o arquivo pod e serfec hado ou EOFse algu m erro ocorreu.

ArquivoDescrição stdin Dispositivo de entrada padrão: normalmente o teclado.

stdout Dispositivo de saída padrão: normalmente o vídeo.

stderr Dispositivo de saída de erros: sempre o vídeo.

• int fprintf(FILE *arquivo,char *formato,...)

Similar àfun çã o printf, mas per mite qu e seja espec ifica do o arquivo de saída (printf sempre imprime em stdout). Parâmetros:

– arquivo : Em qu alarquivo seráescrito o con teúdo . È muito co mu m ser utili za do co m stderr para apresentar mensagens de err os e adv ertências ao usuário.

– formato: A string de formato idêntica à da função printf.

– ...: conjunto variável de dados a serem escritos.

Valor de retorno:

Ass im co mo printf, estafun çã oretorna o nú mero de ca rac teres qu efora m escritos.

• int fgetc(FILE *arquivo)

Lê o próximo caracter de um arquivo aberto. Parâmetros:

– arquivo : A variável qu e rece beu o valor de retorno da fun çã o fop en, correspondente ao arquivo que será lido.

Valor de retorno:

Retorna o ca rac terlido, e m ca so deleitura be m suce dida, ou EOF, se o final do arquivo foi alcançado.

• int fputc(int c, FILE *arquivo)

Escreve um caracter em um arquivo aberto. Parâmetros:

– c: O caracter a ser gravado no arquivo.

– arquivo : A variável qu e rece beu o valor de retorno da fun çã o fop en, correspondente ao arquivo que será escrito.

Valor de retorno:

Retorna o próprio ca rac ter, se ele foiescrito co m suce s o, ou EOF, e m caso de erro.

Comentários