Matriz de Strings em C
Matriz de strings.
Aqui, no estudo de strings, você vai perceber que não é complicado, porque uma matriz de strings, basicamente é uma matriz de caracteres; só que aí antes da gente pensar em uma matriz, vamos pensar no seguinte, olha só, vamos imaginar a leitura de três strings; se eu quero ler três strings, a princípio, o que a gente precisa?
A gente precisa de três vetores.
Uma matriz é um vetor de caracteres, é uma sequência de caracteres; se eu quero ler três strings, a gente vai precisar de três vetores de caracteres, e aí a gente pode imaginar isso dessa forma, o meu primeiro vetor vai conter a primeira string lida, Maria por exemplo, perceba que a gente tenha que o final da nossa string; o meu segundo o vetor, Pedro, com o final da string aqui; e o meu terceiro vetor, João.
Agora, olhando para esse desenho, para essa forma gráfica desses três vetores, você concorda que isso parece muito uma matriz de três linhas e oito colunas?
Olha só, o meu primeiro vetor, a gente pode imaginar ele como sendo a linha zero ou a primeira linha da nossa matriz; o meu segundo vetor a segunda linha; o meu terceiro vetor a terceira linha; e nesse caso nós temos aqui as colunas, cada posição do nosso vetor então uma coluna da nossa matriz.
Isso aqui já dá uma ideia para a gente de que uma matriz de strings, nada mais é do que uma matriz de caracteres; e aí é por isso que eu disse que trabalhar com uma matriz de string é bastante simples, desde que você esteja acompanhando as aulas e entendendo que uma string é um vetor de caracteres.
Vamos ver um exemplo aqui mais prático para a gente realmente entender como isso funciona.
Uma matriz de strings é uma matriz do tipo primitivo char, onde cada linha terá uma string.
Aqui nós temos uma situação onde, dependendo do problema que você está tentando resolver, você não vai precisar percorrer as colunas da sua matriz, porque cada linha vai conter uma string.
A gente pode representar uma matriz de caracteres ou uma matriz de strings dessa forma, perceba que eu tenho aqui uma matriz com as nossas linhas, as nossas colunas e cada linha tem uma string, olha só, na linha zero eu tenho a string Ana, na linha um eu tenho a string Paulo, e na linha dois eu tenho a string Joaquim.
Então perceba, cada linha é uma string, eu posso percorrer as linhas utilizando por cento s, lembra, com o por cento s a função printf sabe que vai ser impresso uma string, então ela vai imprimir tudo, até encontrar um contrabarra zero, que indica o final da nossa string.
Então, imprimir uma matriz de string se torna extremamente simples, eu vou olhar para minha matriz e perguntar quantas linhas ela tem.
Ela tem três linhas, eu vou fazer uma repetição de zero até menor que três, para passar por todas as linhas, linha zero, linha um e linha dois, e então, dentro dessa repetição, eu vou colocar um printf para imprimir uma string, olha o nosso por cento s aqui; de onde virá a nossa string?
Do meu vetor nomes, na posição i.
Perceba que agora eu só estou usando índice de linha, eu não preciso informar coluna, por quê?
Porque eu não quero imprimir só o a, só o n ou só o p, eu quero imprimir a string toda da minha linha e toda a string da linha zero, toda string da linha um e toda string da linha dois.
E como é uma string, por cento s, a função vai procurar pelo caractere de final de string; assim que encontrar o contrabarra zero, ela finaliza a impressão da nossa linha.
Vamos ver esse exemplo funcionando lá no Code Blocks?
Eu tenho aqui um exemplo bastante simples, perceba que eu tenho aqui uma matriz chamada nomes, do tipo char, então é uma matriz de caracteres; essa matriz tem três linhas e cinquenta colunas e aí eu já atribuí um conjunto de dados para essa matriz, olha só, string Ana, essa string vai ser colocada na primeira linha da nossa matriz, perceba que a gente tem aqui um conjunto de caracteres, então esse esse conjunto de caracteres vai ser a linha zero; esse conjunto de caracteres vai ser a linha um e esse conjunto de caracteres vai ser a linha dois; então eu já estou populando, já estou preenchendo a minha matriz de caracteres.
Eu vou imprimir toda a minha matriz na tela, porém, eu não preciso de duas repetições, porque é string olha só, por cento s, a função printf vai imprimir toda a linha l da nossa matriz até encontrar o caractere de fim de string.
Quando encontrar o caractere de fim de string, ela finaliza a impressão da linha l da nossa matriz e aí a nossa repetição vai de zero até menor que três para passar pela linha zero, pela linha um e pela linha dois.
Vamos testar aqui o nosso programa?
Eu vou compilar e executar que o meu programa e aí, olha só o nosso resultado, nós temos aqui na linha zero Ana, linha um Paulo, linha dois Joaquim.
Nós podemos inclusive imprimir o índice da linha, eu vou colocar aqui a esquerda por cento d, sinal de igual, e agora aqui eu vou colocar então o nosso l, esse por cento d vai ser substituído pelo índice l e esse por cento s pela nossa string na linha l.
Eu alterei o programa, então eu preciso compilar novamente, nós temos aqui agora a nossa matriz, linha zero Ana, linha um Paulo, linha dois Joaquim.