这段代码出了什么问题

时间:2011-04-19 11:46:14

标签: c++ strcpy

有人告诉我,这段代码有一些严重的问题,但我无法解决这些问题。你能告诉我这个吗?

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);

3 个答案:

答案 0 :(得分:2)

好吧,缓冲区溢出对我不利 - szFilter不足以接收filter

为什么不使用std::string,因为您使用的是C ++?这使得这些问题消失了。

答案 1 :(得分:1)

strcpy_s()的第二个参数应该是目的地缓冲区的大小;你已经给它输入字符串的大小了。

但是当你在C ++工作时,你应该完全避免strcpy()(等),并使用std::string

答案 2 :(得分:0)

szFilterfilter短,因此没有足够的地方可以将filter复制到szFilter。您当前的代码具有未定义的行为。