IO读,写,定位,函数

标准io:

文件流:文件打开的标志,是结构体类型的指针,FILE *。

打开:FILE *fopen(const char *pathname, const char *mode);

成功返回FILE *型的指针, 失败返回NULL;

读取:

int fgetc(FILE *fp);

返回读取的字符。

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

成功返回字符串,失败返回NULL。

ssize_t getline(char **lineptr, size_t *n, FILE *stream);

成功返回读到的字符个数,包括换行符,不包括'\0'。

size_t fread(void *buf, size_t size, size_t nmemb, FILE *fp);

成功返回读到的字符个数。失败返回-1;读到最后EOF返回0。

写:

int fputc(int c, FILE *fp);

成功返回读到的字符,失败返回-1。

int putc(int c, FILE *fp);

成功返回读到的字符,失败返回-1。

int fwrite(void *buf, size_t size, size_t nmemb, FILE *stream);

成功返回写入的字符个数,失败返回-1,读到最后EOF返回0。

定位:

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

成功返回偏移的字节数。失败返回-1.

void rewind(FILE *fp);

相当于fseek(FILE *fp, 0L, SEEK_SET);

long ftell(FILE *fp);

成功返回文件偏移量,失败返回-1.

系统io:

文件描述符:fd,非负整型数,是文件io打开文件的标志,使用规则当前可用最小的作为新打开的文件描述符。

打开:

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

成功返回文件描述符, 失败返回-1。

读:

size_t read(int fd, char *buf, size_t count);

成功返回读到的字符个数,失败返回-1。

写:

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

成功返回写入的字符个数,失败返回-1。

文件偏移量:

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

成功返回文件偏移量, 失败返回-1。

关闭:

int close(int fd);

成功返回0,失败返回-1。

内核为打开的文件维护三张表:

进程表(包含文件描述符,指向文件表的指针),

文件表(pos代表偏移量,文件的打开方式,指向i_node结点表的指针)

i_node结点表(文件大小,文件权限,内核io操作函数的地址)。

errno是一个全局整形变量,默认为0,代表成功,errno会存储最近的一次错误,下一次的错误会覆盖上一次的错误。存储在errno.h中

errno > 0代表出错了,errno = 0代表没有错误。

几乎所有的系统调用和库函数都会设置errno, 看手册查找是否设置了errno。

void perror(const char *s);直接打印错误原因。

输出形式:const char *s:strerror(errno)

char *strerror(int errnum);   (errnum就是errno)

fptintf(stderr, "出错了:",stderror(errno));

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值