Jump to content

Ficheros , numeros enteros


Recommended Posts

hola gente , bueno tengo un problema con un programa en c++ cuando intento guardar los datos de un struct en un archivo de texto , los datos enteros me aparecen en dicho archivo con simbolos raros y no se por que ...

 

void crear(){

 

 

FILE *e;

e=fopen("empleados.txt","w");

printf("Ingrese Nombre :");

fflush(stdin);

fgets(em.nombre,10,stdin);

clrscr();

printf("Ingrese Apellido :");

fflush(stdin);

fgets(em.apellido,15,stdin);

clrscr();

printf("ingrese Sueldo :");

fflush(stdin);

scanf("%d",&em.sueldo);

clrscr();

printf("Ingrese Cargas Familiares :");

fflush(stdin);

scanf("%d",&em.cargas);

clrscr();

printf("Ingrese Seguro de salud= Fonasa /Isapre :");

fflush(stdin);

fgets(em.seguro,7,stdin);

clrscr();

printf("Ingrese AFP :");

fflush(stdin);

fgets(em.afp,10,stdin);

clrscr();

fflush(stdin);

fwrite(&em, sizeof(struct empleado),1,e);

 

 

 

 

 

 

 

 

 

}

 

 

bueno esa es una parte del programa(la k me trae porblemas, como lo dije anteriormente ,al guardar un numero , el archivo los guarda con unos caracteres extraños , por favor si alguien sabe como solucionar esto se lo agradecere enternamente bueno eso saludo

 

 

 

Link to comment
Share on other sites

lo mas probable es que este pasando el numero a su respectivo caracter( revizar tabla ascii ).

 

guarda el numero como char con itoa o atoi, no recuerdo :P y utiliza la funcion fputc o fputs para escribir en el archivo.

Edited by el_caxulo
Link to comment
Share on other sites

obviamente si escribes la estructura al archivo usando fwrite, al abrir el archivo no veras los datos con su respectiva representación en caracteres.

 

Si lo que quieres es escribir datos en un archivo de texto plano deberás usar fprintf por cada miembro de la estructura, caso contrario, si es en un archivo binario, usas fwrite.

 

#include <stdio.h>

typedef struct empleado
{
    char nombre[11];
    char apellido[16];
    int sueldo;
    int cargas;
    char seguro[8];
    char afp[11];
} emp_s;

int main(int argc,char* argv[])
{
    emp_s em;
    FILE *e;
    e=fopen("empleados.txt","w");
    printf("Ingrese Nombre :");
    fflush(stdin);
    gets(em.nombre);
    printf("Ingrese Apellido :");
    fflush(stdin);
    gets(em.apellido);
    printf("ingrese Sueldo :");
    fflush(stdin);
    scanf("%d",&em.sueldo);
    printf("Ingrese Cargas Familiares :");
    fflush(stdin);
    scanf("%d",&em.cargas);
    printf("Ingrese Seguro de salud= Fonasa /Isapre :");
    fflush(stdin);
    gets(em.seguro);
    printf("Ingrese AFP :");
    fflush(stdin);
    gets(em.afp);
    fflush(stdin);
    /*fwrite(&em, sizeof(struct empleado),1,e);*/
    fprintf(e,"(%s)(%s)(%d)(%d)(%s)(%s)\n",em.nombre,em.apellido,em.sueldo,em.cargas,em.seguro,em.afp);
    fclose(e);
}

 

Y si usas un ofstream de C++:

    std::ofstream os;
    os.open("texto.txt",std::ios::trunc);
    os<<em.nombre<<", "<<em.apellido<<", "<<em.sueldo<<", "<<em.cargas<<", "<<em.seguro<<", "<<em.afp<<std::endl;
    os.close();

 

Saludos. ;)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...