您的位置:首页 > 编程语言

高级编程之文件I/O(一)

2016-01-22 13:54 330 查看
Linux操作系统当中IO都是对文件的操作

1.标准IO

一般都是对普通文件操作

是一种有缓存的IO

2.文件IO

一般都是对设备文件操作

是一种没有缓存的IO

标准IO:

stdio.h

Dennis Ritchie

printf scanf getchar putchar gets puts

getc putc fgets fputs fread fwrite ftell

rewind fseek

缓存的分类:

1.全缓存:缓存区满刷新缓存区 4096

对普通文件进行标准IO操作,建立

的缓存一般为全缓存

刷新条件:

1.缓存区满刷新

2.程序结束刷新

3.fflush来刷新

2.行缓存:缓存区满或者遇到\n刷新 1024

行缓存多是关于终端的一些操作

1.遇到\n刷新

2.缓存区满刷新

3.程序结束刷新

4.fflush刷新

3.不缓存:不对数据缓存直接刷新

界面交互 出错处理

流:

数据从文件当中流入和流出所体现出来的字节

流叫做流

流的分类:

二进制流: 2001

二进制数据的流

文本流:

ASCII码数据的流

函数原型:

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

功能:打开文件获得一个文件流指针

参数:

path:要打开文件的路径

mode:

r 只读

文件存在则只读打开 不存在则报错

r+ 读写

文件存在则读写打开 不存在则报错

w 只写

文件不存在则创建 存在则清0

w+ 写读

文件不存在则创建 存在则清0

a 追加

文件不存在则创建 存在则追加打开

a+ 追加可写

文件不存在则创建 存在则追加打开

返回值:成功返回文件流指针

失败返回NULL

2.fputc(int c, FILE *stream);

功能:向流中写入一个字符

参数:

c:要写入的字符

stream:文件流指针

返回值:

成功返回输入字符的ASCII码

失败返回EOF

3.int fgetc(FILE *stream);

功能:

从流中读取一个字符

参数:

stream:文件流指针

返回值:

成功读到字符的ASCII码

失败或者读到文件的结尾返回EOF

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

功能:从流中读到一行数据

参数:

s:存储数据空间的首地址

size:从流中读取数据的大小

stream:文件流指针

返回值:

成功返回数据空间的首地址

出错或者读到文件结尾返回NULL

gets和fgets的区别:

1.gets是危险的,因为没有规范读

到数据的上限

2.gets会去掉从终端读入的\n字符

3.fgets会读到n个数据,如果n个

数据中存在\n字符则立即停止当

前的读取操作

4.fgets不会去掉从流中读到的\n字



5.fgets(buff, 32, stdin);

gets(buff);

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

功能:

将s指向的字符串输入到流中

参数:

s:字符串的首地址

stream:文件流指针

返回值:

成功返回非负数

失败返回EOF

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

功能:

向流中写入nmemb个对象,每个对象

都是由ptr指向的size个大小的数据

参数:

ptr:操作数据对象的首地址

size:数据对象的大小

nmemb:数据对象的个数

strem:文件流指针

返回值:

成功返回实际写入对象的个数

失败返回很小的数0

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

功能:

从流中读取n个对象,每个对象size个大小

存放在ptr指向的空间中

参数:

ptr:要存放数据空间的首地址

size:数据的大小

nmemeb:数据的个数

stream:文件流指针

返回值:

成功返回实际读到的对象个数

失败返回0

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

功能:

定位文件光标的位置

参数:

stream:文件流指针

offset:偏移量

whence:

SEEK_SET

SEEK_CUR

SEKK_END

返回值:

成功返回0

失败返回-1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: