Error con la funcion gets lenguaje C..

Imagen de Jesuscc29
0 puntos

Hola, que tal.. soy nuevo en el mundo de Ubuntu, y me puse a programar en el gcc y cuando uso el gets me tira este error:

Programa.cpp:(.text+0x5f): warning: the `gets' function is dangerous and should not be used.

quisiera saber que se hace en este caso.. Muchas gracias de antemano.. =D

Imagen de edgar_916
+1
0
-1

pero el gcc no es un lenguaje en si mismo, es un compilador XD

usa la funcion scanf, o si es c++ usas cin

en cualquier manual basico de c/c++ aparecen

+1
0
-1
Imagen de Jesuscc29
+1
0
-1

Sé programar, conosco el scanf, y el cin del c++, mi pregunta fue acerca de como solucionar el problema del gets.. Gracias de antemanno..

+1
0
-1
Imagen de ubuntu111
+1
0
-1

Solo té dice que es peligroso utilizarlo. Porque gets(); no sabe la dimensión de lo que vas a poner. Si quieres que no te salga esa advertencia utiliza:
fgets(texto,20,stdin);
texto = variable *char
20 = dimensión de texto
stdin = modo de entrada
-------------
Me parece que era así, no soy un profesional en esto, pero llevo tiempo metido.

Si hay alguien que sepa más que yo y lo he explicado mal, que lo diga, así yo también aprendo un poco más.

+1
0
-1


Si eres programador, ya sea avanzado o novato, entra en http://www.aprendeprogramacion.net/ todo para empezar a programar.

Imagen de dmarron
+1
0
-1

Si entiendes el warning y quieres seguir adelante, pues ignoralo, ya que no es un error.

+1
0
-1
Imagen de Jesuscc29
+1
0
-1

El problema es que me da el Warning y no me deja continuar con el programa.. =S..

+1
0
-1
Imagen de Goyo
+1
0
-1

¿Cómo te lo impide? Yo no he tenido ningún problema.

+1
0
-1
Imagen de ubuntu111
+1
0
-1

¿Que IDE utilitzas?
Y pon un programa de ejemplo.

+1
0
-1


Si eres programador, ya sea avanzado o novato, entra en http://www.aprendeprogramacion.net/ todo para empezar a programar.

Imagen de Jesuscc29
+1
0
-1

No utilizo IDE, lo creo desde el gedit del ubuntu y los compilo en la terminal con el gcc..

Y por ejemplo este programa es el que trato de correr:

#include
#include

#define ELEMENTOS 3

struct estructura_amigo {
char nombre[30];
char apellido[40];
char telefono[10];
int edad;
};

struct estructura_amigo amigo[ELEMENTOS];

int main()
{
int num_amigo;

for( num_amigo=0; num_amigo

+1
0
-1
Imagen de Jesuscc29
+1
0
-1

No utilizo IDE, lo creo desde el gedit del ubuntu y los compilo en la terminal con el gcc..

Y por ejemplo este programa es el que trato de correr:

#include
#include

#define ELEMENTOS 3

struct estructura_amigo {
char nombre[30];
char apellido[40];
char telefono[10];
int edad;
};

struct estructura_amigo amigo[ELEMENTOS];

int main()
{
int num_amigo;

for( num_amigo=0; num_amigo

+1
0
-1
Imagen de ubaloie
+1
0
-1

Hola, con gets no puedes controlar la cantidad de carácteres que introduce el usuario, si introduce de más sobreescribirás áreas de memoria, lo cual es grave. Para evitarlo usa la función fgets, la cual hace lo mismo pero limitando el número de caracteres a leer, nunCar-1, y enfocada a ficheros y como la entrada estándar no deja de ser un fichero especial podemos usarla pasándole la variable stdin, definida en stdio.h y que apunta a dicho teclado:

Ejemplo:

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

int main(int argc, char** argv) {

int nunCar=10;
char varCad[nunCar];
fgets(varCad,nunCar,stdin);
printf("Cadena introducida: %s", varCad);

return (EXIT_SUCCESS);
}

Ah, yo uso Geany para programar en c en ubuntu, es un ide sencillo pero muy potente, está en los repositorios, te lo recomiendo.

Saludos.


+1
0
-1