aula 142

Matriz de Strings na linguagem de programação C

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;
}


Este post tem um comentário

  1. Marcio Cordeiro

    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.

Deixe um comentário

dois × quatro =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.