fgets

Dlaczego funkcja gets jest tak niebezpieczna, że nie powinna być używana?

Kiedy próbuję skompilować kod C, który używa funkcji gets() z GCC, I get this Ostrzeżenie: (.tekst+0x34): Ostrzeżeni ... dlaczego jest takie ostrzeżenie o używaniu gets()? Jeśli gets() jest tak niebezpieczny, więc dlaczego nie możemy go usunąć?

Usuwanie końcowego znaku nowej linii z wejścia fgets ()

Próbuję pobrać dane od użytkownika i wysłać je do innej funkcji w gcc. Kod jest podobny do tego. printf("Enter your Name: ") ... u ma znak newline \n. Więc jeśli wpiszę {[2] } to kończy się wysłaniem John\n. Jak usunąć \n i wysłać odpowiedni ciąg znaków.