Requisito previo: Estructura en C
Para escribir en un archivo, es fácil escribir una string o un int en el archivo usando fprintf y putc , pero es posible que haya tenido dificultades al escribir el contenido de la estructura. fwrite y fread facilitan la tarea cuando desea escribir y leer bloques de datos.
- fwrite : La siguiente es la declaración de la función fwrite
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) ptr - This is pointer to array of elements to be written size - This is the size in bytes of each element to be written nmemb - This is the number of elements, each one with a size of size bytes stream - This is the pointer to a FILE object that specifies an output stream
C
// C program for writing // struct to file #include <stdio.h> #include <stdlib.h> #include <string.h> // a struct to read and write struct person { int id; char fname[20]; char lname[20]; }; int main () { FILE *outfile; // open file for writing outfile = fopen ("person.dat", "w"); if (outfile == NULL) { fprintf(stderr, "\nError opened file\n"); exit (1); } struct person input1 = {1, "rohan", "sharma"}; struct person input2 = {2, "mahendra", "dhoni"}; // write struct to file fwrite (&input1, sizeof(struct person), 1, outfile); fwrite (&input2, sizeof(struct person), 1, outfile); if(fwrite != 0) printf("contents to file written successfully !\n"); else printf("error writing file !\n"); // close file fclose (outfile); return 0; }
Producción:
gcc demowrite.c ./a.out contents to file written successfully!
- fread : A continuación se muestra la declaración de la función fread
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) ptr - This is the pointer to a block of memory with a minimum size of size*nmemb bytes. size - This is the size in bytes of each element to be read. nmemb - This is the number of elements, each one with a size of size bytes. stream - This is the pointer to a FILE object that specifies an input stream.
C
// C program for reading // struct from a file #include <stdio.h> #include <stdlib.h> // struct person with 3 fields struct person { int id; char fname[20]; char lname[20]; }; // Driver program int main () { FILE *infile; struct person input; // Open person.dat for reading infile = fopen ("person.dat", "r"); if (infile == NULL) { fprintf(stderr, "\nError opening file\n"); exit (1); } // read file contents till end of file while(fread(&input, sizeof(struct person), 1, infile)) printf ("id = %d name = %s %s\n", input.id, input.fname, input.lname); // close file fclose (infile); return 0; }
Producción:
gcc demoread.c ./a.out id = 1 name = rohan sharma id = 2 name = mahendra dhoni
Este artículo es una contribución de Mandeep Singh . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA