Linux应用软件编程-文件操作(标准io)

在Linux下一切皆文件,比如:.txt,.c,.h,.jpg,目录,键盘,鼠标,显示器、硬盘等等都是文件,即IO。

文件操作的统一思想:打开文件,读、写文件,关闭文件。

文件的类型:

b     块设备文件       存储设备(硬盘)

c     字符设备文件    输入输出设备

d     目录文件

-      普通文件    .c   .h   .txt   .jpg   .png   .mp4   a.out    ============>ASCII文件     二进制文件

l      软链接文件       

s     套接字文件      网络通信 

p     管道文件         进程间通信

一  标准IO:

打开文件:fopen

读写文件:

fgetc   fputc:一个字节读写   作用:主要用来操作普通文件(ASCII文件、二进制文件)

fgets   fputs:一行读写          作用:主要用来操作普通文件中的ASCII文件,不能操作二进制文件

fwrite  fread:按照指定大小读写(读写结构体)  作用:主要用来操作普通文件(ASCII文件、二进制文件)

关闭文件:fclose

二  函数接口:

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

功能:打开一个文件

参数:

pathname :要打开文件的文件名

mode :打开方式:

"r" :只读方式打开, 文件必须要存在

"r+" :读写方式打开,文件必须要存在

"w":以写的方式打开,文件不存在则创建,文件存在则清空

"w+":以读写方式打开,文件不存在则创建,文件存在则清空

"a":打开追加写,文件不存在则创建

"a+":以读写方式打开,追加写,文件不存在则创建

返回值:成功:文件流指针FILE *;失败: NULL

2. int fclose(FILE *stream);

功能:关闭文件流指针所对应的文件(释放资源)

文件流:FILE-文件流结构体;FILE *-文件流指针;标准IO在每打开一个文件时,都会将一个文件和一个文件流指针相关联。

操作系统默认打开的三个流:

stdin :标准输入流 : 默认关联键盘

stdout:标准输出流:  默认关联显示终端

stderr:标准出错流: 默认关联显示终端

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

功能:向文件中写入一个字节

参数:

c : 要写入的数据

stream:要写入的文件流指针

返回值:成功:返回写入数据的整型值;失败:EOF(-1)

4. int fgetc(FILE *stream);

功能:从文件中读一个字符

参数:stream : 要读的文件流指针

返回值:成功:返回督导字符的ascii;失败:EOF,读到文件末尾:EOF

5. int fputs(const char *s, FILE *stream);注意:此函数接口不会写入'\0'

功能:向文件中写入一行字符串

参数:

s : 要写入数据的首地址

stream:写入的文件流指针

返回值:成功: >=0;失败 :EOF。

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

功能:读取一行数据到到s指向的空间,遇到'\n'停止读

参数:

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

size :期待读到的字节数

stream:要读的文件流

返回值:成功:返回s的首地址;失败:NULL,文件末尾:NULL

fputs和puts,fgets和gets的区别:

fputs与puts:puts会自动输出一个'\n'

fgets与gets:

1. gets会将终端最后输入的'\n'替换成'\0', fgets只是在最终读到的字符串末尾添加'\0';

2. gets是危险的,因为没有限制输入数据的大小,fgets有限制;

3. fgets如果size比要读区的数据小,最多读取size-1个字节,最后一个字节位置存放\0;

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

功能:向文件中写入指定大小的nmemb个元素

参数:

ptr :要写入数据的首地址

size:写入的每个元素的大小

nmemb:要写入的元素的个数

stream:要写入的文件流指针

返回值:成功:实际写入的元素个数;失败:0 

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

功能:从文件中读取nmemb个元素

参数:

ptr:要存放读取到的数据的首地址

size:每个元素的大小

nmemb:期望读到的元素的个数

stream:要度的文件流指针

返回:成功:返回实际读到的元素个数;失败:0,读到达文件末尾:0

标准IO---文件定位函数:

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

功能:重新定位文件流位置

参数:

stream:要重新定位的文件

offset:从指定位置进行偏移的偏移量

whence:指定的位置:SEEK_SET:文件开头,offset:正;SEEK_CUR:当前位置,offset:可正可负;SEEK_END:文件末尾,offset:可正可负

返回值:成功:0;失败:-1

2. long  ftell();
功能:返回流所在位置到文件开头的偏移量

3. rewind();
功能:流复位文件的开头

4.fprintf()

功能:将格式化后的字符串写入到文件

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

功能:将格式化后的字符串写道str指向的内存空间,字符串的拼接,要将某种基本数据类型转换成字符串类型

6. fscnaf();

功能:从文件中读出格式化后的数据

7. sscanf();
功能:从内存中获取格式化后的数据

时间的函数接口:

time();功能:获取1970-1-1 0:0:0到现在的秒数

ctime();功能:将秒数转换成字符串时间

localtime();功能:将秒数转换成日历时间

char *strtok(char *str, const char *delim);

功能:分割字符串

参数:

str :需要被分割的字符串

delim:分隔符

返回值:成功:返回分割后的字符串首地址;失败:NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值