Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Alguien sabe por que esto peta la consola en C?

Estas en el tema de Alguien sabe por que esto peta la consola en C? en el foro de C/C++ en Foros del Web. int ancho = 3; printf("%*d\b%s %*d", ancho,"codigo", 10, 20);...
  #1 (permalink)  
Antiguo 06/11/2014, 09:38
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Sonrisa Alguien sabe por que esto peta la consola en C?

int ancho = 3;
printf("%*d\b%s %*d", ancho,"codigo", 10, 20);


Última edición por vangodp; 06/11/2014 a las 09:43
  #2 (permalink)  
Antiguo 06/11/2014, 09:50
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Alguien sabe por que esto peta la consola en C?

Así a bote pronto tienes un problema de parámetros.

con "*" le indicas a printf el tamaño del siguiente campo, en ese caso, printf espera encontrarse primero con un int que indique el tamaño del campo y después el valor efectivo del campo.

En el caso que te ocupa tu tienes "%*d\b%s %*d". Desglosamos:
  • %*d -> 2 parámetros
  • %s -> 1 parámetro
  • %*d -> 2 parámetros

en total dan 5 parámetros y tu únicamente estás pasando 4, luego acabas accediendo a memoria que no te pertenece.
  #3 (permalink)  
Antiguo 06/11/2014, 10:42
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Alguien sabe por que esto peta la consola en C?

Es cierto! no lo vi jajaj
lo que queria es hacer que la lonjitud fuera variable XD
int ancho = 3;
printf("%*d\b%s%*d\b%s", ancho, 1,"codigo", ancho, 1,"asc2");

Ya me ando correctamente =) gracias!
  #4 (permalink)  
Antiguo 06/11/2014, 10:45
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Alguien sabe por que esto peta la consola en C?

De nada :)

Un saludo.

Etiquetas: consola
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:38.