欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在Linux中实现文本文件的复制_莫韵乐的小脚印笔记

程序员文章站 2024-03-12 23:03:38
...

在Linux中实现文本文件的复制

写这个程序这个当然要带一点挑战
挑战一:文件的长度不确定
挑战二:只能用底层I/O
(反正我觉得找这个的都是来抄作业的,如果这篇博客能帮助到你,点个赞然后在评论里写个谢谢就好了)

首先我们在Linux里面创建一个文本文件

在Linux中实现文本文件的复制_莫韵乐的小脚印笔记

输入内容(就用ls的重定向输出好了,乱打字也可以)

在Linux中实现文本文件的复制_莫韵乐的小脚印笔记

接着我们创建一个c文件(名字自己喜欢就好)

在Linux中实现文本文件的复制_莫韵乐的小脚印笔记

在用gedit打开,输入我写的代码(构思是要靠经验的)

在Linux中实现文本文件的复制_莫韵乐的小脚印笔记

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>

int main(int argc, char **argv)
{	
	int fd1 = -1;
	int fd2 = -1;
	char buf[11]="";
	int ret = 1;
	fd1 = open(argv[1],O_RDONLY);
	if(fd1 == -1)
	{
		printf("file1 open error!\n");
		exit(1);
	}
	//由于我的umask的默认为0022,那么创建出来的文件就是0666-0022=0644
	fd2 = open(argv[2],O_RDWR | O_CREAT,0666);
	if(fd2 == -1)
	{
		printf("file2 open error!\n");
		exit(1);
	}
	
	while(ret>0){
		ret = read(fd1,buf,10);
		write(fd2,buf,ret);
		
	}
	printf("file copy complete!\n");
	close(fd1);
	close(fd2);
	
	return 0;
}

保存退出,用gcc编译文件

在Linux中实现文本文件的复制_莫韵乐的小脚印笔记

我们可以看到程序没有任何错误,接下来我们就可以使用一下这个代码

在Linux中实现文本文件的复制_莫韵乐的小脚印笔记

我们可以看到a.txt向b.txt复制成功了,我们来看一下吧b.txt的内容

在Linux中实现文本文件的复制_莫韵乐的小脚印笔记

mycopy.c已经成功地将a.txt的内容复制到b.txt中

挑战一完成✔

挑战二完成✔

下次再见啦!拜拜

我的其他系列:
安卓开发日记第一天

相关标签: 一步一个脚印