elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Consulta sobre Structs y Archivos.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Consulta sobre Structs y Archivos.  (Leído 1,590 veces)
Arturo400

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Consulta sobre Structs y Archivos.
« en: 24 Septiembre 2016, 21:30 pm »

Hola

Tengo una duda. Tengo que cargar una estructura con ciertos datos y luego esos datos los tengo que pasar a un archivo txt o csv.
Esto es lo que tengo hasta ahora

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #define N 5
  5.  
  6. struct s_datos
  7. {
  8.    int doc;
  9.    char nombre[50];
  10.    char pais[50];
  11.  
  12. };
  13. typedef struct s_datos dato;
  14.  
  15. int CARGA(dato charge[N]);
  16. void CREACION(dato charge[N],int);
  17.  
  18. int main()
  19. {
  20.    int i=0,j=0;
  21.    dato charge[N];
  22.    i=CARGA(charge);
  23.    printf("\nEl valor de i es %d",i);
  24.    for (j=0;j<i;j++)
  25.    {
  26.        printf("\n%d",charge[j].doc);
  27.        printf("\n%s",charge[j].nombre);
  28.        printf("\n%s",charge[j].pais);
  29.    }
  30.    CREACION(charge,i);
  31.  
  32.  
  33.  
  34.  
  35.    return 0;
  36. }
  37.  
  38. int CARGA(dato charge[N])
  39. {
  40.   int i=0,j=0,e=0,k=0;
  41.   char letra='a';
  42.   charge[i].doc=4;
  43.   while (i<N)
  44.   {
  45.       printf("\nIngrese el numero de documento: ");
  46.       scanf("%d",&charge[i].doc);
  47.           if (charge[i].doc!=0)
  48.           {
  49.               printf("\nIngrese el nombre: ");
  50.  
  51.                   while(letra!='\r')
  52.                   {
  53.                      letra=getche();
  54.                      charge[i].nombre[j]=letra;
  55.                      j++;
  56.                   }
  57.                   charge[i].nombre[j]='\0';
  58.               j=0;
  59.               letra='a';
  60.  
  61.               printf("\nIngrese el pais: ");
  62.  
  63.                   while(letra!='\r')
  64.                   {
  65.                      letra=getche();
  66.                      charge[i].pais[e]=letra;
  67.                      e++;
  68.                   }
  69.                   charge[i].pais[e]='\0';
  70.                   e=0;
  71.               letra='a';
  72.               i++;
  73.           }
  74.       if(charge[i].doc==0)
  75.       {
  76.           return i;
  77.       }
  78.   }
  79.   return i;
  80.  
  81. }
  82.  
  83. void CREACION(dato charge[N],int i)
  84. {
  85.    FILE*arch;
  86.    arch=fopen("C:\\Users\\PC\\Desktop\\personas.txt","w");
  87.    char c='4';
  88.    int j=0;
  89.    while(!feof(arch))
  90.    {
  91.        if (j<i)
  92.        fprintf(arch,"%d",charge[j].doc);
  93.        fputc(c,arch);
  94.        if (c=='\n')
  95.        j++;
  96.  
  97.  
  98.  
  99.    }
  100.    fclose(arch);
  101.  
  102.  
  103.  
  104. }
  105.  


La carga la realiza de forma perfecta. El problema es cuando tengo que pasar esos datos a un archivo.
Ya que tengo 1 int y 2 char de string.

Para el dato que es el documento no tengo ningun problema ya que utilizo la siguiente sentencia y lo guarda en el txt

Código
  1. fprintf(arch,"%d",charge[j].doc);

El problema es con los otros 2 datos.
Nuestro profesor nos "obliga" por asi decirlo a usar fputc, entonces si yo pongo el fputc en el ciclo, solo estaria tomando una letra y yo quiero que tome letras hasta que encuentre un \n o un \0 pero nose como aplicarlo en el codigo.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines