国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Linux C 兩種方法實現復制拷貝文件

2019-11-14 09:59:38
字體:
來源:轉載
供稿:網友

第一種方法:例如 linux 下的系統調用

#include <stdio.h>#include <dirent.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>char buff[1024];int len;int main(int argc, char const *argv[]){	char const *src_path = argv[1];	char const *des_path = argv[2];	int fd,fd2;	fd = open(src_path,O_RDWR|O_CREAT);	fd2 = open(des_path,O_RDWR|O_CREAT);	while(len = read(fd,buff,1024))	{		write(fd2,buff,len);	}	return 0;}這里主要 用到的函數是 open,read,write

其中open 函數:

第一個參數為要打開文件的路徑,第二個參數是功能flag,O_RDWR表示以讀寫方式打開文件,O_CREAT表示如果文件不存在則創建

返回一個文件描述符,表示打開了的文件

其中 read 函數:

第一個參數是一個文件描述符,表示:從該文件描述符表示的文件讀取數據

第二個參數是把從文件讀到的信息放在一個緩沖數組中

第三個參數是讀一次讀多少字節

其中 write 函數:

第一個參數,是把數據寫到哪里(寫到哪個文件描述符中)

第二個參數:把緩沖數組中的數據寫到文件描述符中

第三個參數:表示一次寫多少字節

注意:最好向上面代碼那樣用一個while循環來讀寫數據,這樣的話,read 中的第三個參數就不用設置成太大,因為他會把數據全讀完才退出循環

第二種方法:用文件流

#include <stdio.h>#include <dirent.h>#include <stdlib.h>#include <string.h>char buff[1024];int len;int main(int argc, char const *argv[]){	FILE *in,*out;	char const * src_path = argv[1];    //要被拷貝的文件路徑	char const * des_path = argv[2];	//拷貝的文件放在哪里(路徑)	in = fopen(argv[1],"r+");	out = fopen(argv[2],"w+");	while(len = fread(buff,1,sizeof(buff),in))	{		fwrite(buff,1,len,out);	}	return 0;}兩種方法其實有異曲同工之妙,第一種方法的文件描述符 = 第二種方法的文件流指針 in 和 out。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漠河县| 乌审旗| 漯河市| 昆山市| 三门峡市| 星子县| 泰来县| 沧州市| 慈利县| 丁青县| 鞍山市| 苏州市| 乌拉特后旗| 红原县| 凤冈县| 青神县| 康定县| 南昌县| 铁岭市| 积石山| 社会| 双柏县| 东平县| 斗六市| 开封市| 喀喇沁旗| 汉阴县| 武冈市| 团风县| 太原市| 泗阳县| 闵行区| 聊城市| 南昌县| 桃园县| 礼泉县| 乌拉特中旗| 英超| 拉萨市| 拉萨市| 灵川县|