prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 19.16b

如何复制文件?


可以使用system()来调用操作系统的复制实用程序(参见问题19.27),或者打开源文件和目标文件(使用fopen或某个低级文件打开系统调用),从源文件中读取字符或字符块,然后将它们写入目标文件。下面是一个简单的示例

#include <stdio.h>

int copyfile(char *fromfile, char *tofile)
{
	FILE *ifp, *ofp;
	int c;

	if((ifp = fopen(fromfile, "r")) == NULL) return -1;
	if((ofp = fopen(tofile, "w")) == NULL) { fclose(ifp); return -1; }

	while((c = getc(ifp)) != EOF)
		putc(c, ofp);

	fclose(ifp);
	fclose(ofp);

	return 0;
}
要一次复制一个块,请将内循环重写为
	while((r = fread(buf, 1, sizeof(buf), ifp)) > 0)
		fwrite(buf, 1, r, ofp);
其中r是一个intbuf是一个大小合适的char.

引用:K&R 第 1 节,第 7 节


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管