#include "stdafx.h" typedef struct ficha { int edad; float peso; char nombre[40]; } tficha; char genletra2() { return 'a' + rand() % 26; } void gen_tficha(tficha * ptficha) { ptficha->edad = rand() % 120; ptficha->peso = 1 + rand() % 300; int lon = rand() % 30, i; for (i = 0; inombre[i] = genletra2(); ptficha->nombre[i] = '\0'; } void fgrabar_tficha(tficha *origen, FILE*pf) { int sz = sizeof(tficha), i; char *f = (char*)origen; for (i = 0; iedad); printf("peso %g \n", ptficha->peso); puts(ptficha->nombre); } /*ejercicio realizado 26/02/2021: Grabar/recuperar al/desde archivo varios tipos de datos */ void main() { tficha q, q1; gen_tficha(&q); puts("tficha generada"); impr_tficha(&q); FILE *pf; char texto[80]; fopen_s(&pf, "datos", "w"); if (pf == NULL) { puts("no se pudo abrir archivo"); return; } fprintf(pf, "Hola archivo!!!\n"); float y = 3; fprintf(pf, "x= %lf, y=%f\n", 5., y); fgrabar_tficha(&q, pf); fclose(pf); // cerrar el archivo fopen_s(&pf, "datos", "r"); if (pf == NULL) { puts("no se pudo abrir archivo"); return; } fgets(texto, 80, pf); double e; float f; fscanf_s(pf, "x= %lf, y=%f\n", &e, &f); fleer_tficha(&q1, pf); fclose(pf); // cerrar el archivo puts("texto recuperado desde archivo:"); puts(texto); puts("dos valores recuperados desde archivo:"); printf("e=%g, f=%g\n", e, f); puts("tficha recuperada"); impr_tficha(&q1); return 0; }