首页 Linux系统编程实验三:文件编程

Linux系统编程实验三:文件编程

举报
开通vip

Linux系统编程实验三:文件编程实验三:文件编程实验目的:学会创建文件,并制定文件访问属性学会使用C库函数和Linux系统调用,并理解他们的区别实验要求:编写应用程序,创建一可读可写的文件使用库函数,实现文件copy的功能实验器材:软件:安装了Linux的vmware虚拟机硬件:PC机一台实验步骤:(一)文件创建1编写实验代码file_creat.c#include#include#include#include#includevoidcreate_file(char*filename){/*创建的文件具有可读可写的属性*/if(creat(fi...

Linux系统编程实验三:文件编程
实验三:文件编程实验目的:学会创建文件,并制定文件访问属性学会使用C库函数和Linux系统调用,并理解他们的区别实验要求:编写应用程序,创建一可读可写的文件使用库函数,实现文件copy的功能实验器材:软件:安装了Linux的vmware虚拟机硬件:PC机一台实验步骤:(一)文件创建1编写实验代码file_creat.c#include#include#include#include#includevoidcreate_file(char*filename){/*创建的文件具有可读可写的属性*/if(creat(filename,0666)<0){printf("createfile%sfailure!\n",filename);exit(EXIT_FAILURE);}else{printf("createfile%ssuccess!\n",filename);}}intmain(intargc,char*argv[]){/*判断入参有没有传入文件名*/if(argc<2){printf("youhaven'tinputthefilename,pleasetryagain!\n");exit(EXIT_FAILURE);}create_file(argv[1]);exit(EXIT_SUCCESS);}2、编译应用程序file_creat.c用gcc命令编译file_create.c后生成可执行文件file_creat[root@localhostfile]#gccfilecreat.c-ofilecreat[root@localhostfile]#Isfilecreatfilecreat.c3、运行应用程序[rootfalocalhostfile]#./filecreattest.txtcreatefiletest.txtsuccess![root@localhostfile]#Isfile_creatfilecreEt.ctest运行了该程序后,大家可以发现在当前目录下产生了test.txt文件4、该实验让大家学习怎样用Linux的系统调用创建一个文件,并设置文件的访问属性,文件操作时Linux应用编程的基础(二)文件拷贝1编写实验代码file_cp.c#inelude#inelude#include#include#defineBUFFER_SIZE1024intmain(intargc,char**argv){FILE*from_fd;FILE*to_fd;longfile_len=0;charbuffer[BUFFER_SIZE];char*ptr;/*判断入参*/if(argc!=3){printf("Usage:%sfromfiletofile\n",argv[0]);exit(1);}/*打开源文件*/if((from_fd=fopen(argv[1],"rb"))==NULL){printf("Open%sError\n",argv[1]);exit(1);}/*创建目的文件*/if((to_fd=fopen(argv[2],"wb"))==NULL){printf("Open%sError\n",argv[2]);exit(1);}/*测得文件大小*/fseek(from_fd,OL,SEEK_END);file_len=ftell(from_fd);fseek(from_fd,OL,SEEK_SET);printf("fromfilesizeis=%d\n",filelen);666);/*进行文件拷贝*/while(!feof(from_fd)){fread(buffer,BUFFER_SIZE,1,from_fd);if(BUFFER_SIZE>=file_len){fwrite(buffer,file_len,1,to_fd);}--else{fwrite(buffer,BUFFER_SIZE,1,to_fd);file_len=file_len-BUFFER_SIZE;}//写入完成后清空缓冲区memset(buffer,O,BUFFER_SIZE);}fclose(from_fd);fclose(to_fd);exit(0);}2、编译应用程序file_cp.c;root@localhostfile]#gccfile_cp.c-ofilecp3、运行应用程序—[root@localhostfile]#,/filecpfilecp.ctest.cfromfilesizeis=1073[root@localhostfile]#Isfilecpfilecreattest,cfilecp•仁filecreat.ctest,txt我们将file_cp.c拷贝为test.c,可以看到运行程序后文件夹出现了test.c和file_cp.c大小和内容都一样4、要注意区分C库函数和Linux系统调用对文件操作的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 。比如C库函数fread就没有像Linux系统调用read函数那样返回成功读取了多少个字节,只有清楚了他们之间的的区别我们才好熟练运用他们上机报告要求:编写一应用程序实现如下功能:使用open()函数创建一个名为file.txt,权限为666的文件;并向其中写入字符串“helloworld”,然后使用read()函数把写入的内容读取出来并在终端上显示输出。#include#include#include#include#include#includeintmain(){intfd=-1;fd=open("zhidao_561804018.dat",O_CREAT|O_TRUNC|O_RDWR,0if(fd<0){perror("open");return-1;}charbuff[64];strcpy(buff,"Hello!lamwritingtothisfile!");intcount=strlen(buff);TOC\o"1-5"\h\zif(write(fd,buff,count)<0){perror("write");return-1;}if(lseek(fd,0,SEEK_SET)<0){perror("lseek");return-1;}if(read(fd,buff,10)<0){perror("read");return-1;}buff[10]=0x00;printf("%s\n",buff);if(fd>0){close(fd);fd=-1;}return0;}分别写出open(),read(),write(),close()函数的函数原型,功能,返回值,函数参数的意义。open()函数功能描述:用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数。所需头文件:#include,#include,#include函数原型:intopen(constchar*pathname,intflags,intperms)参数:pathname:被打开的文件名(可包括路径名如"dev/ttyS0")flags:文件打开方式,O_RDONL以只读方式打开文件O_WRONL以只写方式打开文件O_RDW以读写方式打开文件O_CREAT如果改文件不存在,就创建一个新的文件,并用第三个参数为其设置权限O_EXCL如果使用O_CREAT寸文件存在,则返回错误消息。这一参数可测试文件是否存在。此时open是原子操作,防止多个进程同时创建同一个文件O_NOCTT使用本参数时,若文件为终端,那么该终端不会成为调用open()的那个进程的控制终端O_TRUN(若文件已经存在,那么会删除文件中的全部原有数据,并且设置文件大小为0O_APPEND以添加方式打开文件,在打开文件的同时,文件指针指向文件的末尾,即将写入的数据添加到文件的末尾O_NONBLOCK如果pathname指的是一个FIFO、一个块特殊文件或一个字符特殊文件,则此选择项为此文件的本次打开操作和后续的I/O操作设置非阻塞方式。O_SYNC使每次write都等到物理I/O操作完成。O_RSYNC:read等待所有写入同一区域的写操作完成后再进行在open()函数中,falgs参数可以通过组合构成,但前3个 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 常量(O_RDONL9_WRONLY和O_RDWR不能互相组合。perms:被打开文件的存取权限,可以用两种方法 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示,可以用一组宏定义:S_I(R/W/X)(USR/GRP/OTH),其中R/W/X表示读写执行权限,USR/GRP/OTH>别表示文件的所有者/文件所属组/其他用户,如S_IRUUR|S_IWUUR|S_IXUUR,(-rex——),也可用八进制800表示同样的权限返回值:成功:返回文件描述符失败:返回-1close()函数功能描述:用于关闭一个被打开的的文件所需头文件:#include函数原型:intclose(intfd)参数:fd文件描述符函数返回值:0成功,-1出错read()函数功能描述:从文件读取数据。所需头文件:#include函数原型:ssize_tread(intfd,void*buf,size_tcount);参数:fd:将要读取数据的文件描述词。buf:指缓冲区,即读取的数据会被放到这个缓冲区中去。count:表示调用一次read操作,应该读多少数量的字符。返回值:返回所读取的字节数;0(读到EOF;-1(出错)。以下几种情况会导致读取到的字节数小于count:读取普通文件时,读到文件末尾还不够count字节。例如:如果文件只有3 0字 个人自传范文3000字为中华之崛起而读书的故事100字新时代好少年事迹1500字绑架的故事5000字个人自传范文2000字 节,而我们想读取100字节,那么实际读到的只有30字节,read函数返回30。此时再使用read函数作用于这个文件会导致read返回0。从终端设备(terminaldevice)读取时,一般情况下每次只能读取一行。从网络读取时,网络缓存可能导致读取的字节数小于count字节。读取pipe或者FIFO时,pipe或FIFO里的字节数可能小于count。从面向 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 (record-oriented)的设备读取时,某些面向记录的设备(如磁带)每次最多只能返回一个记录。在读取了部分数据时被信号中断。读操作始于cfo。在成功返回之前,cfo增加,增量为实际读取到的字节数。write()函数功能描述:向文件写入数据。所需头文件:#include函数原型:ssize_twrite(intfd,void*buf,size_tcount);返回值:写入文件的字节数(成功);-1(出错)功能:write函数向filedes中写入count字节数据,数据来源为buf。返回值一般总是等于count,否则就是出错了。常见的出错原因是磁盘空间满了或者超过了文件大小限制。对于普通文件,写操作始于cfo。如果打开文件时使用了O_APPEND则每次写操作都将数据写入文件末尾。成功写入后,cfo增加,增量为实际写入的字节数。实际自编:#include#include#include#include#include#includeintmain(){intfdo,count,ws,rs;charbuf[]="helloworld!",buf2[10];count=sizeof(buf);fdo=open("file.txt",O_CREAT|O_TRUNC|O_RDWR,0666);if(fdo<0){printf("openerror!");return-1;}ws=write(fdo,buf,count);if(ws<0){printf("writeerror!");return-1;}printf("write:%s\n",buf);rs=read(fdo,buf2,ws);if(rs<0){printf("readerror!");return-1;}printf("read:%s\n",buf2);close(fdo);return0;}
本文档为【Linux系统编程实验三:文件编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥15.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
與因
暂无简介~
格式:doc
大小:17KB
软件:Word
页数:0
分类:
上传时间:2021-10-17
浏览量:17