将字符串从2-D指针数组分配给1-D指针数组

时间:2016-02-20 22:29:03

标签: c++ arrays pointers dynamic-memory-allocation

现在,我需要只使用数组和指针(所以没有结构或数据结构)

我正在尝试附加一个表示为数组的现有数据表。我这样做的方法是从文件中获取数据并将其全部放入指针数组中,每当我想显示它时,我将通过函数转换为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循环中的部分导致了崩溃。

有没有办法让这个用指针数组工作还是我注定了?

1 个答案:

答案 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++;
        }
    }
}