Andre, o fgets
quando lê uma string que seja menor que o tamanho informado, deixa um caracter '\n'
ao final dessa string, fazendo com que quando escrevemos essa string com um printf
tenha essa quebra de linha. Este comportamento não ocorre com a função gets
porém esta função sofre com alguns problemas de segurança.
É possível continuar utilizando a fgets
e resolver este problema, mas para isso precisamos saber em qual posição da cadeia se encontra este caracter '\n'
e substituí-lo pelo marcador de fim de string '\0'
. Uma forma é utilizando a função strcspn
da biblioteca string.h
que encontra a primeira ocorrência de um caracter dentro de uma cadeia, conforme o exemplo a seguir:
printf("Qual seu nome? ");
fgets(nome, 30, stdin);
int quebra = strcspn(nome, "\n");
nome[quebra] = '\0';
printf("Prazer em conhecê-lo %s seja bem vindo!", nome);
Para utilizar esta função é necessário incluir a biblioteca string.h
.
Espero ter ajudado, caso a dúvida persista basta entrar em contato.