我收到此错误:


  变量“ 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/

10-16 04:16