elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  (Consulta) Porque no me funciona gets(string)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Consulta) Porque no me funciona gets(string)  (Leído 3,553 veces)
palacio29

Desconectado Desconectado

Mensajes: 103


Ver Perfil
(Consulta) Porque no me funciona gets(string)
« 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

Código
  1.  fila=0;
  2.        printf ("\nIngrese el nombre del alumno: ");
  3.        gets(nombre);
  4.        printf ("\nIngrese el numero de comision:  ");
  5.        scanf ("%d",&comision);
  6.        printf  ("\n%s",nombre);
  7.  
  8.  

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


En línea

Ivancamilo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: (Consulta) Porque no me funciona gets(string)
« Respuesta #1 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:
Código
  1. #include<iostream>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. using namespace std;
  6.  
  7. int main(){
  8.  
  9. char nombre[100];
  10. int comision;
  11. printf ("\nIngrese el nombre del alumno: ");
  12.    gets(nombre);
  13.    printf ("\nIngrese el numero de comision:  ");
  14.    scanf ("%d",& comision);
  15.    printf  ("\n%s",nombre);
  16.  
  17. system("pause");
  18. return 0;
  19. }
  20.  


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: (Consulta) Porque no me funciona gets(string)
« Respuesta #2 en: 28 Agosto 2016, 20:22 pm »

Recomiendo mejor el uso dw fgets para poder limitar la entrada y no causar un bufferoverflow:

Código
  1. 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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines