linu学习笔记(四):write,read函数

原创 2016年05月30日 23:08:18

先上一段代码:

#include<string.h>
#include<stdio.h>
#include<sys/types.h>
#include<fcntl.h>
#include<unistd.h>
#include<error.h>
#include<stdlib.h>
/*自定义的错误处理函数*/
void my_err(const char *err_string,int line)
{
    fprintf(stderr,"line:%d ",line);//stderr 输出到标准显示设备
    perror(err_string);             //打印错误信息
    exit(1);
}
/*自定义的读数据函数*/
int my_read(int fd)
{
    int len;
    int ret;
    int i;
    char read_buf[64];                           //定义一个字符数组用来当做缓冲
   /*获取文件长度并保持文件读写指针在文件开始处*/
    if(lseek(fd,0,SEEK_END)==-1){                //移动到文件尾部
	my_err("lseek",__LINE__);
    }
    if((len=lseek(fd,0,SEEK_CUR))==-1) {         //获取文件当前的偏移相对于文件开头
        my_err("lseek",__LINE__);
    }
    if((lseek(fd,0,SEEK_SET))==-1) {             //移动到文件开头
        my_err("read",__LINE__);
    }
    printf("len:%d\n",len);
    /*读数据*/
    if((ret=read(fd,read_buf,len))==-1){
	my_err("read",__LINE__);
    }
    /*打印数据*/ 
    for(i=0;i<len;i++){
	printf("%c",read_buf[i]);
    }
    printf("\n");
    return ret;
}

int main()
{
    int fd;
    char write_buf[32] ="hellow world";
    /*在当前目录下创建文件example_63.c*/
    //if((fd=creat("example_63.c",S_IRWXU))==-1){                             
    if((fd=open("example_63.c",O_RDWR|O_CREAT|O_TRUNC,S_IRWXU))==-1){    //创建一个可读写的文件 如果这个文件存在则把内容清空 清空的参数是
	my_err("open",__LINE__);                                         //O_TRUNC ,S__IRWXU是设置用户操作文件的权限。
    }else{
        printf("creat file success\n");
    }
    /*写数据*/
    if(write(fd,write_buf,strlen(write_buf))!=strlen(write_buf)){    //如果写入数据不等于原来数据的长度则打印错误信息
        my_err("write",__LINE__);
    }
    my_read(fd);                                                       //调用读取函数读取数据这个行应该是删除多打了一行
    /*演示文稿*/
    printf("/*-------------------------*/\n");
    if(lseek(fd,10,SEEK_END)==-1){
	my_err("write",__LINE__);
    }
    my_read(fd);
    close(fd);
    return 0;
}
两个子函数一个用来处理错误主要调用perror()这个函数,这个函数之前笔记应该学过英文解说:The  perror()  function produces a message on standard error describing the last error encountered during a call to a system or  library  function.主要用于对上次调用系统或者库函数出错时的错误描述首先先打印括号中的字符然后才是错误的内容。

第二个子函数是用来读数据的,其中有个__LINE__参数是用来打印当前行号的,当运行出错时会很方便的显示出当前错误代码的行号。关于代码的解释放在代码注释中

 

版权声明:欢迎交流,共同进步!

Linux C编程学习笔记(3):read、write、lseek函数及文件读写和文件读写指针的移动操作

read函数: 1.原型:   #include   ssize_t read(int fd, void *buf,size_t count); 2.功能:   从打开的设备或文件中读取数...
  • hxllhhy
  • hxllhhy
  • 2017年06月10日 04:55
  • 171

linux驱动学习笔记1(简单实现open,read,write,ioctl)

以前开发过程中用过无数次的ioctl函数,一直不知道其内部如何实现的,最近正好在看这方面的资料,并结合网上的代码做了实践,这里记录下。 首先编辑一个驱动模块,取名demo.c #include #i...

Java NIO学习笔记——内存映射缓冲区(READ_ONLY、READ_WRITE、PRIVATE)

新的FileChannel类提供了一个名为map( )的方法,该方法可以在一个打开的文件和一个特殊类型的ByteBuffer之间建立一个虚拟内存映射(第一章中已经归纳了什么是内存映射文件以及它们如何同...

Linu学习笔记之——变量、环境变量

摘要:主要记录一些关于变量、环境变量的概念、还有子程序、以及个人设置文件的加载顺序。注意掌握两个重要命令:export和source( . )。关键在于理清变量与其所在环境之间的关系。...

《UNIX环境高级编程》笔记--read函数,write函数,lseek函数

1.函数说明 每个打开的文件都有一个关联的“当前偏移量”,用于记录从文件到当前当前位置的偏移字节数,lseek函数是设置这个当前偏移量 的函数,函数的声明如下: #include...
  • TODD911
  • TODD911
  • 2013年09月09日 15:50
  • 8243

Linu学习笔记之——Linux 用户、用户组的相关操作

摘要:主要介绍关于Linux的用户的、添加、修改、删除。用户组的新增、修改、删除操作和一些特殊情况。以及用户和用户组之间的操作。...

Linu学习笔记之——ubuntu安装、卸载JDK1.7

一:手动安装 1.1 获取相应安装包 我这里是另一台ubuntu机器上下载好的、从那里荡过来的。可以使用scp来拷贝同一局域网内不同Linux系统的文件、前提是两台电脑的IP能互相ping的通。 ...

c/c++ 学习-read 函数和 write 函数

read 函数和 write 函数 最近开始从事搜索引擎的工作,所以又重新开始了c/c++的旅程,时隔4年 不得不复习一下c/c++其中的内容,以下内容有网上别的朋友发表的,也有我自己总结的. ...

今天主要调了CFile中Open,Read,Write等函数

今天还是跟以前一样主要调了一下socket,这此不一样的是除了有用户名和密码的认证之外,还有建了一个文件,并且把文件中的内容传递到另外的一个地方(比如从c盘传递到d盘)。主要运用了CFile open...

linux c编程open() read() write()函数的使用方法及实例

http://joe.is-programmer.com/posts/17463.html http://www.nenew.net/linux-c-program-open-read-write-...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linu学习笔记(四):write,read函数
举报原因:
原因补充:

(最多只允许输入30个字)