Linux 文件编程

来源:互联网 发布:兰芝睡眠面膜 知乎 编辑:程序博客网 时间:2024/05/23 21:49

两种典型的操作系统:vxworks风河操作系统

                    Linux操作系统:源码开源

文件操作的概念

应用层通过API接口来操作linux操作系统

 

系统调用函数

1、  creat

函数的作用:创建一个文件

函数的原型:int creat(const char *pathname, mode_t mode)

头文件:#include <sys/types.h>

       #include <sys/stat.h>

       #include <fcntl.h>

返回值:成功:新的文件描述符

       出错:-1

 

2、  open

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

函数的原型:int open(const char *pathname, int flags);

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

头文件:#include <sys/types.h>

       #include <sys/stat.h>

       #include <fcntl.h>

返回值:成功:文件描述符

       出错:-1

参数说明:

Flags: O_CREAT  如果文件原来不存在,有这个参数可以创建文件

    O_RDONLY  设置文件属性为可读

    O_WRONLY 设置文件属性为可写

    O_APPEND 如果文件原来就有内容,则会自动保留文件

    O_TRUNC  清空原来内容


3、  read

函数的作用:从打开的文件中读取数据

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

头文件:#include <unistd.h>

返回值:正常返回是实际读到的字节数;

       如果是在文件结束或者无数据,返回0;

       出错:-1


4、  write

函数的作用:向打开的文件中写数据

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

头文件:#include <unistd.h>

返回值:如果顺利成功会返回实际写入的字节数;

       出错:-1;


5、  lseek

函数的作用:进行文件定位

函数的原型:int lseek(int fd, offset_t offset , int whence)

参数说明:fd :文件描述符

         offset:指针的微调,在指定的位置向前移动为负,向后移动为正

         whence:SEEK_SET 放在文件头

                  SEEK_CUR 当前的位置

                  SEEK_END 放在文件尾

返回值:返回文件当前指针到文件开始的地方有多少字节;

       出错:-1;


 

库函数—创建和打开

1、  fopen

函数的作用:打开文件

函数的原型:FILE *open(const char *pth, const char *mode)

参数说明:

Mode:

r:读,文件必须存在

r+:打开可读写,文件必须存在

w:打开只写文件,文件存在,清零原文件;文件不存在就会创建文件

w+:打开可读写文件,文件存在,清零原文件;文件不存在就会创建文件

a:以附加的形式打开只写文件,不存在就创建文件,存在就写到原来的文件尾

a+:以附加的形式打开可读写文件,不存在就创建文件,存在就写到原来的文件尾

b:二进制文件

头文件:#include <stdio.h>

返回值:成功是指向文件流的指针

       出错返回NULL;


2、  fputc

函数的作用:将一个指定的字符写入文件流中

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

返回值:成功:返回写入的字符c

       如果返回EOF则返回失败

 

3、  fgetc

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

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

返回值:返回值正常的是读取的字符

       EOF表示到了文件尾


4、  fputs

函数的作用:将一个字符串写入到文件内

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

返回值:成功返回写成功字符串;

       如返回EOF表示出错;


5、  fgets

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

函数的原型:int fgets(char *s,int size,FILE *stream)

函数的参数:从stream中读size-1个字符到s中

返回值:成功返回s;

       出错返回NULL;


6、  fread

函数的作用:从文件流读取数据块

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

返回值:实际读到的数据块的数目

注:如果返回值比nmemb小的话,可能是到了文件尾或者错误发生

       feof : 到了文件尾;

       ferror:错误发生


7、  fwrite

函数的作用:将数据块写到文件流中

函数的原型:size_t  fwite(const void*ptr,size_t size,size_t nmemb, FILE *stream)

返回值:实际写入的nmemb数目


8、  fseek

函数的作用:移动文件流的读写位置

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

返回值:成功返回0,出错返回-1


9、  ftell

函数的作用:读取文件流的读取位置

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

返回值:成功返回当前的读写位置;

       出错-1;


10、feof

函数的作用:检查文件流是否到了文件尾

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

返回值:非零代表到了文件尾


11、fprintf

函数的作用:格式化数据到文件

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

返回值:成功返回实际输入的字符;

       出错-1;


12、fscanf

函数的作用:格式化字符串输入

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

返回值:成功返回参数的数目;

       出错-1;

 

文件编程学习总结:

1、创建文件有哪些方式?

(1)      调用creat()函数

(2)      调用open()函数,并将参数flag设置为O_CREAT

(3)      调用fopen()函数,将参数mode设置为r+/w/w+

 

2、如何确定一个文件的大小?

(1)调用lseek()函数,将offset参数设置为0,将whence参数设置为文件尾即SEEK_END,函数的返回值即为文件的大小

(2)调用fseek()函数,将offset参数设置为0,将whence参数设置为文件尾,再调用ftell()函数,ftell()函数的返回值即为文件的大小


3、如何判断一个文件是否已经到达文件尾?

(1)调用read()函数,如果返回0,那么表示文件已经结束或者是无数据

(2)      调用feof()函数,如果返回值为非零则表示已经到达文件尾


4、在linux操作系统中为什么不允许用户访问内核数据?

在linux中,为了更好的保护内核空间,将程序的运行空间分为内核空间和用户空间,他们分别运行在不同的级别上,在逻辑上是相互隔离的,因此,用户进程在通常情况下不允许访问内核数据

 


0 0
原创粉丝点击