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

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Linux C 兩種方法實(shí)現(xiàn)復(fù)制拷貝文件

2019-11-14 10:11:03
字體:
供稿:網(wǎng)友

第一種方法:例如 linux 下的系統(tǒng)調(diào)用

#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;}這里主要 用到的函數(shù)是 open,read,write

其中open 函數(shù):

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

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

其中 read 函數(shù):

第一個(gè)參數(shù)是一個(gè)文件描述符,表示:從該文件描述符表示的文件讀取數(shù)據(jù)

第二個(gè)參數(shù)是把從文件讀到的信息放在一個(gè)緩沖數(shù)組中

第三個(gè)參數(shù)是讀一次讀多少字節(jié)

其中 write 函數(shù):

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

第二個(gè)參數(shù):把緩沖數(shù)組中的數(shù)據(jù)寫到文件描述符中

第三個(gè)參數(shù):表示一次寫多少字節(jié)

注意:最好向上面代碼那樣用一個(gè)while循環(huán)來讀寫數(shù)據(jù),這樣的話,read 中的第三個(gè)參數(shù)就不用設(shè)置成太大,因?yàn)樗麜?huì)把數(shù)據(jù)全讀完才退出循環(huán)

第二種方法:用文件流

#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;}兩種方法其實(shí)有異曲同工之妙,第一種方法的文件描述符 = 第二種方法的文件流指針 in 和 out。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 广平县| 兴国县| 攀枝花市| 连云港市| 曲松县| 乡城县| 青田县| 武川县| 夏邑县| 灌南县| 宁海县| 赣榆县| 邛崃市| 涿鹿县| 太仆寺旗| 黑河市| 岱山县| 土默特左旗| 兰考县| 南汇区| 金塔县| 来宾市| 拜城县| 沙坪坝区| 汤阴县| 扶风县| 介休市| 盐城市| 富阳市| 原阳县| 松阳县| 满城县| 调兵山市| 梅州市| 姜堰市| 斗六市| 瑞安市| 利川市| 营山县| 遂昌县| 托克托县|