- 39
- 0
- 约1.05万字
- 约 8页
- 2020-01-21 发布于天津
- 举报
实验三:文件编程
实验目的:
学会创建文件,并制定文件访问属性
学会使用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.c和
您可能关注的文档
- 2019—2020学年第一学期八年级上册英语8A Unit6 易错题整理(word版含答案).doc
- 2019人工智能考试答案.doc
- 2019公务员考试申论试题及答案.doc
- 2019创新思维考试答案.doc
- 2019国开大学《人文英语3》单元自测(1-8)参考答案.doc
- 2019北京市高级中等学校招生考试语文参考答案及深度解读.doc
- 2019尔雅创新创业期末考试答案.doc
- 2019尔雅创新创业期末考试答案10824.doc
- 2019山东继续医学教育《抗菌药物临床应用指导原则》答案71350.doc
- 2019年4月浙江省普通高校招生选考科目考试政治试题.doc
- 2025年全国演出经纪人员资格认定考试试卷带答案(研优卷).docx
- 2025年全国演出经纪人员资格认定考试试卷完整版.docx
- 2025年全国演出经纪人员资格认定考试试题库及完整答案.docx
- 2025年全国演出经纪人员资格认定考试试卷完美版.docx
- 2025年全国演出经纪人员资格认定考试试卷含答案(实用).docx
- 2025年全国演出经纪人员资格认定考试试卷及答案(各地真题).docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
- 2025年全国演出经纪人员资格认定考试试卷及答案1套.docx
- 2025年下半年四川成都市郫都区面向社会引进公共类事业单位人员2人备考题库最新.docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
最近下载
- CAD软件:CATIA二次开发_CATIAVBA编程基础.docx VIP
- 2025 国家电投 新能源区域化管理实施方案.docx VIP
- 基于 CNN-BiLSTM 的中短期电力负荷预测.docx VIP
- 乘运合同纠纷案代理词吴一诉西安汽车客运有限公司客运合同纠纷案.docx VIP
- 机械设计软件:CATIA二次开发_(8).CATIAVBA高级编程技巧.docx VIP
- 佛教戒律论文开题报告.docx VIP
- 2025春人教版三年级下册英语Unit 2 Expressing yourself Part B Read and write 课件.pptx VIP
- CAD软件:CATIA二次开发_(6).CATIAVBA高级编程技巧.docx VIP
- 火电项目可行性报告.ppt VIP
- 机械设计软件:CATIA二次开发_(3).CATIAVBA编程入门.docx VIP
原创力文档

文档评论(0)