- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux系统编程实验三文件编程
实验三:文件编程
实验目的:
学会创建文件,并制定文件访问属性
学会使用C库函数和Linux系统调用,并理解他们的区别
实验要求:
(一)编写应用程序,创建一可读可写的文件
(二)使用库函数,实现文件copy的功能
实验器材:
软件:安装了Linux的vmware虚拟机
硬件:PC机一台
实验步骤:
(一)文件创建
1、编写实验代码file_creat.c
#include stdio.h
#include stdlib.h
#include sys/types.h
#include sys/stat.h
#include fcntl.h
void create_file(char *filename)
{
/*创建的文件具有可读可写的属性*/
if(creat(filename,0666)0)
{
printf(create file %s failure!\n,filename);
exit(EXIT_FAILURE);
}
else
{
printf(create file %s success!\n,filename);
}
}
int main(int argc,char *argv[])
{
/*判断入参有没有传入文件名 */
if(argc2)
{
printf(you havent input the filename,please try again!\n);
exit(EXIT_FAILURE);
}
create_file(argv[1]);
exit(EXIT_SUCCESS);
} 2、编译应用程序file_creat.c
用gcc命令编译file_create.c后生成可执行文件file_creat
3、运行应用程序
运行了该程序后,大家可以发现在当前目录下产生了test.txt文件
4、该实验让大家学习怎样用Linux的系统调用创建一个文件,并设置文件的访问属性,文件操作时Linux应用编程的基础
(二)文件拷贝
1、编写实验代码file_cp.c
#include string.h
#include strings.h
#include stdio.h
#include stdlib.h
#define BUFFER_SIZE 1024
int main(int argc,char **argv)
{
FILE *from_fd;
FILE *to_fd;
long file_len=0;
char buffer[BUFFER_SIZE];
char *ptr;
/*判断入参*/
if(argc!=3)
{
printf(Usage:%s fromfile tofile\n,argv[0]);
exit(1);
}
/* 打开源文件 */
if((from_fd=fopen(argv[1],rb))==NULL)
{
printf(Open %s Error\n,argv[1]);
exit(1);
}
/* 创建目的文件 */
if((to_fd=fopen(argv[2],wb))==NULL)
{
printf(Open %s Error\n,argv[2]);
exit(1);
}
/*测得文件大小*/
fseek(from_fd,0L,SEEK_END);
file_len=ftell(from_fd);
fseek(from_fd,0L,SEEK_SET);
printf(from file size is=%d\n,file_len);
/*进行文件拷贝*/
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,0,BUFFER_SIZE);
}
fclose(from_fd);
fclose(to_fd);
exit(0);
} 2、编译应用程序file_cp.c
3、运行应用程序
我们将file_cp.c拷贝为test.c,可以看到运行程序后文件夹出现了test.
您可能关注的文档
- 20150912新生军训服务说明书.docx
- 12医院财务内部控制制度.docx
- 2014-2015年标准合同模板目录.docx
- 2001-2013全国电子设计大赛元器件清单.docx
- 141124《基金业务外包服务指引》说明.docx
- 201560号应急演练文件.docx
- 2015国培项目现场实践成绩鉴定表.docx
- 2015学年第一学期政教处工作计划.docx
- 140630肉牛养殖项目环境影响报告表全本公示.doc
- 2015室内设计专升本设计任务书(主题酒店).doc
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)