有人告诉我,这段代码有一些严重的问题,但我无法解决这些问题。你能告诉我这个吗?
static char BASED_CODE szFilter[] = "HTML Files (*.xls)|*.xls|All Files (*.*)|*.*||";
const char* filter = "HTML Files (*.xlsx)|*.xlsx|All Files (*.*)|*.*||";
size_t length = strlen(filter);
strcpy_s(szFilter, length + 1, filter);
答案 0 :(得分:2)
好吧,缓冲区溢出对我不利 - szFilter
不足以接收filter
。
为什么不使用std::string
,因为您使用的是C ++?这使得这些问题消失了。
答案 1 :(得分:1)
strcpy_s()
的第二个参数应该是目的地缓冲区的大小;你已经给它输入字符串的大小了。
但是当你在C ++工作时,你应该完全避免strcpy()
(等),并使用std::string
。
答案 2 :(得分:0)
szFilter
比filter
短,因此没有足够的地方可以将filter
复制到szFilter
。您当前的代码具有未定义的行为。