














Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Aprenda sobre matrizes e strings em c, incluindo vetores, matrizes bidimensionais e matrizes multidimensionais, e como manipular strings usando funções da biblioteca padrão c. Este documento também inclui exercícios para prática.
Tipologia: Notas de aula
1 / 22
Esta página não é visível na pré-visualização
Não perca as partes importantes!















-^
Vetores^ –
tipo_da_variável
nome_da_variável
[tamanho];
tipo_da_variável
nome_da_variável
[tamanho];
-^
Uma declaração como esta reserva um espaço namemória para armazenar o número de célulasespecificadas em tamanho. Por exemplo:
float exemplo [20];
-^
Vetores
-^
O que este programa faz? #include <stdio.h>int main (){
int num[100]; /* Declara um vetor de inteiros de 100 posicoes */int count=0;int totalnums;do{^
printf ("\nEntre com um numero (-999 p/ terminar): "); scanf
("%
d",&num
[count]);
scanf
("%
d",&num
[count]);
count++; } while (num[count-1]!=-999);totalnums=count-1;printf ("\n\n\n\t Os números que você digitou foram:\n\n");for (count=0;count<totalnums;count++)
printf (" %d",num[count]); return(0);} Nenhuma restrição é feita quanto a quantidade de números digitados. Se o usuáriodigitar mais de 100 números, o programa tentará ler normalmente, mas o programaos escreverá em uma parte não alocada de memória, pois o espaço alocado foi parasomente 100 inteiros. Isto pode resultar nos mais variados erros no instanteda execução do programa.
-^
Exercício
-^
-^
Strings
-^
Quando vamos fazer programas que tratam de string muitas vezespodemos fazer bom proveito do fato de que uma string termina com'\0' (isto é, o número inteiro 0).
-^
O programa abaixo que serve para igualar duas strings (isto é, copia oscaracteres de uma string para o vetor da outra) : #include <stdio.h>int main (){
int
count; int
count; char str1[100],str2[100];
/* Aqui o programa lê str1 que será copiada para str2 */ for(count=0;str1[count];count++)
str2[count]=str1[count]; str2[count]='\0';....
/* Aqui o programa continua */}
A condição no loop
for
acima é baseada no fato de que a string que está
sendo copiada termina em '\0'. Quando o elemento encontrado em str1[count]
é o '\0', o valor retornado para o teste condicional é falso
(nulo). Desta forma a expressão que vinha sendo verdadeira (não zero)continuamente, torna-se falsa.
- Funções para manipular strings
gets
-^
A função
gets()
lê uma string do teclado. gets (nome_da_string);
#include <stdio.h>int main (){
char string[100];printf ("Digite o seu nome: "); gets (string);gets (string); printf ("\n\n Ola %s",string);return(0);}
-^
Note que é válido passar para a função
printf()
o nome da string.
Como o primeiro argumento da função
printf()
é uma string também
é válido fazer:
printf (string); /isto imprimirá a string/
- Funções para manipular strings
Strcat
strcat (string_destino,string_origem);
A string de origem permanece inalterada e é anexada ao fim dastring de destino. #include <stdio.h>#include <string.h>int main (){
char str1[100],str2[100];char str1[100],str2[100]; printf ("Entre com uma string: ");gets (str1);strcpy (str2,"Voce digitou a string ");strcat (str2,str1);
/* str2 armazenara' Voce digitou a string + o
conteudo de str1 */printf ("\n\n%s",str2);return(0);}
- Funções para manipular strings
Strlen
strlen (string);
A função
strlen()
retorna o comprimento da string fornecida.
O finalizador nulo não é contado. Isto quer dizer que, de fato, ocomprimento do vetor da string deve ser um a mais que o inteiroretornado por
strlen()
#include <stdio.h>#include <stdio.h> #include <string.h>int main (){
int size;char str[100];printf ("Entre com uma string: ");gets (str);size=strlen (str);printf ("\n\nA string que voce digitou tem tamanho %d",size);return(0);}
- Funções para manipular strings
Exercício Faça um programa que leia quatro palavras pelo teclado, e armazenecada palavra em uma string. Depois, concatene todas as strings lidas numa única string. Por fim apresente esta como resultado ao final donuma única string. Por fim apresente esta como resultado ao final do programa.
Matrizes bidimensionais
-^
Vimos como declarar matrizes unidimensionais (vetores). Vamostratar agora de matrizes bidimensionais.
tipo_da_variável nome_da_variável [altura][largura];
-^
Nesta estrutura de dados, o índice da esquerda indexa as linhas e oda direita indexa as colunas.
-^
É bom lembrar que, na linguagem C, os índices variam de zero aovalor declarado, menos um; mas o C não vai verificar isto para ousuário. Manter os índices na faixa permitida é tarefa doprogramador.
Matrizes de strings
-^
Matrizes de strings são matrizes bidimensionais.
-^
Uma string é um vetor.
-^
Se fizermos um vetor de strings, estaremos fazendo uma lista devetores. Esta estrutura é uma matriz bidimensional de
char
s.
char nome_da_variável [num_de_strings][compr_das_strings];
-^
como acessar uma string individual?^ –^
É só usar apenas o primeiro índice:
nome_da_variável [índice]
Matrizes de strings
-^
um programa que lê 5 strings e as exibe na tela: #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
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" };
-^
O primeiro exemplo demonstra inicialização de vetores.
-^
O segundo a inicialização de matrizes multidimensionais, onde
-^
O segundo a inicialização de matrizes multidimensionais, onde matrx
está sendo inicializada com 1, 2, 3 e 4 em sua primeira linha, 5, 6, 7 e 8 na segunda linha e 9, 10, 11 e 12 na última linha.
-^
No terceiro exemplo vemos como inicializar uma string
-^
No quarto exemplo, um modo mais compacto de inicializar umastring.
-^
O quinto exemplo combina as duas técnicas para inicializar umvetor de strings. Observe que devemos incluir o
;^ no final da inicialização.
Matrizes multidimensionais
-^
Pode-se inicializar matrizes que não se sabe o tamanho
a priori
-^
O compilador C vai verificar o tamanho do que você declarou e considerarcomo sendo o tamanho da matriz.
-^
Isto ocorre na hora da compilação e não poderá mais ser mudado durante oprograma.
-^
Útil quando vamos inicializar uma string e não queremos contar quantos caracteres serão necessários.caracteres serão necessários. char mess [] = "Linguagem C: flexibilidade e poder.";int matrx [][2] = { 1,2,2,4,3,6,4,8,5,10 };
-^
No primeiro exemplo, a string
mess
terá tamanho 36.
No segundo exemplo o valor não especificado será 5.