栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

文件操作常用函数介绍。(C语言阶段+Linux系统编程阶段)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

文件操作常用函数介绍。(C语言阶段+Linux系统编程阶段)

1.文件的概念:存储在外部介质上的数据的集合。

2.文件的分类

                普通文件   -

                目录文件   d

                字符设备文件 c

                块设备文件   b

                管道文件     p

                套接字文件   s

                链接文件     l

3.标准的文件描述符

每个程序在执行的时候  会默认的打开三个文件描述符

0:标准输入 stdin

1:标准输出 stdout

2:标准错误 stderr

4.文件操作中访问操作分为两种,第一种是库函数访问(缓冲区操作),就是我们在C语言阶段学习的相关函数,另一种就是系统调用(非缓冲区操作),一般在Linux系统编程阶段学习的。

5.缓冲区的文件操作

1)文件的打开

fopen();

函数原型:FILE *fopen(const char *path,const char *mode);

头文件:STDIO.H

函数作用:以指定文件路径和一定的模式打开一个文件。

形参:

path:所打开的文件路径,如果是当前工作目录下的文件,可以不用加路径名,如果是其他目录下的则需要加路径。

mode:打开模式

返回值:打开成功,返回指向这个打开的文件流指针(文件描述符(FILE * ));$不成功,返回NULL。

mode:模式

r :只读的方式打开文件,光标定位在文件开头

r+:读写的方式打开文件,光标定位在文件开头

w:清空写

如果文件存在,截取长度为0,如果文件不存在,创建文件,只写的方式打开,光标定位在文件开头

 w+:(清空读写)读写的方式,如果文件存在,截取长度为0,如果文件不存在,创建文件,读写的方式打开,光标定位在文件开头。

a:追加写 - 光标在文件末尾

文件存在:追加写

文件不存在:创建文件

a+:读写

根据你第一次的操作,确定光标位置:

第一次是读:光标在文件开头

第一次是写:光标在文件末尾。

2)文件的关闭

fclose();

函数原型:int  fclose (FILE *stream);

头文件:STDIO.H

函数作用:关闭已打开的文件流。

形参:

stream:文件流

返回值:关闭成功,返回0;$如果出现任何错误,返回非零。

3)单字符读写

getchar():从键盘获取一个字符

函数原型:#define getchar()  getc(stdin)

头文件:STDIO.H

函数作用:从标准输入流中读取一个字符。

形参:无

返回值:返回读取的字符。

putchar():输出字符到屏幕上

函数原型:#define putchar(c) putc((c), stdout)

头文件:STDIO.H

函数作用:向标准输出流中写入一个字符.

形参:

c:需要写入的字符

返回值:返回写入到标准输出流中的字符.

fputc():向文件中写入单个字符

函数原型:int  fputc(int c, FILE *stream);

头文件:STDIO.H

函数作用:向文件流的当前位置写入一个字符。

形参:

c:字符的ASCII码

stream:文件流指针

返回值:返回写入的字符。

fgetc():从文件中读取单个字符

函数原型:int  fgetc(FILE *stream);

头文件:STDIO.H

函数作用:从文件流(stream)读一个字符。

形参:

stream:文件流指针

返回值:返回正确读取的字符。

4)字符串读写

fputs:写入到文件中

函数原型:int  fputs(const char *s, FILE *stream);

头文件:STDIO.H

函数作用:向文件流的当前位置写入一字符串。

形参:

s:需要写入的字符串

stream:文件流指针

返回值:返回最后一个被输出到文件流中的字符;$如果没有数据输出到文件流,则返回0。

fgets:从文件中读取

函数原型:char  *fgets (char *s, int n, FILE *stream);

头文件:STDIO.H

函数作用:从文件流中读取一个字符串。

形参:

s:存储读取的字符串的空间

n:读取字符的个数(个数中包含一个结束符('')),也就真正从文件流中读取的字符的个数就是n-1个。

stream:文件流指针

返回值:成功,返回读取的字符串。$不成功,返回NULL。

5)按块读写

fread():从文件中读取数据

函数原型:size_t  fread(void *ptr, size_t size, size_t n, FILE *stream);

头文件:STDIO.H

函数作用:fread 从文件流 stream 中读取 nmemb 个元素,写到 ptr 指向的内存中,每个元素的大小为 size 个字节。。

形参:

ptr:读取的数据的存储空间地址

size:每个元素的大小

n:读取的元素的个数(读取的次数)

stream:文件流指针(文件描述符(FILE * ))

返回值:返回读取的数据块的元素的个数。

fwrite():向文件中写入数据

函数原型:size_t  fwrite(const void *ptr, size_t size, size_t n,FILE *stream);

头文件:STDIO.H

函数作用: fwrite 从 ptr 指向的内存中读取 nmemb 个元素,写到文件流 stream 中,每个元素 size 个字节。

