C/Visual C - eliminar

 
Vista:
sin imagen de perfil

eliminar

Publicado por jorge (13 intervenciones) el 01/11/2007 16:18:54
hola....
tengo la siguiente duda...
este es mi codigo:

int main(){
char tecla,clave[10];
int i=0,j=0;
printf("\nIngrese una palabra:");
tecla=getch();
while(tecla!='\r'){
clave[i]=tecla;
i++;
printf("*");
tecla=getch();
}
printf("\n\nCLAVEEE!!\n");
for(j=0;j<i;j++){
printf("%c",clave[j]);
}
getch();
}

la duda es...
¿que tengo que hacer para que cuando presionen la tecla de borrar se elimine un asterisco y la letra que ingresa?

ojala me puedan ayudar..
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:eliminar

Publicado por ALexis (14 intervenciones) el 01/11/2007 16:48:50
Suponiendo q el asterisco aparece en pantalla...lo q puedes hacer es colocar el cursor en esa posicion y sobreescribes sobre el asterisco un espacio en blanco y para borrarlo del vector solo decrecemntas i y le asignas a clave[i] un espacio en blanco...

exito
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

RE:eliminar

Publicado por fernando.gomez (1603 intervenciones) el 01/11/2007 18:09:09
Esto no es algo que puedas lograr con C estándar. Lo mejor es meterte directamente al API de tu shell.

En el caso de Windows, existen las llamadas "Console Functions". Te paso el link para que le eches una revisada.

http://msdn2.microsoft.com/en-us/library/ms682073.aspx

Saludos.
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

RE:eliminar

Publicado por eduardo (82 intervenciones) el 02/11/2007 03:15:55
Creo que si es posible hacerlo recordemos que C tiene una secuencia para retroceder un espacio '\b' claro que para borrar el carater anterior hay que aplicarle un poquito de logica:
Veamos:

int main()
{
char tecla, clave[ 10 ];
int i = 0;

printf( " Ingrese clave: " );

while( ( tecla = getch() ) != '\r' ) {
if ( tecla == '\b' && i > 0 ) {
printf( "%c", '\b' ); /* retrocede espacio */
putchar( ' ' ); /* lo ponemos en blanco */
printf( "%c", '\b' ); /* y regresamos sobre el */
i--;
}
else {
clave[ i ] = tecla;
if ( clave[0] != '\b' ) {
i++;
putchar( '*' );
}
}
}
clave[ i ] = '\0'; /* Toda cadena debe terminar con nulo */

printf( "\n\n La clave es: %s\n", clave );

getch();
return 0;
}

Recuerda que getch() no es una función estandar pertenece a conio.h
en compiladores borland o el dev C++.
debe haber algo mas sencillo q esto pero es lo q se me ocurre por ahora
al menos la idea esta...

Salu2.
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

RE:eliminar

Publicado por fernando.gomez (1603 intervenciones) el 02/11/2007 09:14:19
:-O ciertamente existe el caracter de escape \b. Vaya, que wey que no se me ocurriera... en fin, y perdón por el cliché, todos los días se aprende algo nuevo :P.

Saludos.
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

RE:eliminar

Publicado por Alejandro Varela (4 intervenciones) el 02/11/2007 15:57:26
FUNCION ungetc() DE LA LIBRERIA ESTANDAR, REPITO:

ESTANDAR!!!
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