实验要求
将一个文件的内容复制到目标文件的程序。
- 该程序首先提示用户输入源文件和目标文件的名称。
- 请务必包括所有必要的错误检查,包括确保源文件是否存在。
使用跟踪系统调用的实用程序运行该程序。 Linux 系统提供 strace 实用程序
程序编写
-
拷贝文件功能
模仿cp命令的执行效果
错误检查(参数检查,程序逻辑,函数返回值判断等)
只考虑文件,不考虑目录
strace
-
查看所编写程序执行过程中调用的系统调用
strace用来判断一个程序执行出错的原因
实验环境
在虚拟机上安装deepin
GCC
vim
所用语言:C
实验代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
char ch, source_file[25], target_file[25];
FILE *source, *target;
printf("Enter name of file to copy\n");
gets(source_file);
source = fopen(source_file, "r");
if( source == NULL )
{
printf("Press any key to exit...\n");
exit(EXIT_FAILURE);
}
printf("Enter name of target file\n");
gets(target_file);
target = fopen(target_file, "w");
if( target == NULL )
{
fclose(source);
printf("Press any key to exit...\n");
exit(EXIT_FAILURE);
}
while( ( ch = fgetc(source) ) != EOF )
fputc(ch, target);
printf("File copied successfully.\n");
fclose(source);
fclose(target);
return 0;
}
P.S.因为代码不是作者本人写的,其实是从这个网站找的,所以并没有实现检查源文件是否存在的问题,以后有时间应该会回来改QAQ
一些运行截图
就是用vim创建了三个文件,一个放代码,一个作为源文件,一个作为复制后放置内容的文件
P.S.同学反映.doc后缀的好像用不了这个代码,鼠鼠现在也不知道为什么捏,后续应该会来评论区说,或者大家有谁知道也请说说
【鼠鼠发言】
感觉自己代码能力还是好差,完全不知道如何下手,只能看懂代码,但是敲不出来(大哭)
放一放本次实验代码来源: