Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: palacio29 en 28 Agosto 2016, 18:09 PM

Título: (Consulta) Porque no me funciona gets(string)
Publicado por: palacio29 en 28 Agosto 2016, 18:09 PM
Hola

Quiero realizar un programa en donde me pida algunos datos y quiero guardar uno de ellos en un arreglo con la funcion gets(string). El problema es que al realizar la carga es como que se saltea la funcion y me pide ingresar los datos del proximo dato.

La parte donde falla es la siguiente

  fila=0;
        printf ("\nIngrese el nombre del alumno: ");
        gets(nombre);
        printf ("\nIngrese el numero de comision:  ");
        scanf ("%d",&comision);
        printf  ("\n%s",nombre);



Al ejecutarlo directamente se saltea el gets y empieza por "Ingrese el numero de comision". A este codigo le faltan declarar variables, etc pero quizas no estoy entendiendo el funcionamiento de la funcion, que desventajas tiene ,etc o porque se saltea?.

Muchas gracias
Título: Re: (Consulta) Porque no me funciona gets(string)
Publicado por: Ivancamilo en 28 Agosto 2016, 18:26 PM
Declara la variable nombre como un array de tipo char[100], dándole una longitud que no sea tan exagerada:
#include<iostream>
#include<stdlib.h>
#include<string.h>

using namespace std;

int main(){

char nombre[100];
int comision;
printf ("\nIngrese el nombre del alumno: ");
    gets(nombre);
    printf ("\nIngrese el numero de comision:  ");
    scanf ("%d",& comision);
    printf  ("\n%s",nombre);

system("pause");
return 0;
}
Título: Re: (Consulta) Porque no me funciona gets(string)
Publicado por: AlbertoBSD en 28 Agosto 2016, 20:22 PM
Recomiendo mejor el uso dw fgets para poder limitar la entrada y no causar un bufferoverflow:

fgets(cadena,limite,stdin);

Donde cadena es un char de longitud limite, limite nos limita la entrada de datos y stdin es la entrada estandar

Saludos