欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

多字节字符序列无效

程序员文章站 2022-05-31 08:34:01
...

编译成功,但提示多字节字符序列无效

编译环境 :VS 2019

报错截图:多字节字符序列无效

修改方法:

1.使用向右的双斜杠       2.使用向左的单斜杠

代码修改(36~41行):

#include<stdio.h>
#include<stdlib.h>

#define BUFSIZE 1024

//实现文件的二进制拷贝
int copyfile(const char* dest, const char* src) {
	FILE* fp1 = NULL, * fp2 = NULL;
	fopen_s(&fp1, src, "rb");
	if (fp1 == NULL) {
		return -1;
	}
	fopen_s(&fp2, dest, "wb");
	if (fp2 == NULL) {
		return -2;
	}

	char buffer[BUFSIZE]; //区别BUFSIZ, BUFSIZ在stdio.h文件中已有宏定义
	int readlen, writelen;

	while ((readlen = fread(buffer, 1, BUFSIZE, fp1)) > 0) {
		writelen = fwrite(buffer, 1, readlen, fp2);
		if (readlen != writelen) {
			return -3;
		}
	}

	fclose(fp1);
	fclose(fp2);
	return 0;
}

int main() {
	int ret = 0;
	
	//法一:使用向右的双斜杠
	//ret = copyfile("G:\\Code-Practice\\VS2019\\项目15\\P15-异常机制\\P15-异常机制\\dest.txt", "G:\\Code-Practice\\VS2019\\项目15\\P15-异常机制\\P15-异常机制\\src.txt");
	
	//法二:使用向左的单斜杠
	ret = copyfile("G:/Code-Practice/VS2019/项目15/P15-异常机制/P15-异常机制/dest.txt", "G:/Code-Practice/VS2019/项目15/P15-异常机制/P15-异常机制/src.txt");

	if (ret != 0) {
		switch (ret) {
		case -1:
			printf("打开原文件失败!\n");
			break;
		case -2:
			printf("打开目标文件失败!\n");
			break;
		case -3:
			printf("拷贝文件文件失败!\n");
			break;
		default:
			printf("出现未知情况!");
			break;
		}
	}
	system("pause");
}

意外发现:

在stdio.h文件中有 #define BUFSIZ  512 这么一个宏定义,
而我自定义的宏名称是BUFSIZE,所以,当我写成BUFSIZ 的时候,
编译器没有报错.