PROGRAMACION EN C CON WINBGIM

Iniciado por anonime, 29 Agosto 2011, 12:22 PM

0 Miembros y 1 Visitante están viendo este tema.

anonime

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.




Karman

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

anonime

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

LearningSpanishProgrammer

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)
Estoy aprendiendo español, y tu estas aprendiendo programación

Karman

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