C语言文件拷贝操作的注意事项

首先需要读取data.txt(原文件)中的内容

接着开始摹写data_copy(拷贝文件)中的内容

注意:每次fopen(打开文件)时都应该判断是否打开成功

接着定义一个接收变量ch

注意:定义ch一定要用int类型来定义

因为:

翻译:

C语言文件拷贝操作的注意事项_第1张图片

正想上面所说,之所以定义int类型的变量接收返回值,是因为int类型可以适应特殊值EOF,来判断是否读取到文件的末尾。

还有循环体中的:

C语言文件拷贝操作的注意事项_第2张图片

要写成while ((ch = getc(fr)) != EOF),而不是while ( ch = getc(fr)  != EOF)

因为 != 的优先级要大于 = 所以会把后面 getc(fr)  != EOF 的返回值(成立返回1,不成立返回0)赋值给ch,导致整体拷贝出现错误。

源码如下:

#include

int main()
{
    //读
	FILE* fr = fopen("data.txt", "r");
	if (NULL == fr)
	{
		perror("fopen for read");
		return 1;
	}

    //写
	FILE* fw = fopen("data_copy.txt", "w");
	if (NULL == fw)
	{
		perror("fopen for write");
		return 1;
	}

	int ch = 0;
	while ((ch = getc(fr)) != EOF)
	{
		fputc(ch, fw);
	}
	fclose(fr);
	fclose(fw);
	fr = NULL;
	fw = NULL;
	return 0;
}

你可能感兴趣的:(c语言,算法)