Hola amigos, ya estoy hasta la corona con este programa, no se porque no me guarda bien los datos, les agradeceria mucho si me pueden decir porque funciona mal este código... llevo horas analizandolo y no se porque agrega mal
Código:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
typedef struct Arriendo {
int codigo_arriendo; //Código del arriendo
int codigo_auto; //Código del auto
char rut[10]; //Rut arrendatario
char fecha_arriendo[10]; //Fecha en la que se arrendo
char fecha_vencimiento[10]; //Fecha en la que vence el arriendo
char estado[7]; //Estado del arriendo
struct Arriendo *next;
}Arriendo;
struct Arriendo *CabezaArriendo;
void CrearArriendo(struct Arriendo **CabezaArriendo)
{
*CabezaArriendo = NULL;
}
int VaciaArriendo(struct Arriendo *CabezaArriendo)
{
if (CabezaArriendo == NULL)
return 1;
else
return 0;
}
main()
{
system("title Automotora (C) 1.0 - Power By El_Metallick");
system("color 3f");
CrearArriendo(&CabezaArriendo);
struct Arriendo *Anterior;
struct Arriendo *Siguiente;
struct Arriendo *Nuevo;
int cod;
char fve[10];
time_t tiempo;
char fecha[10];
struct tm *tmPtr;
printf("INSERCION DE ARRIENDOS\n");
printf("----------------------\n");
Nuevo = (Arriendo *)malloc(sizeof(Arriendo));
printf("\nEscriba el c%cdigo del Auto: ", 162);
scanf("%d", &cod);
printf("\nEscriba el rut del usuario (en formato XXXXXXXX-X y sin puntos (.)): ");
scanf("%s", Nuevo->rut);
printf("\nEscriba la fecha de vencimiento del arriendo (en formato aaaa/mm/dd): ");
scanf("%s", fve);
tiempo = time(NULL);
tmPtr = localtime(&tiempo);
strftime( fecha, 11, "%Y/%m/%d", tmPtr);
Nuevo->codigo_arriendo = 1;
Nuevo->codigo_auto = cod;
strcpy(Nuevo->fecha_arriendo,fecha);
strcpy(Nuevo->fecha_vencimiento,fve);
strcpy(Nuevo->estado,"Vigente");
if (VaciaArriendo(CabezaArriendo) || (strcmp(Nuevo->fecha_vencimiento,(CabezaArriendo)->fecha_vencimiento) < 0))
{
Nuevo->next = CabezaArriendo;
CabezaArriendo = Nuevo;
}
else
{
Anterior = CabezaArriendo;
Siguiente = Anterior->next;
while ((Siguiente != NULL) && (strcmp(Siguiente->fecha_vencimiento,Nuevo->fecha_vencimiento) <= 0))
{
Anterior = Siguiente;
Siguiente = Siguiente->next;
}
Anterior->next = Nuevo;
Nuevo->next = Siguiente;
}
printf("\nAl auto %d fue arrendado por %s hoy %s hasta %s satisfactoriamente.\n\n", Nuevo->codigo_auto, Nuevo->rut, Nuevo->fecha_arriendo, Nuevo->fecha_vencimiento);
getch();
}
Me sale esto:
Al auto 1 fue arrendado por 15148154-82006/09/122006/09/15Vigente hoy 2006/09/12
2006/09/15Vigente hasta 2006/09/15Vigente satisfactoriamente.
y me deveria salir esto:
Al auto 1 fue arrendado por 15148154-8 hoy 2006/09/12 hasta 2006/09/15 satisfactoriamente.
Saludos