Para capturar as strings fornecidas pelo usuário, utilize o formato %49s com scanf, garantindo que no máximo 49 caracteres sejam lidos (o último espaço é reservado para o caractere nulo \0). Por exemplo:
char palavra[50]; scanf(%49s, palavra);
char palavra[50]; scanf(%49s, palavra);
Passo 1
Então, o enunciado está falando sobre como ler strings (sequências de caracteres) fornecidas pelo usuário de forma segura em C. A matéria aqui envolve manipulação de strings e funções de entrada, especificamente a função
scanf
. Para resolver, vamos precisar entender como o scanf
funciona com especificadores de formato e como evitar erros como o estouro de buffer.Passo 2
Primeiro, vamos olhar para a declaração
char palavra[50];
. Isso cria um array de caracteres chamado palavra
que pode armazenar até 50 caracteres. Mas por que 50?Passo 3
Em C, as strings são terminadas com um caractere nulo
\0
que indica onde a string termina. Então, se quisermos armazenar até 49 caracteres reais que o usuário digitar, precisamos de um espaço extra para esse \0
. Por isso, usamos 50 no total.Passo 4
Agora, vamos para a parte do
scanf
: scanf("%49s", palavra);
. Aqui, %49s
indica que o scanf
vai ler até 49 caracteres para garantir que não excedamos o tamanho do array palavra
. Isso evita que o usuário digite mais caracteres do que o espaço disponível, prevenindo erros como o estouro de buffer.Passo 5
Explicando um pouco mais, o especificador
%s
no scanf
é usado para ler uma string. Ao adicionar o número 49
antes do s
(%49s
), estamos limitando a quantidade de caracteres que serão lidos. Se o usuário tentar digitar mais de 49 caracteres, o scanf
vai parar de ler após os 49 primeiros, deixando espaço para o \0
.Resposta
Usando
scanf("%49s", palavra);
com um array de char palavra[50];
garante que apenas até 49 caracteres sejam lidos do usuário, reservando o último espaço para o caractere nulo \0
, evitando assim possíveis erros de estouro de buffer.