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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Errores raros después de una compilación normal
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Errores raros después de una compilación normal  (Leído 2,701 veces)
jeanmlduarte

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Errores raros después de una compilación normal
« en: 27 Febrero 2017, 18:48 pm »

Hola, buenas a todos! me eh comprado um livro/manual de programación c/c++ de  miguel angel acera, y pues con este libro estoy iniciando en este mundo. Utilizo Ubuntu 16.10 - Atom 1.14.3x64, y todos mis programas los compilo através del terminal con el comando gcc -o, y ya es la segunda vez que compilo un ejemplo y me sale un error en el programa. No lo entiendo pues, al momento de la compilación lo único que me avisa que algunas funciones son vulnerables. en el momento que relleno una estructura salta a la segunda estructura dejando el parametro nombre hacia atras sin poder rellenar, no se si me explico dejo una imagen para que se vea mas claro. Gracias antemano!

http://imageshack.com/a/img922/5695/MOwux0.png


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Errores raros después de una compilación normal
« Respuesta #1 en: 27 Febrero 2017, 18:52 pm »

En vez de gets(persona.nombre), utiliza fgets:

Código
  1. fgets(char* cadena, int tamañoCadena, FILE* stream)

Lo llamarías:
Código
  1. fgets(persona.nombre, 30, stdin)


En línea

jeanmlduarte

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Errores raros después de una compilación normal
« Respuesta #2 en: 27 Febrero 2017, 19:18 pm »

Muchas gracias por contestar ivancea96! ahora el problemas es sobre clang, Atom me decía para que verificara si tuviera instalado clang como compilador y buscando por google un poco encontre como instalarlo y la verdad es que no sabia de su existencia, bien ahora al compilar lo hago de esta manera clang -wall *.c me sale el archivo a.out lo ejecuto con el comando ./a.out y seguimos con el mismo error. Cambie el codigo como indicaste quedando asi.

 for (n=1; n<=3; n++)
    {
      printf ("\n\nNombre: ");
      fgets (persona.nombre, 30, stdin);
      printf("\nEdad: ");
      scanf("%d", &persona.edad);
      fwrite (&persona, sizeof (persona), 1, fichero);
    }
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Errores raros después de una compilación normal
« Respuesta #3 en: 27 Febrero 2017, 19:55 pm »

Bien, el problema es que scanf deja un salto de línea en stdin. fgets lo lee, y da como terminada la lectura. Para ello, puedes usar:
Código
  1. scanf("%d%*c", &n);

Ese %*c lee un caracter y no lo guarda. Esta es la solución rápida.

Otra solución sería leer siempre cadenas y, cuando sea un número, convertirla con la función int atoi(char*)
En línea

jeanmlduarte

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Errores raros después de una compilación normal
« Respuesta #4 en: 27 Febrero 2017, 20:12 pm »

Bien!! ahora si, muchas gracias, pero a que se deve estos problemas? tiene que ver con las anticuadas versiones de C/C++ con las que estoy aprendiendo?
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Errores raros después de una compilación normal
« Respuesta #5 en: 27 Febrero 2017, 20:22 pm »

No, es cosa del funcionamiento de las funciones, sin más. Tú cuando escribes algo en consola y pulsas enter, se envía esto: "12345\n". Ese salto de línea del final, scanf no lo quita del stream, así que se queda ahí. Entonces, cuando fgets trata de leer la línea, se encuentra con ese '\n'. fgets, como otras funciones, cuando encuentra un '\n', deja de leer, así que ya ni te deja escribir.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Errores raros :S
Java
Luisango 4 3,245 Último mensaje 5 Junio 2007, 15:13 pm
por alvk4r
Pasar caracteres raros a texto normal
Dudas Generales
GN1000 8 7,819 Último mensaje 28 Agosto 2013, 22:24 pm
por Esgrimidor
errores raros de visual basic
Programación Visual Basic
leliCabello 0 1,511 Último mensaje 30 Octubre 2010, 23:08 pm
por leliCabello
Ayuda con función (Errores raros)
Programación C/C++
bsantana 4 2,100 Último mensaje 12 Abril 2016, 05:42 am
por bsantana
Errores de compilacion en C
Programación C/C++
maxbox 2 2,559 Último mensaje 11 Julio 2018, 17:35 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines