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

xorrada

Estas en el tema de xorrada en el foro de C/C++ en Foros del Web. Buenos dias gente. Estoy empezando a programar, tengo el Dev-C++ 5 Beta 9.2 (4.9.9.2) . Mi problema es: tengo un programa sencillo, se me compila ...
  #1 (permalink)  
Antiguo 15/05/2010, 08:53
 
Fecha de Ingreso: marzo-2010
Mensajes: 53
Antigüedad: 14 años, 8 meses
Puntos: 0
xorrada

Buenos dias gente.
Estoy empezando a programar, tengo el Dev-C++ 5 Beta 9.2 (4.9.9.2) .
Mi problema es: tengo un programa sencillo, se me compila y al ejecutarle pones un numero das al enter y me pone Windows ha detectado un error debe cerrar el programa.
Es normal eso??Estoy haciendo algo mal??Conoceis algun compilador mas adaptado a principiantes??
Muchas gracias de antemano.
De todas formas aqui os dejo el codigo:

#include <stdio.h>
main()
{
int usuario,clave=5;
printf("Introduzca su clave: ");
scanf("%d",usuario);
if(usuario==clave)
{
printf("acceso permitido");
}
else
printf("Acceso denegado");
}
  #2 (permalink)  
Antiguo 15/05/2010, 09:43
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: xorrada

Al usar scanf (ver abajo) usa la direccion de memoria de la variable que quieres leer, no el valor de ella

osea, cambia

scanf("%d",usuario);

por

scanf("%d",&usuario);


(En C las funciones no tienen el poder de cambiar los valores de las variables. scanf es una mas que usa el truco de cambiar las variables usando la direccion de memoria de ellas)
  #3 (permalink)  
Antiguo 16/05/2010, 14:30
 
Fecha de Ingreso: marzo-2010
Mensajes: 53
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: xorrada

muchas gracias
pero ahora cuando introduzco el numero* se me cierra la ventana sin mensaje ni nada.
*el numero es el que te pide el programa
  #4 (permalink)  
Antiguo 16/05/2010, 15:46
Avatar de pmike  
Fecha de Ingreso: marzo-2004
Ubicación: Barcelona
Mensajes: 313
Antigüedad: 20 años, 8 meses
Puntos: 7
Respuesta: xorrada

antes de leer un carácter con scanf, hay que vaciar (limpiar) el buffer del teclado. Para ello, se utiliza la función: fflush( stdin );

despues para leer el printf pondremos la función getchar();

Y si que sale finalmente 'acceso permitido' o 'denegado'

codigo:

int main()
{
int usuario,clave=5;
printf("Introduzca su clave: ");
scanf("%d",&usuario);
fflush( stdin );
if(usuario==clave) printf("acceso permitido");
else printf("Acceso denegado");
getchar();
}

espero haberte ayudado
__________________
www.visitaspirata.com
  #5 (permalink)  
Antiguo 17/05/2010, 07:08
 
Fecha de Ingreso: marzo-2010
Mensajes: 53
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: xorrada

muchas gracias a los dos
aora si que funciona

Etiquetas: Ninguno
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:29.