Linux下应用开发基础知识大总结( 二 )


• SEEK_SET: offset 是一个绝对位置 。
• SEEK_END: offset 是以文件尾为参考点的相对位置 。
• SEEK_CUR: offset 是以当前位置为参考点的相对位置 。
 
2、文件操作:C库函数(1)实操
代码:
/* 文件操作:c库函数 */#include <stdio.h>#include <stdlib.h>?int main(void){FILE *fp;          /* 文件描述符 */char rd_buf[50] = {0}; /* 读数据buf*//* 以读写的方式打开文件demo1_test,若文件不存在则创建文件 */fp = fopen("demo1_test", "w+");if (NULL == fp){printf("Open file error!n");return 0;}/* 往文件中写数据 */fwrite("hello worldn", 1, strlen("helllo worldn"), fp);/* 同步缓冲区:把缓冲区数据立即写入文件 */fflush(fp);/* 移动文件指针至文件开头 */fseek(fp, 0, SEEK_SET);/* 读出文件数据并打印 */fread(rd_buf, 50, 1, fp);printf("Read data: %sn", rd_buf);/* 关闭文件 */fclose(fp);return 0;}运行结果:

Linux下应用开发基础知识大总结

文章插图
 
(2)接口说明
fopen函数:
Linux下应用开发基础知识大总结

文章插图
 
• pathname 参数用于指定要打开或创建的文件名 。
• mode 参数用于指定文件的打开方式,注意该参数是一个字符串,输入时需要带双引号:
•“r”:以只读方式打开,文件指针位于文件的开头 。
•“r+”:以读和写的方式打开,文件指针位于文件的开头 。
•“w”:以写的方式打开,不管原文件是否有内容都把原内容清空掉,文件指针位于文件的开头 。
•“w+”:同上,不过当文件不存在时,前面的” w”模式会返回错误,而此处的” w+”则会创建新文件 。
•“a”:以追加内容的方式打开,若文件不存在会创建新文件,文件指针位于文件的末尾 。与” w+”的区 别是它不会清空原文件的内容而是追加 。
•“a+”:以读和追加的方式打开,其它同上 。
• fopen 的返回值是 FILE 类型的文件文件流,当它的值不为 NULL 时表示正常,后续的 fread、 fwrite 等函数可通过文件流访问对应的文件 。
fopen 的 mode 与 open 的 flags 参数关系:
Linux下应用开发基础知识大总结

文章插图
 
fread 函数:
Linux下应用开发基础知识大总结

文章插图
 
stream 是使用 fopen 打开的文件流, fread 通过它指定要访问的文件,它从该文件中读取 nmemb 项数据,每 项的大小为 size,读取到的数据会被存储在 ptr 指向的数组中 。fread 的返回值为成功读取的项数(项的单位 为 size) 。
fwrite 函数:
Linux下应用开发基础知识大总结

文章插图
 
它的操作与 fread 相反,把 ptr 数组中的内容写入到 stream 文件流,写入的项数为 nmemb,每项大小为size,返回值为成功写入的项数(项的单位为 size) 。
fclose 函数:
Linux下应用开发基础知识大总结

文章插图
 
fclose 库函数用于关闭指定的文件流,关闭时它会把尚未写到文件的内容都写出 。因为标准库会对数据进行缓冲,所以需要使用 fclose 来确保数据被写出 。
fflush 函数:
Linux下应用开发基础知识大总结

文章插图
 
fflush 函数用于把尚未写到文件的内容立即写出 。常用于确保前面操作的数据被写入到磁盘上 。fclose 函数本 身也包含了 fflush 的操作 。
fseek 函数:
Linux下应用开发基础知识大总结

文章插图
 
其中的 offset 参数用于指定位置, whence 参数则定义了 offset 的意义, whence 的可取值如下:
• SEEK_SET: offset 是一个绝对位置 。
• SEEK_END: offset 是以文件尾为参考点的相对位置 。
• SEEK_CUR: offset 是以当前位置为参考点的相对位置 。
以上就是本次的分享,如有错误,欢迎指出!




推荐阅读