先决条件:C语言中的结构
对于写入文件,使用fprintf和putc可以很容易地将字符串或int写入文件,但是在写入struct的内容时可能会遇到困难。当您要写入和读取数据块时, fwrite和fread使任务变得更容易。
- fwrite:以下是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 program for writing // struct to file #include
#include #include // 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 opend 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; } 输出:
gcc demowrite.c ./a.out contents to file written successfully!
- fread:以下是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 program for reading // struct from a file #include
#include // 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; } 输出:
gcc demoread.c ./a.out id = 1 name = rohan sharma id = 2 name = mahendra dhoni
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。