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

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.

Exercícios relacionados