0

有人告诉我,这段代码有一些严重的问题,但我无法解决这些问题。各位大佬能不能教教我这个?

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

3 回答 3

2

好吧,缓冲区溢出向我扑来——szFilter不够大,无法接收filter

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

于 2011-04-19T11:47:46.210 回答
1

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

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

于 2011-04-19T11:49:55.147 回答
0

szFilter比 短filter,所以没有足够的地方复制filterszFilter. 您当前的代码具有未定义的行为。

于 2011-04-19T11:51:44.850 回答