开发者学堂课程【物联网开发- Linux 高级程序设计全套视频:Mycp】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/660/detail/10978
Mycp
内容简介:
一、更改代码
二、加入 while 循环
三、实现功能
一.更改代码
将读出的内容放置于 str 中,再写到目的文件中,实现 my_cp 的拷贝功能.
打开文件新建文本文档(2).txt,将以下代码复制到my_cp.c文件中
fd = open ( path ,0 WRONLY );
if ( fd ==-1)
{
perror (" open ");
return 0;
}
count = write ( fd , str , strlen ( str ));
if ( count== -1)
{
perror (" write ");
return 0;
}
并对代码做以下更改:
(1)目的文件改为 dest.txt。
(2)写入 O_CREAT,以之前方式打开,没有则创建。
(3)权限为666。
(4)变量 fd 改为 dest_fd ,代表 dest.txt文件。
dest_fd = open ( dest.txt ,O_WRONLY|O_CREAT ,0666);
if (dest_ fd ==-1)
{
perror (" open ");
return 0;
}
count = write ( dest_fd , str , count);
if ( count== -1)
{
perror ("write ");
return 0;
}
close(dest_fd)
实现了文件内容的复制。
二.加入 while 循环
在读写前加入 while 循环,读一次写一次,解决文件中字节较多问题。并删除打印部分代码。
while (1)
{
memset ( str ,0, sizeof ( str ));
//将str清空
count = read ( fd , str ,99);
//开始读取
if ( count <=0)
{
perror (" read ");
return 0;
}//未读到或出错则退出
count = write ( dest fd , str , count );
//若读到则向str中写count字节
if ( count =-1)
{
perror (" write");
return 0;
}
}
开始试验,使test.txt文件中多于100个字节,观察是否能目的文件中。
结果显示成功
三.实现功能
打开 my_cp.c 文件,在 main 函数传参,
做出如下更改:
(1)int main(int argc,char*argv[])//参数个数和指针数组.
(2)源文件名改为argv[1]。
(3)目的文件名由dest.txt改为argv[2]。
(4)return 0 改为 break,功能相同 。
随后编译代码,运行 my_cp test.txt wanqi.txt ,
打开 wanqi.txt 文件发现内容全部拷贝成功。