本文共 2788 字,大约阅读时间需要 9 分钟。
在计算机编程中,open和fopen是两种常用的文件操作函数,具有各自的特点和应用场景。本节将从来源、移植性、适用范围、文件IO层次以及缓冲机制等方面对它们进行比较分析。
FILE *fopen(const char *pathname, const char *mode);
pathname
:文件路径。mode
:文件操作模式,如“r”读取,“w”写入,“w+”读写。size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
ptr
:缓冲区指针。size
:数据块大小。nmemb
:数据块数量。stream
:文件指针。int fseek(FILE *stream, long offset, int whence);
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
int fclose(FILE *stream);
以下示例展示了如何使用上述函数进行文件操作:
#include#include int main() { FILE *fp; char *str = "luoxianyi hen shuai"; char readBuf[128] = {0}; // 打开文件(读写模式) fp = fopen("./file2", "w+"); // 写入文件 size_t nwrite = fwrite(str, sizeof(char), strlen(str), fp); // 移动文件指针至开头 fseek(fp, 0, SEEK_SET); // 读取文件内容 size_t nread = fread(readBuf, sizeof(char), strlen(str), fp); printf("读的内容是:%s\n", readBuf); printf("read = %d, write = %d\n", nread, nwrite); // 关闭文件 fclose(fp); return 0;}
运行上述代码后,输出结果如下:
读的内容是:luoxianyi hen shuairead = 128, write = 128
以下示例展示了如何将结构体写入文件:
#include#include struct test { int a; char c;};int main() { FILE *fp; struct test data = {100, 'a'}; struct test data2; // 打开文件(读写模式) fp = fopen("./file2", "w+"); // 写入结构体数据 int nwrite = fwrite(&data, sizeof(struct test), 1, fp); // 移动文件指针至开头 fseek(fp, 0, SEEK_SET); // 读取结构体数据 int nread = fread(&data2, sizeof(struct test), 1, fp); printf("读的内容是:%d, %c\n", data2.a, data2.c); printf("read = %d, write = %d\n", nread, nwrite); fclose(fp); return 0;}
运行上述代码后,输出结果如下:
读的内容是:100, aread = 8, write = 8
#include#include int main() { FILE *fp; fp = fopen("./file3", "w+"); // 写入一个字符 fputc('a', fp); fclose(fp); return 0;}
#include#include int main() { FILE *fp; char c; fp = fopen("./file4", "r"); while (!feof(fp)) { c = fgetc(fp); printf("%c", c); } fclose(fp); return 0;}
运行上述代码后,输出结果如下:
a读的内容是:a
在Linux系统中,所有资源都以文件形式存在,包括文件、目录、硬件设备、网络套接字、数据库等。通过合理使用文件操作函数,我们可以高效地进行文件读写、结构体存储和数据处理等操作。
转载地址:http://fzmx.baihongyu.com/