Função gets() em C

Por que obtenho esse erro na compilação, embora eu consigo executá-lo normalmente;

Código:

#include <stdio.h>
#include <stdlib.h>

int main() {
	char nomeCompleto[20];

	printf("Qual o seu nome: ");
	gets(nomeCompleto);
	printf("Seu nome é: %s\n", nomeCompleto);
	return 0;
}

Erro na compilação:

spli.c: In function ‘main’:
spli.c:8:2: warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
  gets(nomeCompleto);
  ^
/tmp/ccLaJxGc.o: na função `main':
spli.c:(.text+0x29): aviso: the `gets' function is dangerous and should not be used.
1 curtida

Olá colega, compilei seu código no CodeBlocks e executou normalmente.

Mas neste caso, eu compilei e executei no linux (Terminal). O programa rodou normalmente, mas por que ele me retorna isso? Eu queria compilar sem erros.

Olá @YuriDeveloper, quando uma função está marcada como depreciada(deprecated) é porque não é recomendado utilizar ela… Isso se dá a vários motivos… Funções que não recebem mais atualizações, funções que apresentão uma falha de segurança mas não são removidas para não quebrar as aplicações antigas.
É recomendado usar o fgets, pois o gets pode causar buffer overflow… Tipo seu vetor é de 20 caracteres… Mas o usuário digita 30… Vai dar pau.
Aqui tem uma explicação:

3 curtidas

Muito Obrigado @victormenegusso