Ini*_*nit 0 c++ initialization
我收到此错误:
变量"thename"正在使用而未初始化
这是我的代码:
char *thename;
cm++;
sprintf(thename, "tutmap%d.map", cm);
Run Code Online (Sandbox Code Playgroud)
您正在使用该变量而不初始化它,并且运行此代码将是Undefined Behavior.
也许你的意思是:
char thename[42];
cm++;
sprintf(thename, "tutmap%d.map", cm);
Run Code Online (Sandbox Code Playgroud)
如果你有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();
}
}
Run Code Online (Sandbox Code Playgroud)
"固定"意味着"固定大小",而不是"与破碎相对".:)