C/Visual C - Porqué ocurre?

 
Vista:

Porqué ocurre?

Publicado por keab (2 intervenciones) el 19/10/2008 01:54:30
Hola Todos, tengo este pequenio programa C hecho en Turbo C++ 3.0:

#include<stdio.h>
#include<conio.h>
#include<string.h>

void conexion( void );

int main() {
clrscr();
conexion();
printf( " BIENVENIDO" );

/* ... */

getch();
return 0;
}

void conexion( void ) {
char clave[] = "micontrasena951";
char ingreso[ 80 ] = "";
register int x;

for ( x = 1; x <= 3 && strcmp( ingreso, clave ); ++x ) {
clrscr();
gotoxy( 66, 1 );
printf( "Intento %d de 3 ", x );

printf( "Introduzca la clave: " );
gets( ingreso );
}
clrscr();
if ( strcmp( ingreso, clave ) ) {
printf( " Conexion fallida, cierre el programa o pulse una tecla" );
getch();
exit( 0 );
}
}

Pero sucede que en el proseso de ejecución al pulsar varias veces la tecla direccional
derecha -> me va mostrando caracter a caracter la última cadena ingresada del
teclado, aún cuando termina de ejecutarse el programa esta se guarda
para la siguiente ejecución. ¿Qué debo hacer para que no se muestren los
caracteres al pulsar dicha tecla?.¿Porqué ocurre esto?.
Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Porqué ocurre?

Publicado por Armando Nava  (127 intervenciones) el 19/10/2008 19:44:21
Saludos

Supongo que tienes activado el doskey, que te guarda un historial de los comandos en MS-DOS

ALT-F7 te elimina el historial

Puedes hacer varias cosas, pero, intenta capturar tu clave con getch() en lugar de getchar() y cololca un putchar(*)

-----------------------------------------

#include <stdio.h>
#include <stdlib.h>

void main (void){
int i;
char clave[10];

printf(" CLAVE: ");
for(i=0;i<10;i++){

clave[i]=getch();
putchar('*');
}
printf(" CLAVE: %s", clave);

getch();

}
--------------------------------------------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar