缓冲式I/O

#include <stdio.h>

int main(){
FILE* file;
char buf[1024], ch;

file = fopen("test", "r+");//打开文件

//设置缓存
setvbuf(file, buf, _IOFBF, sizeof(buf));

fgets(buf, sizeof(buf), file);//读取一整行
ch = fgetc(file);//读取单个字符
ungetc(ch, file);//把一个字符放回流中
fread(buf, 1, 5, file);//读取二进制数据
fwrite(buf, 1, 5, file);//写入二进制数据
fputc('g', file);//写入一个字符
fputs("ggzwtj", file);//写入一个字符串

//跳转之fseek
fseek(file, 0, SEEK_SET);
fgets(buf, sizeof(buf), file);
puts(buf);

//初始为开始位置
rewind(file);

//取得当前流的位置
printf("%ld\n", ftell(file));

//刷新一个流,保证内容写入内核
fflush(file);

//锁定(解锁,尝试锁)文件
flockfile(file);
ftrylockfile(file);
funlockfile(file);

//取得文件的描述符
printf("%d\n", fileno(file));

fcloseall();
return 0;
}

原文地址:https://www.cnblogs.com/ggzwtj/p/2205046.html