ptr:需要写入到文件流中的数据块

size:数据块的组成元素的大小

n:数据块的元素个数(写入的次数)

stream:文件流指针(文件描述符(FILE * ))

返回值:返回写入的数据块的元素的个数。

6)格式化读写

fprintf():格式化的写入到文件

函数原型:int  fprintf(FILE *stream, const char *format, ...);

头文件:STDIO.H

函数作用:向文件流写入格式化信息 。

形参:

stream:文件流

format:格式化字符串

... :可变参数,指明需要格式的数据

返回值:返回已经写入的字符数,出现错误返回EOF。

fscanf():格式化从文件中读取

函数原型:int fscanf(FILE *stream, const char *format, ...);

头文件:STDIO.H

函数作用:从文件流中格式化获取数据。

形参:

stream:文件流指针

format:格式化字符串

... :可变参数,指明需要格式的数据

返回值:返回可变参数中的正确获取数据的参数个数。

7)文件偏移操作

rewind():光标偏移到开头

函数原型:void rewind (FILE *stream);

头文件:STDIO.H

函数作用:将文件指针移动至文件开头位置。

形参:

stream:文件流指针

返回值:无

fseek():

函数原型:int  fseek (FILE *stream, long offset, int whence);

头文件:STDIO.H

函数作用:将文件指针指向whence所指位置的向后offset个字节处。

形参:

stream:文件流指针

whence:指定的位置

文件头   0(SEEK_SET),

当前位置 1(SEEK_CUR),

文件尾   2(SEEK_END))为基准

offset:与whence的偏移量

+往文件末尾方向偏移

-往文件开头方向偏移

返回值:成功,返回0;$不成功,返回-1。

ftell():返回指针的位置,可以计算文件开头到光标处的偏移量

函数原型:long  ftell(FILE *stream);

头文件:STDIO.H

函数作用:获得文件指针在文件流中的位置。

形参:

stream:文件流指针

返回值:返回从文件的开头到文件指针所在的位置之间间隔的字节数。

8)输出错误

perror():输出错误的信息

函数原型:void  perror(const char *s);

头文件:STDIO.H

函数作用:打印一条标准错误流中的一条错误信息:错误信息的标题由s指定,然后打印冒号,接着打印当前errno数值相对应的错误消息,最后打印换行符。

形参:

s:错误标题

返回值:无

9)其他

feof():判断是否到达文件末尾

函数原型:int feof(FILE *stream);

形参:stream文件描述符

返回值:到达文件末尾返回非0,没有到达文件末尾返回0;

注意:feof在判断是否到达文件末尾,用的是前一次读到的结果来判断。

6.非缓冲区的文件操作

1)文件的打开

open():打开一个文件

函数原型:

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

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

头文件:

#include

#include

#include

函数作用:打开一个文件。

形参:

const char *pathname:打开文件

int flags:打开的方式

O_RDONLY:只读

O_WRONLY:只写

O_RDWR:读写

O_CREAT:假如文件不存在则新建

O_APPEND:追加

假如要以只写的方式打开文件,并且假如文件不存在则新建

open(“./1.tex”,O_WRONLY|O_CREAT,0664);

mode_t mode:权限  一般是配合O_CREAT使用的,他实际得到的权限是减去掩码的值(八进制数:0777)

查看掩码  umask

修改掩码的值 umask 0000

返回值:成功返回文件的描述符(一个int型整数)

失败返回 -1

2)文件关闭

close():

函数原型:int close(int fd);

头文件:#include

函数作用:关闭文件。

形参:

fd:文件的描述符

返回值:成功返回 0

失败返回  -1

3)文件的读

read();

函数原型:ssize_t read(int fd, void *buf, size_t count);

头文件:#include

函数作用:从打开的文件里读取内容

形参:

int fd:打开的文件的描述符

void *buf:读取到的内容存放的位置

size_t count:要读取的字节数

返回值:成功返回读到的字节数

失败  返回  -1

4)文件的写

write();

函数原型:ssize_t write(int fd, const void *buf, size_t count)

头文件:#include

函数作用:向一个已打开的文件写入内容

形参:

int fd:打开的文件的描述符

const void *buf:要写入的内容

size_t count:要写入的字节数

返回值:成功返回  成功写入的字节数

失败返回 -1

5)指针定位

lseek();

函数原型:off_t lseek(int fd, off_t offset, int whence);

头文件:#include   #include

函数作用:重新定位文件的读写指针的位置

形参:

int fd:打开的文件的描述符

off_t offset:偏移量  可正可负

int whence:参考位置

SEEK_SET :文件的开头

SEEK_CUR:当前的位置

SEEK_END:文件的末尾

返回值:

成功返回指针距离文件头的距离

失败返回 -1

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/990696.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号