现在,我需要只使用数组和指针(所以没有结构或数据结构)
我正在尝试附加一个表示为数组的现有数据表。我这样做的方法是从文件中获取数据并将其全部放入指针数组中,每当我想显示它时,我将通过函数转换为2d数组。
我现在的问题是我正在追加数据,当我转到代码中我将更多数据分配到指针数组时,我的程序崩溃了
void appendCurTable(int oldSize, int newSize, string **ptTempData)
{
int oldRow, newRow;
string curFileName = "records/current.dat";
oldRow = (oldSize/col);
newRow = (newSize/col);
i=0;
int a = i+oldSize;
readCurFile(curFileName, newSize);
for(ir=oldRow;ir<newRow;ir++)
{
for(ic=0;ic<col;ic++)
{
*(tablePtr + a) = ptTempData[ir][ic];
i++;
}
}
}
//How tablePtr is initialized
void readCurFile(string a, int size)
{
i = 0;
ifstream infile;
infile.open(a.c_str());
tablePtr = new string[size];
if(tablePtr==NULL)
{
cout<<"Insufficient Memory Allocation.\n Program will terminate.";
exit(1);
}
if(infile.is_open())
{
while(infile.good())
{
getline(infile, *(tablePtr +i), ';');
i++;
}
infile.close();
}
else
{
cout<<"Error opening file.";
}
}
readCurFile创建新的Pointer数组,该数组将包含原始数据和附加数据。
原谅这种混乱,我一直在这里修补,看看我做出的改变是否会解决它。在所有这些修补之后,我发现for循环中的部分导致了崩溃。
有没有办法让这个用指针数组工作还是我注定了?
答案 0 :(得分:0)
我找到了答案。我使用引用ir来表示错误的数字。 ir函数应该是我在函数Append中声明的i。
正确的代码:
void appendCurTable(int oldSize, int tempSize, int newSize, string **ptTempData)
{
string curFileName = "records/current.dat";
i=oldSize;
readCurFile(curFileName, newSize);
for(ir=0;ir<tempSize;ir++)
{
for(ic=0;ic<col;ic++)
{
tablePtr [i] = ptTempData[ir][ic];
i++;
}
}
}