hola, queria hacer una consulta sobre hacer un programa de gestión con winbgim.
La cosa es que ya hice 2 juegos hace tiempo con esta libreria y stdio y stdlib, y no tube problemas pero no encuentro el código. Y no se si es que tengo alzeimer o que, pero tengo un problema con el flujo de entrada.
Para mostrar una cadena con winbgim es outtextxy(int,int,char); ok ?
y para guardar una cadena introducida por el usuario en una variable ? y luego
mostrar esa variable ?
Hay alguna funcion en winbgim para ello ?
por que si utilizo scanf(), o gets() se me cuelga.
si utilizo por ejemplo:
char x[20];
outtextxy(200,200,"introduce tu nombre: ");
x[]=getch(); // o getche o getchar o incluso strcpy(x,getch());
siempre se me cuelga, no encuentro la manera de introducir datos por usuario
y es algo vital para el programa que quiero hacer.
Bueno gracias de antemano y un saludo.
tu problema es al no definir el índice...
char x[20];
int i=0;
outtextxy(200,200,"introduce tu nombre: ");
for(;;){
char c=getch();
if(c==13)//enter
break;
x[i++]=c;
}
S2
Gracias por responder!
lo que no entiendo es que si outtextxy el tercercampo es para cadena...
Por que no me deja y se me cuelga haciendo esto por ejemplo:
char x[20];
gets(x); o scanf("%s",x);
outextxy(200,200,x);
??? >:D
Hola!
No entiendo, el único problema en su codigo es que el scanf no comproba el tamano del buffer. Si tu cadena es mayor que veinte enton lo programa debe alertar (crash)
Cita de: anonime en 2 Septiembre 2011, 01:00 AMlo que no entiendo es que si outtextxy el tercercampo es para cadena...
Por que no me deja y se me cuelga haciendo esto por ejemplo:
fijate un ejemplo que tengo de cuando usé esa librería:
//Obtener Números
gprintf(90, 220,"Ingrese número:");
do{
clearline(185,180);
t=getnum(185,180);
if(t<Xmin||t>Xmax)
showerror();
}while(t0<Xmin||t0>Xmax);
//.....
double getnum(int x,int y){
char tmp[256],*pt;
int val,inc=0;
double ret=0;
pt=tmp;*pt=0;
val=getch();
while(val!=13){
if(val>47&&val<58||val=='.'||(val=='-'&&!inc)){
*(pt++)=(char)val;
gprintf(x+inc,y,"%c",val);
inc+=10;
}
if(val==8){
if(pt!=tmp){
inc-=10;
gprintf(x+inc,y," ");
*(--pt)=0;
}
}
val=getch();
}
*pt=0;
if(sscanf(tmp,"%lf",&ret))
return ret;
}
S2