(Consulta) Porque no me funciona gets(string)

Iniciado por palacio29, 28 Agosto 2016, 18:09 PM

0 Miembros y 1 Visitante están viendo este tema.

palacio29

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

Ivancamilo

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;
}

AlbertoBSD

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
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW