多字节字符序列无效
程序员文章站
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 的时候,
编译器没有报错.
上一篇: 用python的列表构建一棵树
下一篇: submit和button的区别
推荐阅读
-
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException :1字节的 UTF-8 序列的字节 1 无效
-
Exception: 3 字节的 UTF-8 序列的字节 2 无效. 异常的解决办法
-
多字节字符序列无效
-
dom4j解析创建Xml:org.dom4j.DocumentException: 2字节的UTF-8序列的2无效
-
dom4j解析创建Xml:org.dom4j.DocumentException: 2字节的UTF-8序列的2无效
-
关于遇到Cause: org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 5; 1 字节的 UTF-8 序列的字节 1 无效。的问题
-
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效。