我在C++中有两个问题。一个静态变量是全局变量吗?
首先,是一个全局变量和静态变量一样吗?静态变量有什么特别之处?
其次,我居然代码的项目,如果我不使用静态变量,我的代码给我发了一个错误:
运行时检查失败#2 - 堆栈围绕变量“szData”是 损坏。
这个错误出现因sprintf的,因为我删除它,一切都确定..
bool CreateFile(MyCards** ppCards)
{
fstream ficCar;
static char szData[31];
ficEmployes.open("./my_cards.dat", ios::in | ios::binary);
if (!ficCar.fail())
{
ficCar.close();
return false;
}
else
{
sort(ppCards, ppCards + 26271, OrderedCards);
ppCards.open("./nom_cartes.index", ios::out | ios::binary);
if (ficCar.fail())
{
throw "Error";
}
else
{
for (int indice = 0; indice < 10123; indice++)
{
sprintf(szData, "%-20s %010d \n",
ppCards[indice]->GetNom(),
ppCards[indice]->GetPosition());
ficCar.write(szEnregistrement, 30);
}
ficCar.close();
return true;
}
}
}
任何人都可以帮我吗?谢谢!
我无法发现该代码中的任何'静态' – user463035818
如果'ficCar'没有失败你关闭它并返回,只有当它失败时,你继续使用它,这真的是你想要的吗? – user463035818
糟糕!我犯了一个错误。我编辑了我的代码,它是静态字符szData [31]; – SurveyVisual