文件的输入/输出操作

基于文件描述符的I/O操作

文件的打开和关闭

1.open函数

#include<sys/types.h>

#include<sys/stat.h>

#include<fcntl.h>

int open(const char* pathname , int flags);

int open(const char* pathname , int flags , mode_t mode);

int create(const char* pathname , mode_t mode);

成功返回文件描述符,否则返回-1,并设置errno。

flags:

文件打开方式的宏定义含义
O_RDONLY以只读方式打开文件
O_WRONLY以只写方式打开文件
O_RDWR以读写方式打开文件
O_CREAT若所打开文件不存在,则创建该文件
O_EXCL如果打开文件时设置了O_CREAT,但是该文件存在,则导致调用失败
O_NOCTTY如果打开tty时,进程没有控制tty,则不控制终端
O_TRUNC如果以只写或只读方式打开一个已存在的文件时,将该文件截至0
O_APPEND以追加的方式打开文件
O_NONBLOCK用于非堵塞套接口I/O,若操作不能无延迟地完成,则在操作前返回
O_NODELAY用于非堵塞套接口I/O,若操作不能无延迟地完成
O_SYNC当数据被写入外存或者其他设备之后,操作才返回

 

2.close()函数

#include<unistd.h>

int close(int fd);

文件的读写

1.read()函数

#include<unistd.h>

ssize_t read(int fd , void* buf , size_t count);

2.write()函数

#include<unistd.h>

ssize_t write(int fd , const void* buf , size_t count);

文件的定位

#include<sys/types.h>

#include<unistd.h>

off_t lseek(int fildes , off_t offset , int whence);

 

基于数据流的I/O操作

文件的打开和关闭

1.fopen()函数

#include<stdio.h>

FILE* fopen(const char* path , const char* mode);

 

2.fclose()函数
 

#include<stdio.h>

int fclose(FILE* fp);

字符输入/输出

1.fgetc()函数

#include<stdio.h>

int fgetc(FILE* stream);

 

 

直接用char类型来接收

2.fputc()函数

#include<stdio.h>

int fputc(int c , FILE* stream);

直接用char类型发送

字符串输入/输出

1.fgets()函数

#include<stdio.h>

char* fgets(char* s , int size , FILE* stream);

 

2.fputs()函数

#include<stdio.h>

int fputs(const char* s , FILE* stream);

 数据块输入/输出

#include<stdio.h>

size_t fread(void* ptr , size_t size , size_t nmemb , FILE* stream);

size_t fwrite(const void* ptr , size_t size , size_t nmemb , FILE* stream);

处理数组时用到

格式化输入/输出

1.格式化输出函数

#include<stdio.h>

int printf(const char* fomat , ...);

int fprintf(FILE* stream , const char* format , ...);

int sprintf(char* str , const char* format , ...);

 int snprintf(char* str , size_t size . const char *format , ...);

2.格式化输入函数

#include<stdio.h>

int scanf(const char* format , ...);

int fscanf(FILE* stream , const char* format , ...);

int sscanf(const char* str , const char* format , ...);

操作读写位置的函数

#include<stdio.h>

int fseek(FILE* stream , long offset , int whence);

long ftell(FILE* stream);

void rewind(FILE* stream);

1.fseek()函数

 

offset不加L就是字节

2.ftell()函数

3.rewind()函数

C标准库的I/O缓冲区

1.设置缓冲区属性

 #include<stdio.h>

void setbuf(FILE* stream , char* buf);

void setbuffer(FILE* stream , char* buf , size_t size);

void setlinebuf(FILE* stream);

int setvbuf(FILE* stream , char* buf , int mode , size_t size);

对于setbuf第二个参数来说:

 就是要指定一个char buf[BUFSIZ]给setbuf

 

2.清空缓冲区

#include<stdio.h>

int fflush(FILE* stream);

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值