aula 129

Como ler uma String com a função scanf() na linguagem de programação C?

Seja muito bem vindo à aula 129 do nosso curso gratuito de programação com a linguagem C.

Uma string pode ser lida do teclado facilmente com a função scanf(), mas há dois detalhes que devem ser levados em conta.

O primeiro é que para ler uma string fazemos uso do %s. O segundo é que, até o momento, sempre utilizamos o operador & na frente do nome da variável. Isso é necessário porque a função recebe o endereço de memória onde será salvo o dado lido. Contudo, como veremos mais a frente em nosso curso quando formos estudar ponteiros, o nome de um vetor já é um ponteiro. Assim, não devemos colocar o operador & na frente do nome da variável PARA LER UMA STRING, assim:

char palavras[100];
scanf("%s", palavras);

Ao testar esse código algumas vezes você perceberá que será lido apenas a primeira palavra. Esse é o funcionamento padrão da função scanf() para a leitura de texto, é lido até o primeiro espaço.

Outro problema que pode ocorrer é que, por padrão, a função scanf() não verifica o tamanho do vetor. Assim, se o vetor tem tamanho 20 mas o usuário digita um texto com 40 caracteres, serão ocupadas as 20 posições do vetor, mas também serão ocupadas as 20 posições seguintes (lembra que eu disse que um vetor é sequencial na memória?) que não pertencem ao nosso programa.

Para que isso não ocorra, podemos escrever a função scanf() assim:

char palavras[100];
scanf("%100[^\n]", palavras);

O número após a o sinal de % é o tamanho do nosso vetor, ou seja, a quantidade máxima de caracteres que podem ser lidos. Os caracteres entre o par de colchetes altera o funcionamento padrão da função para ler tudo que for digitado ATÉ que o ENTER seja pressionado.

Deixe um comentário

2 + um =

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.