Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/04/2015, 08:39
joelfs18
 
Fecha de Ingreso: abril-2015
Ubicación: Valparaíso
Mensajes: 2
Antigüedad: 9 años, 8 meses
Puntos: 0
Mi programa guarda basura al leer un archivo

Buenos días a todos, me dirijo a ustedes con este primer post para ver si me pueden ayudar en el siguiente problema:

He creado un código que guarda datos de un paciente en un arreglo de structs (por el momento, luego lo implementaré en listas y otros TDAs), pero cuando guardo los datos del paciente, no solamente guardo esos, sino también basura a continuación de cada dato (símbolos raros, letras raras, etc). He pensado en otras maneras de hacerlo, pero me urge saber por qué es que mi programa guarda basura. A continuación les dejo el código y una captura para que vean de lo que les hablo. De antemano, muchas gracias!

http://gyazo.com/0fcbc9f70700df76ec257becb46ac950

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. typedef struct datos
  5. {
  6.     char nombre[30];
  7.     char apellido[30];
  8.     char rut[30];
  9.     char anios[30];
  10.     int prio;
  11. }DATOS;
  12.  
  13. int main()
  14. {
  15.     DATOS X[4];
  16.     int i=0,j=0;
  17.     char car;
  18.  
  19.     FILE*in;
  20.     in=fopen("datos.txt","r");
  21.  
  22.     while(!feof(in))
  23.     {
  24.  
  25.         do
  26.         {
  27.             car=fgetc(in);
  28.             X[i].apellido[j]=car;
  29.             j++;
  30.         }
  31.         while(car!=',');
  32.  
  33.         X[i].apellido[j-1]="\0";
  34.         j=0;
  35.  
  36.         do
  37.         {
  38.             car=fgetc(in);
  39.             X[i].nombre[j]=car;
  40.             j++;
  41.         }
  42.         while(car!=',');
  43.  
  44.         X[i].nombre[j-1]="\0";
  45.         j=0;
  46.  
  47.         do
  48.         {
  49.             car=fgetc(in);
  50.             X[i].rut[j]=car;
  51.             j++;
  52.         }
  53.         while(car!=',');
  54.  
  55.         X[i].rut[j-1]="\0";
  56.         j=0;
  57.  
  58.         do
  59.         {
  60.             car=fgetc(in);
  61.             X[i].anios[j]=car;
  62.             j++;
  63.         }
  64.         while(car!='\n');
  65.  
  66.         X[i].anios[j-1]="\0";
  67.         j=0;
  68.  
  69.  
  70.         car=fgetc(in);
  71.         fscanf(in,"%d",&X[i].prio);
  72.         i++;
  73.     }
  74.  
  75.     for(i=0;i<4;i++)
  76.     {
  77.  
  78.             printf("\n%s",X[i].apellido);
  79.             printf("\n%s",X[i].nombre);
  80.             printf("\n%s",X[i].rut);
  81.             printf("\n%s",X[i].anios);
  82.             printf("\n%d",X[i].prio);
  83.     }
  84.  
  85.  
  86. return 0;
  87. }