Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/07/2011, 10:29
matroskita
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Problem con Strings

Hola, me llamo Juan y tengo un problema con una parte del codigo del programa que debo hacer para un trabajo de programacion de mi universidad que consiste en una terminal de omnibus, el mismo consiste en que cuando ingreso el dato fecha y luego ingreso el dato hora en una cola dinamica al imprimir los datos de la fecha me salen pegados con los de la hora pero los datos de la hora salen bien. Intente con fflush pero no me resulto.
No entiendo porque pasa eso, este codigo es una porcion del programa que funciona pero tiene ese problemita, busque mucho y no puedo descubrir en que estoy fallando.

Para mostrarles lo que pasa:
Ingreso la fecha y hora de arribo, luego fecha y hora de partida, pero al imprimir ocurre esto


Codigo:
Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <conio.h>
  5. #include <ctype.h>
  6. char op;
  7.    
  8.     struct tipo_nodo  //Cola Dinamica
  9.     {
  10.    
  11.        char fechaarribo[10];
  12.        char horaarribo[10];
  13.  
  14.        char fechapartida[10];
  15.        char horapartida[10];
  16.        struct tipo_nodo*puntero;
  17.     };
  18.     typedef struct tipo_nodo nodo;
  19.     typedef struct tipo_nodo*ps;
  20.     ps fon,fre,x,aux;
  21.  
  22.  
  23.  
  24. //GESTION DE ARRIBOS Y PARTIDAS
  25. //Validar Datos Recibir Coche (Validacion simple por ahora)
  26. int validarcoche(char feca[10],char hora[10],char fecp[10],char horp[10])
  27. {
  28.     int b=1;
  29.         if(strlen(feca)==10&&strlen(feca)!=0&&strlen(hora)<=10&&strlen(hora)!=0&&strlen(fecp)==10&&strlen(fecp)!=0&&strlen(horp)<=10&&strlen(horp)!=0)
  30.         {
  31.             b=0;
  32.         }  
  33. return b;
  34. }  
  35.  
  36. //Recibir Coche (Cola Dinamica)
  37. void recibircoche()
  38. {
  39.     clrscr();
  40.     char op;
  41.     int b=1;
  42.     char feca[10],hora[10],fecp[10],horp[10];
  43.  
  44.     printf("Ingrese todos los datos del coche\n");
  45.    
  46.     printf("Ingrese la Fecha de Arribo en el formato AAAA/MM/DD:\n");
  47.     gets(feca);
  48.     fflush(stdin);
  49.     printf("Ingrese la Hora de Arribo en el formato HH:MM:SS:\n");
  50.     gets(hora);
  51.     fflush(stdin);
  52.  
  53.     printf("Ingrese la Fecha de Partida en el formato AAAA/MM/DD:\n");
  54.     gets(fecp);
  55.     fflush(stdin);
  56.     printf("Ingrese la Hora de Partida en el formato HH:MM:SS:\n");
  57.     gets(horp);
  58.     fflush(stdin);
  59.     b=validarcoche(feca,hora,fecp,horp);
  60.    
  61.     if(b==0)  //Si estan bien ingresados los datos los carga en la cola dinamica
  62.     {
  63.         x=(ps) malloc (sizeof(nodo));
  64.    
  65.         strcpy(x->fechaarribo,feca);
  66.         strcpy(x->horaarribo,hora);
  67.         strcpy(x->fechapartida,fecp);
  68.         strcpy(x->horapartida,horp);
  69.         clrscr();
  70.  
  71.         x->puntero=NULL;
  72.         if(fon==NULL)
  73.         {
  74.             fre=x;
  75.             fon=x;
  76.         }
  77.         else
  78.         {
  79.             fon->puntero=x;
  80.             fon=x;
  81.         }
  82.         printf("Los Datos fueron guardados correctamente.\n\n");
  83.     }
  84.     else
  85.     {
  86.         printf("Datos mal ingresados.\n\n");
  87.     }
  88.    
  89.    
  90.    
  91.     printf("\n\nPresione X para volver al Menu Principal.");
  92.     do
  93.     {
  94.         gotoxy(1,1);
  95.         op=toupper(getch());
  96.     }
  97.     while(op!='X');
  98. }
  99.  
  100. //IMPRESION DE PRUEBA
  101. void impprueba()
  102. {
  103.     clrscr();
  104.     char op;
  105.     while(fre!=NULL)
  106.     {
  107.         printf("Fecha de Arribo en el formato AAAA/MM/DD: %s\n",fre->fechaarribo);
  108.         printf("Hora de Arribo en el formato HH:MM:SS: %s\n",fre->horaarribo);
  109.         printf("Fecha de Partida en el formato AAAA/MM/DD: %s\n",fre->fechapartida);
  110.         printf("Hora de Partida en el formato HH:MM:SS: %s\n",fre->horapartida);
  111.    
  112.         aux=fre;
  113.         fre=fre->puntero;
  114.         free(aux);
  115.         if(fre==NULL)
  116.         {
  117.             fon=fre;
  118.         }
  119.     }
  120.            
  121.     printf("\n\nPresione X para volver al Menu Principal.");
  122.     do
  123.     {
  124.         gotoxy(1,1);
  125.         op=toupper(getch());
  126.     }
  127.     while(op!='X');
  128. }
  129.  
  130.  
  131. //PROGRAMA PRINCIPAL - Menu Principal
  132. int main()
  133. {
  134.     fon=NULL; fre=NULL;
  135.     do
  136.     {
  137.       printf  ("********************************************************************************");
  138.       printf  ("*                             MENU PRINCIPAL                                   *");
  139.       printf  ("*            **********************************************                    *");
  140.       printf  ("*                                                                              *");  
  141.       printf  ("*                                                                              *");
  142.       printf  ("*                                                                              *");
  143.       printf  ("*                                                                              *");
  144.       printf  ("*                                                                              *");  
  145.       printf  ("*             1.* ARRIBOS Y PARTIDAS                                           *");
  146.       printf  ("*                 A.*Recibir Coche                                             *");
  147.       printf  ("*                 B.*Impresion de prueba                                       *");
  148.       printf  ("*                                                                              *");
  149.       printf  ("*                                                                              *");  
  150.       printf  ("*                                                                              *");
  151.       printf  ("*                                                                              *");
  152.       printf  ("*                                                                              *");
  153.       printf  ("*                                                                              *");
  154.       printf  ("*                                                                              *");  
  155.       printf  ("*                                                                              *");
  156.       printf  ("*                                                                              *");
  157.       printf  ("*                                                                              *");
  158.       printf  ("*                                                                              *");
  159.       printf  ("*                                                                              *");
  160.       printf  ("*             X.* SALIR                                                        *");  
  161.       printf  ("********************************************************************************");
  162.       gotoxy(1,1);
  163.      
  164.     op=toupper(getch());
  165.     switch (op)
  166.     {
  167.         case 'A':
  168.             recibircoche();
  169.             clrscr();
  170.         break;
  171.  
  172.         case 'B':
  173.             impprueba();
  174.             clrscr();
  175.         break;
  176. }
  177. }
  178. while (op!='X');
  179. clrscr();
  180. return 0;
  181. }

Lo hice en devc++, lo probe en borland tambien y me pasa lo mismo.
Parece simple de arreglar pero no puedo yo, gracias y saludos.