Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Poyoncio en 27 Julio 2016, 19:03 pm



Título: Problema tonto Segmentation Fault
Publicado por: Poyoncio en 27 Julio 2016, 19:03 pm
Hace poco que empece en C y estaba escribiendo un programa que sobre la marcha iba bien, pero de golpe me da el siguiente error: Segmentatio fault error 139.
Asi que he abierto un nuevo proyecto y e empezado a hacer pruebas, alguien me podria decir porque en este codigo me da error?
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5.    int edad = 1;
  6.    printf(edad);
  7.    return 0;
  8. }
  9.  

Se que debe de ser un error muy sencillo seguramente por un descuido. Pero ahora mismo no caigo en que es. Alguien me podria hacer el favor de comentar la solucion? Gracias de antemano, ya publicare por aqui el proyecto cuando lo tenga terminado ejejeje

PD: Utilizo debian con codeblocks (Lo digo por si acaso)


Título: Re: Problema tonto Segmentation Fault
Publicado por: AlbertoBSD en 27 Julio 2016, 19:07 pm
En lenguaje C, la funcion printf necesita un formato de cadena, no es como cout de C++ que reconoce el tipo de variable y la imprime como tal.

Código
  1.    printf("%i",edad);

Saludos!


Título: Re: Problema tonto Segmentation Fault
Publicado por: Poyoncio en 27 Julio 2016, 19:12 pm
Muchas gracias Alberto  ;-) ;-)
Ya estaba empezando a pensar que seria algun error mas grave jejejee
Muchas gracias de nuevo  ;-)


Título: Re: Problema tonto Segmentation Fault
Publicado por: AlbertoBSD en 27 Julio 2016, 19:17 pm
Es posible usar una variable como formato de cadena claro, perto tiene que ser una variable cadena, y la cadena debe de ser valida.

Si te interesa ver ese tipo de errores con el printf, estan los bugs llamados format string los cuales se producen al usar incorrectamente printf, o cadenas malformadas

Busca por:

Código:
format string bugs

Saludos!


Título: Re: Problema tonto Segmentation Fault
Publicado por: Poyoncio en 27 Julio 2016, 19:30 pm
Me lo apunto para mas adelante  ;D
Saludos! Y gracias por la informacion