1.文件:open到close的使用方法

1.文件描述符    int fd;

       系统中存在的:

              0    标准输入     从键盘读取输入

              1     标准输出    输出到屏幕

              2    标准错误

       例子

              read(0,buf,size);    从键盘读取size个字节,放在buf中,类似scanf

              write(1,buf,size);   把 buf 输出到屏幕

2. API

       头文件:   可以使用man man2查找

              #include <sys/types .h>

              #include <sys/stat. h>

              #include <fcntl. h>

              #include <unistd.h>

       2.1 打开文件   open

              原型

                     int fd=open(char  * pathname,flage):

                     int fd=open(char  * pathname,flage,权限):

                     返回:文件描述符

       2.11 char  * pathname

                     可直接填写路径 如:"文件名+路径"

                     也可,定义一个char *f2="文件名+路径"  ,open(f2,flage);

                     只能是当前路径下的文件路径 如:./fffd

       2.12 flage

                     不加权限

                             O_RDONLY    只读打开  

                              O_WRONLY   只写打开    

                             O_RDWR        可读可写打开

                     加权限,用上面的 一个(三选一)  或  下面的 多个进行“或”运算, |

                            O_CREAT 

                                   若文件不存在则创建它。要说明mode,用其说明该新文件的存取许可权限。

                            O_EXCL

                                   同时指定O_CREAT时,如果打开的文件已经存在,则返回-1。

                            O_APPEND

                                   打开文件时,如果这个文件中本来是有内容的,默认把光标移动到文件的尾端,并另起一行。 即:打开后,在文件尾端,另起一行操作。防止当前输入”覆盖“原字节

                            O_TRUNC

                                   打开文件时,如果这个文件中本来是有内容的,清空文件中的内容,重新输入

              2.13权限

                     r   读取  代表数字  4

                     w  写入  代表数字  2

                     x   执行  代表数字  1

                     如:0600\0700\0100

       2.3. 读写      write /read

              2.31Write

原型: write(int fd, const void *buf, size t count);  文件描述符 ,输入的东西,大小

                     write(fd,buf,strlen(buf));

              返回:如果顺利write()会返回实际写入的字节数。当有错误发生时则返回-1,错误代码存入errno中

              2.32read

                     原型:  read(int fd,  void* buf, size t count);   文件描述符 ,读取的东西放在这个地方,大小

                     返回:返回值为实际读取到的字节数, 如果返回0, 表示已到达文件尾或是无可读取的数据。若参数count 为0, 则read()不会有作用并返回0

       2.4光标定位 lseek

              lseek (int fd,int offset,int whence);    将指针移动到whence相对offset个字节

              offset:相对字节数

              whence:光标位置

                     SEEK_SET   头

                     SEEK_END   尾

                     SEEK_CUR   当前位置

                     PS;移动到头、尾、当前位置时, 正数offset 默认向后推移

              返回 

                     有返回:返回 ,距离头位置的偏移字节数"

                     无返回 ;可返,可不返

       2.5 关闭        close

              close(fd);

       2.6 创建        creat

              原型

                     int fd=creat("文件名及路径",mode):

                     返回:文件描述符

              mode

                     S_IRUSR         4      可读

                     S_IWUSR        2      可写

                     S_IXUSR         1       可执行

                     S_IRWXU        7        可读、写、执行

注意:1.文件写入后光标位置不变,进行read时,需要把光标移动 lseek

         2.打开了文件必须关上文件

         3.文件路径默认当前路径下:如 wenjian/fffd ,你编辑的文件也在wenjian下,则open路径:  ./fffd

参考例子

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int main(){
  

       int fd;

       int len=1;

       int y;

       fd=open("./fffg",O_RDWR);

       if(fd<0){

              printf("open fffg faild\n");

              fd=open("./fffg",O_RDWR|O_CREAT,0600);

       }

       char *du="lidaxia hen shuai !";
      

       len=write(fd,du,strlen(du));  

       printf("%d   %d\n",fd,len);

      

       //光标移动到 距离当前位置向后19

       lseek(fd,-19,SEEK_CUR);

      



       char *di=(char *)malloc(sizeof(char)*20+1);

       len=read(fd,di,20);

      

       printf("%d   %d\n",fd,len);

       if(len>=0)

       printf("%s\n",di);

       close(fd);

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值