基础 IO
标准库 io 接口(fopen、fclose、fwrite、fread、fseek)
PS:标准库IO接口的操作句柄是:FILE*(文件流指针)
filename - - - 这是 C 字符串,包含了要打开的文件名称。
mode- - - 这是 C 字符串,包含了文件访问模式。
1、访问模式是 a 系列时,写入的时候总是写到文件末尾,写入时不受 fseek 的影响,但fseek 可以影响 a+ 读的位置。
2、访问模式是 w 系列时,会清空原有内容,读写文件时默认在文件起始位置。读写位置都受 fseek 的影响。
3、访问模式是 r 系列时,读写文件时默认在文件起始位置,会覆盖写入数据。读写位置都受 fseek 的影响。
fp- - - 文件流指针
ptr - - - 这是指向要被写入的元素数组的指针。
size - - - 这是要被写入的每个元素的大小,以字节为单位。
nmemb - - 这是元素的个数,每个元素的大小为 size 字节。
stream - - 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。
返回值:成功,返回写入的块个数而不是数据长度,也就是返回 nmemb的值。失败,返回 0.
ptr - - - 接收数据的地址,即数据保存的地址
size - - - 这是要被读出的每个元素的大小,以字节为单位。
nmemb - - 这是要被读出元素的个数,每个元素的大小为 size 字节。
stream - - 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。
返回值:成功,返回读出的块个数而不是数据长度,也就是返回 nmemb的值。失败,返回 0.
stream - - - 指向FILE 对象的指针。
offset - - - 偏移量。
whence - - - 偏移起始位置,可能取值为:SEEK_SET(起始位置)、SEEK_CUR(当前位置)、 SEEK_END(文件末尾)
返回值:成功返回 0
- 举例实现标准库IO写读文件
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
int main()
{
FILE* fp = fopen("./tmp.txt","w+");
if(fp == NULL)
{
perror("fopen error");
return -1;
}
int ret;
char* ptr = "wzf\n";
ret = fwrite(ptr,strlen(ptr),1,fp);
printf("fwrite return value:%d\n",ret);
fseek(fp,0,SEEK_SET);
char buf[1024]={
0};
ret = fread(buf,strlen(ptr),1,fp);
printf("read buf:[%s]-fread return value:[%d]\n",buf,ret);
fclose(fp)</