复制文件有妙招,一段程序来搞定!
实验任务
编写一段程序,实现两个文件之间的复制,具体步骤如下:
1、使用系统调用open()打开两个文件;
2、利用系统调用read()将文件a中的内容读到缓冲区里;
3、利用系统调用write()将缓冲区中的内容写到文件b中;
4、利用系统调用close()把两个打开的文件关闭。
复杂的文字让人昏昏欲睡!话不多说上程序:
源代码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
void main(int argc, char* argv[])
{
if(argc!=1)
{
printf("1234567890\n");
exit(0);
}
int w1 = open(argv[1], 0644);
int w2 = open(argv[2], 0644);
char ch;
while(read(w1, &ch, 1))
{
write(w2, &ch, 1);
}
close(w1);
close(w2);
}
结果图给你们看一下吧!嘿嘿!
文件复制来一波知识点总结:
1、Open,在使用文件之前,必须先打开文件。这个调用的目的是允许系统将属性和磁盘地址列表保存到主存中,用来以后的快速访问。
2、Close,当所有进程完成时,属性和磁盘地址不再需要,因此应关闭文件以释放表空间。很多系统限制进程打开文件的个数,以此达到鼓励用户关闭不再使用的文件。磁盘以块为单位写入,关闭文件时会强制写入最后一块,即使这个块空间内部还不满。
3、Read,数据从文件中读取。通常情况下,读取的数据来自文件的当前位置。调用者必须指定需要读取多少数据,并且提供存放这些数据的缓冲区。
4、Write,向文件写数据,写操作一般也是从文件的当前位置开始进行。如果当前位置是文件的末尾,则会直接追加进行写入。如果当前位置在文件中,则现有数据被覆盖,并且永远消失。
5、argc是命令行总的参数个数,argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数。
6、char argv[]是一个字符数组,其大小是int argc,主要用于命令行参数argv[]参数,数组里每个元素代表一个参数。
网友评论