Documentos de Académico
Documentos de Profesional
Documentos de Cultura
// - comentários
// Este é um comentário em C
Ou
Tipos de dados em C
Como declarar:
#include<stdio.h>
#include<string.h>
int valor ;
char tecla ;
int main()
Bloco de comandos
}
Saida formatada de dados
printf(“\n \a \t Teste “) ;
scanf(“%d”,&nome_da_variavel) ;
%c Um único caracter
%o , %d , %x Um numero octal,um numero
decimal ,um numero hexadecimal
%u Um numero inteiro em base decimal
sem sinal
%ld Um numero inteiro longo em base
decimal
%f , %lf Um numero real de precisão simples
ou dupla
%s Uma cadeia de caracteres
%% Um único sinal de porcentagem
+ Operador de adição
Y=x+z ;
- Operador de subtracao
Y=x-z ;
* Operador de multiplicação
Y=x*z ;
Y=x/z ;
Y=x%z ;
Operador not
Operador AND
Operador OR
Comandos de decisão
if (variável_a == valor)
bloco de comandos
else
bloco de comandos
};
while ((a<=10) || (b<=10))
bloco de comandos
do
bloco de comandos
while(condição) ;
Laço
for (variável=valor;condição;variável++)
for (variável=0;variável<=10;variável--)
bloco de comandos
}
TRABALHANDO COM VETORES DO TIPO STRING
#include<stdio.h>
#include<conio.c>
#include<conio.h>
int main()
char nome[40][10] ;
char tecla ;
int indice ;
tecla='s' ;
indice=0 ;
clrscr() ;
gets(nome[indice]) ;
tecla=getche() ;
printf("\n") ;
indice++;
clrscr() ;
for (indice=0;indice<=5;indice++)
printf("\n%s",nome[indice]) ;
if(strcmp(nome[indice],"alexandre")==0)
{
getche() ;
}
Operador condicional (?)
1-avalia a condição
#include<stdio.h>
#include<conio.h>
int main()
char tecla_pressionada ;
do
tecla_pressionada=getche() ;
switch(tecla_pressionada)
case 'a' : {
break ;
while(tecla_pressionada != 's') ;
getche() ;
}
Criação de novos tipos em C (Comando Struct)
cadastro[indice].nome ;
cadastro[índice].escolaridade;
cadastro[índice].sexo;
#include<stdio.h>
#include<conio.c>
#include<conio.h>
int main()
for (indice=1;indice<=5;indice++)
printf("\n %d-",vetor[indice]) ;
getche() ;
}
Matrizes
• Matrizes bidimensionais
• Matrizes de strings
• Matrizes multidimensionais
• Inicialização
• Inicialização sem especificação de tamanho
Matrizes bidimensionais
Já vimos como declarar matrizes unidimensionais (vetores). Vamos tratar agora de matrizes
bidimensionais. A forma geral da declaração de uma matriz bidimensional é muito parecida
com a declaração de um vetor:
é muito importante ressaltar que, nesta estrutura, o índice da esquerda indexa as linhas e o da
direita indexa as colunas. Quando vamos preencher ou ler uma matriz no C o índice mais à
direita varia mais rapidamente que o índice à esquerda. Mais uma vez é bom lembrar que, na
linguagem C, os índices variam de zero ao valor declarado, menos um; mas o C não vai
verificar isto para o usuário. Manter os índices na faixa permitida é tarefa do programador.
Abaixo damos um exemplo do uso de uma matriz:
#include <stdio.h>
int main ()
{
int mtrx [20][10];
int i,j,count;
count=1;
for (i=0;i<20;i++)
for (j=0;j<10;j++)
{
mtrx[i][j]=count;
count++;
printf("\nLinha:%d Col:%d INT:%d",i,j,mtrx[i][j]);
}
return(0);
}
No exemplo acima, a matriz mtrx é preenchida, sequencialmente por linhas, com os números
de 1 a 200. Você deve entender o funcionamento do programa acima antes de prosseguir.
Matrizes de strings
Matrizes de strings são matrizes bidimensionais. Imagine uma string. Ela é um vetor. Se
fizermos um vetor de strings estaremos fazendo uma lista de vetores. Esta estrutura é uma
matriz bidimensional de chars. Podemos ver a forma geral de uma matriz de strings como
sendo:
Aí surge a pergunta: como acessar uma string individual? Fácil. é só usar apenas o primeiro
índice. Então, para acessar uma determinada string faça:
nome_da_variável [índice]
#include <stdio.h>
int main ()
{
char strings [5][100];
int count;
for (count=0;count<5;count++)
{
printf ("\n\nDigite uma string: ");
gets (strings[count]);
}
printf ("\n\n\nAs strings que voce digitou foram:\n\n");
for (count=0;count<5;count++)
printf ("%s\n",strings[count]);
return(0);
}
Matrizes multidimensionais
Uma matriz N-dimensional funciona basicamente como outros tipos de matrizes. Basta
lembrar que o índice que varia mais rapidamente é o índice mais à direita.
Inicialização
Podemos inicializar matrizes, assim como podemos inicializar variáveis. A forma geral de
uma matriz como inicialização é:
A lista de valores é composta por valores (do mesmo tipo da variável) separados por vírgula.
Os valores devem ser dados na ordem em que serão colocados na matriz. Abaixo vemos
alguns exemplos de inicializações de matrizes:
float vect [6] = { 1.3, 4.5, 2.7, 4.1, 0.0, 100.1 };
int matrx [3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
char str [10] = { 'J', 'o', 'a', 'o', '\0' };
char str [10] = "Joao";
char str_vect [3][10] = { "Joao", "Maria", "Jose" };
Podemos, em alguns casos, inicializar matrizes das quais não sabemos o tamanho a priori. O
compilador C vai, neste caso verificar o tamanho do que você declarou e considerar como
sendo o tamanho da matriz. Isto ocorre na hora da compilação e não poderá mais ser mudado
durante o programa, sendo muito útil, por exemplo, quando vamos inicializar uma string e
não queremos contar quantos caracteres serão necessários. Alguns exemplos:
No primeiro exemplo, a string mess terá tamanho 36. Repare que o artifício para realizar a
inicialização sem especificação de tamanho é não especificar o tamanho! No segundo
exemplo o valor não especificado será 5.
Funções úteis
função kbhit retorna 0 se o usuário não está precionando nenhuma tecla. Caso
contrário, retorna um valor diferente de 0.
Exemplo:
code:
#include <stdio.h>
#include <conio.h>
void main(void)
{
printf("Aguardando tecla...%c", '\n');
while (kbhit()==0)
{
}
printf("Tecla precionada! Até logo!%c", '\n');
return;
}
#include<ctype.h>
Resposta=toupper(getch()) ;
Resposta=tolower(getch()) ;
clrscr();
limpa a tela
gotoxy(coluna,linha) ; // <conio.h>
rand() % valor ;
rand() % 26 ; - gera um valor randômico entre 0 e 26 , utilize <stdlib.h>
textcolor(cor) ; //<conio.h>
utilize cprintf(“texto”) ;
The following table lists the allowable colors (as symbolic constants) and their numeric values:
BLACK 0
BLUE 1
GREEN 2
CYAN 3
RED 4
MAGENTA 5
BROWN 6
LIGHTGRAY 7
DARKGRAY 8
LIGHTBLUE 9
LIGHTGREEN 10
LIGHTCYAN 11
LIGHTRED 12
LIGHTMAGENTA 13
YELLOW 14
WHITE 15
BLINK 128
You can make the characters blink by adding 128 to the foreground color. The predefined constant BLINK
exists for this purpose. For example: textcolor(CYAN + BLINK);
printf(“%c”,219) ;
Usando gets() é possível inserir caracteres pelo teclado até que o Enter seja pressionado.
No final da string é colocado um terminador nulo e então a função retorna.
A função puts() pode receber os códigos de barra invertida apresentados na tabela 2 neste
artigo e é considerada muito mais rápida do que o printf(). O único problema é que puts() trabalha
apenas com string de caracteres enquanto que o printf() trabalha com todos os tipos de dados.
Matrizes bidimensionais
int matriz[5][5] ;
int linha,coluna ;
for (linha=0;linha<=5;linha++)
for(coluna=0;coluna<=5;coluna++)
gotoxy(1,coluna+1) ;
textcolor(randomico()) ;
textbackground(randomico()) ;
scanf("%d",&matriz[linha][coluna]) ;
6. strings
6.1 Determinando o tamanho de uma string
Para determinar o tamanho de uma string use a função strlen( ). Esta função faz parte do
arquivo de cabeçalho string.h. Sua sintaxe é:
strlen(string)
Exemplo:
#include <stdio.h>
#include <string.h>
int main()
{
char string[20];
printf("\n");
printf("Determinando o tamanho de uma string\n");
printf("------------------------------------\n");
printf("\n");
printf("Digite a string :");
scanf("%s",&string);
printf("\n");
printf("A string tem %d carateres.\n\n",strlen(string));
return(0);
}
Para copiar uma string em outra use a função strcpy( ). Esta função faz parte do arquivo de
cabeçalho string.h. Sua sintaxe é:
strcpy(destino, origem)
Exemplo:
#include <stdio.h>
#include <string.h>
int main()
{
char string1[10], string2[10];
printf("\n");
printf("Copiando uma string em outra\n");
printf("----------------------------\n");
printf("\n");
printf("Digite string1 :");
scanf("%s",&string1);
printf("\n");
printf("string1 = %s\n",string1);
printf("string2 = %s\n",strcpy(string2,string1));
return(0);
}
Na prática, todo conteúdo de string2 é substituído por string1.
Para unir duas strings use a função strcat( ). Esta função faz parte do arquivo de cabeçalho
string.h. Sua sintaxe é:
strcat(destino, origem)
Exemplo:
#include <stdio.h>
#include <string.h>
int main()
{
char string1[100], string2[10];
printf("\n");
printf("Unindo duas strings\n");
printf("-------------------\n");
printf("\n");
printf("Digite string1 :");
scanf("%s",&string1);
printf("\n");
printf("Digite string2 :");
scanf("%s",&string2);
printf("\n");
printf("Unindo string1 a string2 : %s\n\n",strcat(string2,string1));
return(0);
}
Para anexar caracteres de uma string em outra use a função strncat( ). Esta função faz parte
do arquivo de cabeçalho string.h. Sua sintaxe é :
Exemplo:
int main()
{
char string1[20],string2[6]="aeiou";
printf("\n");
printf("Anexando caracteres de uma string em outra\n");
printf("------------------------------------------\n");
printf("Entre com string1 :");
scanf("%s",&string1);
printf("\n");
printf("string2 = %s\n\n",string2);
printf("string1 + 3 caracteres de string 2 =
%s\n",strncat(string1,string2,3));
printf("\n");
return(0);
}
Para converter uma string para maiúsculas use a função strupr( ). Esta função faz parte do
arquivo de cabeçalho string.h. Sua sintaxe é:
strupr(string)
Exemplo:
#include <stdio.h>
#include <string.h>
int main()
{
char string[20];
printf("\n");
printf("Convertendo uma string para maiúsculas\n");
printf("------------------------------------\n");
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
printf("string digitada : %s\n",string);
printf("\n");
printf("Convertendo para maiúsculas : %s\n",strupr(string));
return(0);
}
Para converter uma string para minúsculas use a função strlwr( ). Esta função faz parte do
arquivo de cabeçalho string.h. Sua sintaxe é:
strlwr(string)
Exemplo:
#include <stdio.h>
#include <string.h>
int main()
{
char string[20];
printf("\n");
printf("Convertendo uma string para minúsculas\n");
printf("------------------------------------\n");
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
printf("string digitada : %s\n",string);
printf("\n");
printf("Convertendo para minúsculas : %s\n",strlwr(string));
return(0);
}
Para isso use a função strchr( ). Ela faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:
strchr(string, caracter)
Este função retorna um ponteiro para a primeira ocorrência de "caracter". Caso "caracter"
não seja encontrado, ela retornará um ponteiro para o caractere NULL que marca o final da
string.
Exemplo:
#include <stdio.h>
#include <string.h>
int main()
{
char string[30] = "Teste da função strchr().";
char *ptr;
printf("\n%s\n",string);
if (*ptr)
{
printf("\n");
printf("A primeira ocorrência de s é na posição %d\n",ptr -
string);
}
else
printf("Caractere não encontrado.\n");
return(0);
}
Para isso use a função strrchr( ). Ela faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:
strrchr(string, caracter)
Este função retorna um ponteiro para a última ocorrência de "caracter". Caso "caracter" não
seja encontrado, ela retornará um ponteiro para o caractere NULL que marca o final da string.
Exemplo:
#include <stdio.h>
#include <string.h>
int main()
{
char string[30] = "Teste da função strrchr().";
char *ptr;
printf("\n%s\n",string);
if (*ptr)
{
printf("\n");
printf("A última ocorrência de s é na posição %d\n",ptr - string);
}
else
printf("Caractere não encontrado.\n");
return(0);
}
6.10 Função que conta o número de ocorrências de um caractere numa string
int contachar(char string[], char letra)
{
int contador, tamanho, ocorrencia = 0;
tamanho = strlen(string);
for(contador=1;contador <= tamanho;contador++)
if(string[contador] == letra)
ocorrencia++;
return(ocorrencia);
}
Abaixo segue um exemplo com a utilização da função contachar(). O exemplo considera que
ela faz parte do arquivo de cabeçalho <samfunc.h>:
#include <stdio.h>
#include <string.h>
#include <samfunc.h>
int main()
{
char *string[20];
char letra[2];
int nr;
Para inverter o conteúdo de uma string use a função strrev( ). Ela faz parte do arquivo de
cabaçalho string.h. Sua sintaxe é:
strrev(string)
Exemplo:
#include <stdio.h>
#include <string.h>
int main()
{
char string[20];
printf("\n");
printf("Invertendo uma string\n");
printf("---------------------\n");
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
printf("Invertendo ==> %s",strrev(string));
return(0);
}
Para substituir todos os caracteres da string pelo mesmo caracter use a função strset( ). Ela
faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:
strset(string,caracter)
Exemplo:
#include <stdio.h>
#include <string.h>
int main()
{
char string[20];
char caracter[2];
printf("\n");
printf("Substituindo os caracteres da string\n");
printf("------------------------------------\n");
printf("\n");
printf("Digite a string :");
scanf("%s",&string);
printf("\n");
printf("Caractere :");
scanf("%s",&caracter);
printf("\n");
printf("Substituindo ==> %s",strset(string,caracter[0]));
return(0);
}
Para comparar duas strings use a função strcmp( ). Ela faz parte do arquivo de cabeçalho
string.h. Sua sintaxe é:
strcmp(string1,string2)
Se as strings forem iguais a função retorna zero, se string1 for maior a função retorna um
valor menor que zero e se string2 for maior a função retorna um valor maior que zero.
Exemplo:
int main()
{
char string1[20],string2[20];
int retorno;
printf("\n");
printf("Comparando duas strings\n");
printf("-----------------------\n");
printf("\n");
printf("Entre com a primeira string :");
scanf("%s",&string1);
printf("\n");
printf("Entre com a segunda string :");
scanf("%s",&string2);
printf("\n");
retorno = strcmp(string1,string2);
if(retorno == 0)
printf("As strings são iguais.\n");
else if(retorno < 0)
printf("A string1 , maior.\n");
else
printf("A string2 , maior.\n");
return(0);
}
OBSERVAÇÕES:
strncmp(string1,string2,nr_caracteres)
2. Existem ainda as funções stricmp( ) e strncmpi( ) que comparam duas strings sem
considerar a caixa das letras (maiúsculas ou minúsculas).
Exemplo:
int main()
{
char string1[20],string2[20];
printf("\n");
printf("Convertendo strings em números\n");
printf("------------------------------\n");
printf("\n");
printf("Entre com a primeira string :");
scanf("%s",&string1);
printf("\n");
printf("Entre com a segunda string :");
scanf("%s",&string2);
printf("\n");
printf("string1 + string2 = %f",atof(string1) + atof(string2));
return(0);
}
Para duplicar uma string use a função strdup( ). Ela está no arquivo de cabeçalho string.h.
Sua sintaxe é:
*strdup(string)
Exemplo:
#include <stdio.h>
#include <string.h>
int main()
{
char string[20];
char *copia;
printf("\n");
printf("Duplicando uma string\n");
printf("---------------------\n");
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
copia = strdup(string);
printf("string ==> %s\n",string);
printf("cópia ==> %s\n",copia);
return(0);
}
6.16 Localizando uma substring dentro da string
Para localizar uma substring dentro da string use a função strstr( ). Ela pertence ao arquivo de
cabeçalho string.h e sua sintaxe é:
strstr(string,substring)
Se a substring existir dentro da string, a função retornará um ponteiro para a primeira letra da
substring, senão retornará NULL.
Exemplo:
#include <stdio.h>
#include <string.h>
int main()
{
char string[20],substring[20];
char *extrai;
int tamanho;
printf("\n");
printf("Localizando uma substring dentro da string\n");
printf("------------------------------------------\n");
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
printf("Entre com a substring :");
scanf("%s",&substring);
tamanho = strlen(substring);
extrai = strstr(string,substring);
printf("\n");
if(extrai)
{
printf("A string contém a substring.\n");
printf("A substring começa na posição %d.\n",extrai-string);
printf("A substring tem %d caracteres.\n",tamanho);
}
else
printf("A string não contém a substring.\n");
return(0);
}
if(extrai)
{
for(contador = 0;contador < tamanho; contador++)
extrai[contador] = string[(extrai - string) + contador];
extrai[contador] = NULL;
return(extrai);
}
else
return(" ");
}
int main()
{
char string[20],substring[20];
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
printf("Entre com a substring :");
scanf("%s",&substring);
printf("\n");
printf("substring ==> %s\n",sstr(string,substring));
return(0);
}
tamanho1 = strlen(substring);
tamanho2 = strlen(nova);
if(extrai)
{
for(contador = 0;contador < tamanho1; contador++)
string[(extrai - string) + contador] = nova[contador];
return(string);
}
else
return(" ");
}
}
int main()
{
char string[20],substring[20],nova[20];
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
printf("\n");
printf("Entre com a substring :");
scanf("%s",&substring);
printf("\n");
printf("Entre com a nova substring :");
scanf("%s",&nova);
printf("\n");
printf("nova string ==> %s\n",subs_str(string,substring,nova));
return(0);
}
#include <stdio.h>
#include <string.h>
int main()
{
char string[100],invertida[100];
char *caracter;
int tamanho,contador;
printf("\n");
printf("Invertendo uma string\n");
printf("---------------------\n");
printf("\n");
printf("Entre com a string :");
scanf("%s",&string);
tamanho = strlen(string);
contador = tamanho;
caracter = &string;
while(*caracter)
{
invertida[(contador - 1)] = *caracter;
*(caracter++);
contador--;
}
invertida[tamanho] = NULL;
printf("\n");
printf("Invertendo ==> %s\n\n",invertida);
return(0);
}
[ Voltar ] [ Índice ] [ Avançar ]