zetsubou_akatsuki Posted April 16, 2011 Report Share Posted April 16, 2011 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 More sharing options...
el_caxulo Posted April 16, 2011 Report Share Posted April 16, 2011 (edited) 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 April 16, 2011 by el_caxulo Link to comment Share on other sites More sharing options...
Th3_K4T Posted April 22, 2011 Report Share Posted April 22, 2011 atoi y itoa no son funciones standar en C, sprintf si lo es y es muy sencilla de usar, también fprintf, ya que permiten darle formato al texto. Yo de c++ n o se mucho pero en C me manejo y te recomiendo esas funciones. Link to comment Share on other sites More sharing options...
RigoPerdido Posted April 23, 2011 Report Share Posted April 23, 2011 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 More sharing options...
zetsubou_akatsuki Posted April 26, 2011 Author Report Share Posted April 26, 2011 vale loko me sirvio tu ayuda =9 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now