编译成功,但提示多字节字符序列无效
编译环境 :VS 2019
报错截图:![在这里插入图片描述](https://img-blog.csdnimg.cn/20200225105855598.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA1MDE2MQ==,size_16,color_FFFFFF,t_70)
修改方法:
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];
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");
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 的时候,
编译器没有报错.