Nesta aula veremos como trabalhar com uma matriz de strings na linguagem de programação C, lendo vários nomes a partir do teclado e salvando em uma matriz de caracteres.
Ao trabalhar com strings deve-se ter muita atenção com a função utilizada para realizar a leitura da string.
A função scanf, por exemplo, pode ser configurada para ler tudo que for digitado até que o ENTER seja pressionado, contudo, o próprio ENTER não é lido, ele permanece no buffer do teclado.
Por outro lado, a função fgets lê tudo que for digitado, inclusive o ENTER. Assim, a string lida pode conter um ENTER ou não ao final, dependendo da função utilizada para sua leitura.
No trecho de código a seguir temos uma matriz de caracteres de 5 linhas e 25 colunas, ou seja, podemos ler 5 strings (uma por linha) com o máximo de 25 caracteres cada string.
Para a leitura foi utilizada a função scanf configurada para ler no máximo 25 caracteres e fazer a leitura até que a tecla ENTER seja pressionada. Como a função scanf lê até o ENTER mas não lê o ENTER, na linha seguinte fazemos uso da função scanf novamente, desta vez para ler um caracter e não salvar em nenhuma variável, aqui estamos retirando do buffer de teclado o ENTER que havia ficado lá.
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char nomes[5][25]; int l; for(l = 0; l < 5; l++){ printf("\nDigite o nome da posicao %d. ", l); scanf("%25[^\n]", nomes[l]); scanf("%c"); } for(l = 0; l < 5; l++) printf("\nNome na posicao %d: %s", l, nomes[l]); return 0; }
Quando tento efetuar este código, aparece erro de compilação indicando justamente o scanf(“%c”). Eu tive que criar um vetor de 1 posição para receber o enter para funcionar.