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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define N 5
struct s_datos
{
int doc;
char nombre[50];
char pais[50];
};
typedef struct s_datos dato;
int CARGA(dato charge[N]);
void CREACION(dato charge[N],int);
int main()
{
int i=0,j=0;
dato charge[N];
i=CARGA(charge);
printf("\nEl valor de i es %d",i);
for (j=0;j<i;j++)
{
printf("\n%d",charge[j].doc);
printf("\n%s",charge[j].nombre);
printf("\n%s",charge[j].pais);
}
CREACION(charge,i);
return 0;
}
int CARGA(dato charge[N])
{
int i=0,j=0,e=0,k=0;
char letra='a';
charge[i].doc=4;
while (i<N)
{
printf("\nIngrese el numero de documento: ");
scanf("%d",&charge[i].doc);
if (charge[i].doc!=0)
{
printf("\nIngrese el nombre: ");
while(letra!='\r')
{
letra=getche();
charge[i].nombre[j]=letra;
j++;
}
charge[i].nombre[j]='\0';
j=0;
letra='a';
printf("\nIngrese el pais: ");
while(letra!='\r')
{
letra=getche();
charge[i].pais[e]=letra;
e++;
}
charge[i].pais[e]='\0';
e=0;
letra='a';
i++;
}
if(charge[i].doc==0)
{
return i;
}
}
return i;
}
void CREACION(dato charge[N],int i)
{
FILE*arch;
arch=fopen("C:\\Users\\PC\\Desktop\\personas.txt","w");
char c='4';
int j=0;
while(!feof(arch))
{
if (j<i)
fprintf(arch,"%d",charge[j].doc);
fputc(c,arch);
if (c=='\n')
j++;
}
fclose(arch);
}
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
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.