Ayuda con estructuras

Iniciado por eltoffer, 5 Febrero 2011, 01:33 AM

0 Miembros y 2 Visitantes están viendo este tema.

leogtz

Bueno, echenle la culpa a que tuve que quitarle los tags en su código y a que tengo los dedos entumidos al estar a -12°.  :silbar:
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

eltoffer

bueno lo que bice (no se si sea correcto) le puse un getchar despues de los gets y solo asi me respeta el pedir los datos y ya funciona bien el bucle, tambien tenia mal las llaves

asi quedo a ver si estoy bien o mal
#include<stdio.h>
#include<conio.h>

struct cliente {
char rfc[15];
char nom [30];
char dir[60];
char tel[11];
       };
struct cliente c1;

struct maquinaria {
int num_maq;
char mod[15];
char desc [60];
char fecha_com [15];
char tipo[15];
  };
struct maquinaria m1;

struct renta {
int num_rent;
char fecha_rent[15];
char period[20];
char rfc [15];
int num_maq;
float total_rent;
     };
struct renta r1;

int opt,opt2;

int main()
{
do
{
clrscr();
printf("Bienvenido al sistema de registro\n\n");
printf("1.- Manejo de datos del cliente\n2.- Manejo de datos de la maquinaria\n3.- Control de rentas\n4.- Salida\n\nOpcion: ");
scanf("%d",&opt);
switch(opt)
case 1:
{
do
{
clrscr();
printf("MANEJO DE DATOS DEL CLIENTE\n\n");
printf("1.- Altas de clientes\n2.- Bajas de clientes\n3.- Cambio de datos de clientes\n4.- Consulta de todo los clientes\n5.- Regresar al menu principal\n\nOpcion:  ");
scanf("%d",&opt2);
switch(opt2)
{
                case 1:
{
                  clrscr();
printf("ALTA DE CLIENTES\n\n");
printf("RFC del cliente: ");
gets(c1.rfc);
                     getchar();
printf("Nombre del cliente: ");
gets(c1.nom);
                     getchar();
printf("Direccion: ");
gets(c1.dir);
                     getchar();
printf("Telefono: ");
gets(c1.tel);
                     getchar();
                   break;
                  }
                  case 2:
{
                  clrscr();
printf("BAJA DE CLIENTES\n\n");
                     getch();
                  break;
                  }
                  case 3:
{
                  clrscr();
printf("CAMBIO DE DATOS DE CLIENTES\n\n");
                  break;
                  }
                  case 4:
{
                  clrscr();
printf("CONSULTA DE TODOS LOS CLIENTES\n\n");
                   break;
                  }
                  defalut:
                  break;
               }
            }
while(opt2 != 5);
break;
         }
   }
while (opt != 4);
}

Garfield07

Pero es que no has leido mi post o que?

Cita de: Sagrini en  5 Febrero 2011, 15:50 PM
Gets es de uso no recomendado:

fgets (buffer, 1024, stdin);

Vamos a ver, usando gets puedo causar un desbordamiento de BoF en segundos... Al compilar gcc te dice que es inseguro. Que?


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

eltoffer

Cita de: Sagrini en  5 Febrero 2011, 22:53 PM
Pero es que no has leido mi post o que?

Cita de: Sagrini en  5 Febrero 2011, 15:50 PM
Gets es de uso no recomendado:

fgets (buffer, 1024, stdin);

Vamos a ver, usando gets puedo causar un desbordamiento de BoF en segundos... Al compilar gcc te dice que es inseguro. Que?

Disculpa pero no conozco esa instruccion, como decia estoy comenzando en esto de programacion y no se como y donde usar esa opcion, mi logica me indica que seria en lugar del gets pero lo que esta entre parentecis no entiendo, gracias

eltoffer

#14
bueno gracias a lo que puso leo guitierrez pude quitar los getchar() sustituyendolo por la instruccion while(getchar() != '\n'); y ya quedo ya solo me falta establecer las matrices para poder almacenar los datos

Pero podrian explicarme porque tenog que poner esa instrucicon y CUANDO ponerla, me gustaria comprender eso, siempre he tenido porblemas con eso del getch y sus variantes, gracias

Garfield07

Cita de: eltoffer en  5 Febrero 2011, 23:42 PM
Disculpa pero no conozco esa instruccion, como decia estoy comenzando en esto de programacion y no se como y donde usar esa opcion, mi logica me indica que seria en lugar del gets pero lo que esta entre parentecis no entiendo, gracias
Fgets (variable, tam variable, stdin)
Stdin lo puedes cambiar por un file, pero para pantalla stdin...
Suerte!


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo