Foros del Web » Programación para mayores de 30 ;) » Programación General »

entrada de datos en C

Estas en el tema de entrada de datos en C en el foro de Programación General en Foros del Web. Hola a tod@s Estoy haciendo una práctica en C para el instituto. Trata de mejorar el cmd de windows con algunas funcionalidades que tiene el ...
  #1 (permalink)  
Antiguo 30/11/2003, 18:39
Avatar de josgalo  
Fecha de Ingreso: noviembre-2003
Ubicación: conmigo mismo
Mensajes: 31
Antigüedad: 20 años, 5 meses
Puntos: 0
entrada de datos en C

Hola a tod@s

Estoy haciendo una práctica en C para el instituto. Trata de mejorar el cmd de windows con algunas funcionalidades que tiene el shell de linux. Para mi es complicadísimo aunque algo he conseguido; pero el caso es que una función del programa no hace lo que quiero (mejor dicho no sé cómo hacerlo ) . Utilizando _getche() y un vector que recogerá los caracteres me gustaría poder borrarlos y sobreescribirlos si hiciera falta. Lo que me he hecho borra y sobreescribre todo menos el elemento 0 y lo que imprime por pantalla tampoco sé como borrarlo.
Os copio el código:
Cita:
#include <stdio.h>
#include <conio.h>

void main()
{
int i=0, f=0;
char car;
char frase[100];
do {
car=_getche();
if (car==8 && i!=0) frase[i-1]=NULL; //para borrar pero no consigo que borre
else if (car==8 && i==0) frase[0]=NULL; //el elemento [0]
if (car!=13) frase[i]=car;
else frase[i]='\0'; //si pulsa ENTER
i++;
}
while (car!=13);
//if (frase[0]=='\0') //frase[0]=NULL; //printf("Hay solo un enter\n");
printf("\n\n");
for (f=0; f<i-1; f++)
printf("%d\n", frase[f]); //muestra el valor decimal del carácter introducido
printf("%s\n", frase);
}

Ah, también me sería de ayuda saber el valor decimal de la tecla Ins, no lo encuentro en la tabla ASCII.

Gracias por la ayuda que me podais dar.

P.D: Tendría que a ver ido más a clase
__________________
"La vida es muy peligrosa. No por las personas que hacen el mal,
sino por las que se sientan a ver lo que pasa."

Albert Einstein
  #2 (permalink)  
Antiguo 08/12/2003, 08:13
Flaviog
Invitado
 
Mensajes: n/a
Puntos:
Mensaje ayuda

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

void main() {
int i=0, j, k=0, f=0, ins=0, x=wherex(), y=wherey();
char car, t;
char frase[80];
do {
car = getch();
if (car) {
switch (car) {
case 8: putch(car);putch(' '); gotoxy(--x,y);
if (i) frase[--i] = NULL;
else frase[0] = NULL;
break;
case 13: frase[k] = '\0'; break;
default:
if (ins) frase[i] = car;
else {
if (i == k) frase[k] = car;
else
for (j=i; j<k; j++) {
t = frase[j];
frase[j] = car;
putch(car);
car = t;
}
putch(car); k++;
}
i++; x++;
}
}
else{
car = getch();
switch (car) {
case 75: if (i > 0) {x--; i--;} break;
case 77: x++; break; //chequear maximo!
case 82: ins = ins?0:1; break;//cambiar cursor
}
gotoxy(x,y);
}
}while (car != 13);
//if (frase[0]=='\0') //frase[0]=NULL; //printf("Hay solo un enter\n");
printf("\n\n");
for (f=0; f<k-1; f++)
printf("%d\n", frase[f]); //muestra el valor decimal del car¡cter introducido
printf("%s\n", frase);
}

Espero q sea lo q querias. si no,escribeme.a mi me interesa bastante.lo q pasa q tengo poco tiempo,y no siempre estoy en internet.
suerte!
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 05:01.