我收到此错误:
变量“ thename”的使用没有初始化
这是我的代码:
char *thename;
cm++;
sprintf(thename, "tutmap%d.map", cm);
最佳答案
您正在使用变量而未对其进行初始化,因此运行此代码将为“未定义行为”。
也许您的意思是:
char thename[42];
cm++;
sprintf(thename, "tutmap%d.map", cm);
如果您有snprintf,则下面的函数将记录您保证(“声明”)缓冲区足够大的文件,然后检查缓冲区长度并在出错时中止:
template<int N>
void fixed_sprintf(char (&array)[N], char const *format, ...) {
va_list args;
va_start(args, format);
int used = vsnprintf(array, N, format, args);
va_end(args);
if (used == N - 1) {
throw whatever_exception_type_you_like("buffer too small");
// or even:
abort();
}
}
“固定”的意思是“固定大小”,而不是“与破损相反”。 :)
关于c++ - 使用C++变量而无需初始化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6237767/