Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将字符串从二维指针数组分配到一维指针数组_C++_Arrays_Pointers_Dynamic Memory Allocation - Fatal编程技术网

C++ 将字符串从二维指针数组分配到一维指针数组

C++ 将字符串从二维指针数组分配到一维指针数组,c++,arrays,pointers,dynamic-memory-allocation,C++,Arrays,Pointers,Dynamic Memory Allocation,目前,我只需要使用数组和指针(因此没有结构或数据结构)来完成这项工作 我试图附加一个以数组表示的现有数据表。我这样做的方式是从文件中获取数据,并将其全部放入指针数组中,每当我想显示它时,通过函数将其转换为2d数组 我的问题是,现在我正在添加数据,当我的程序转到代码中向指针数组分配更多数据的部分时,它会崩溃 void appendCurTable(int oldSize, int newSize, string **ptTempData) { int oldRow, newRow;

目前,我只需要使用数组和指针(因此没有结构或数据结构)来完成这项工作

我试图附加一个以数组表示的现有数据表。我这样做的方式是从文件中获取数据,并将其全部放入指针数组中,每当我想显示它时,通过函数将其转换为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.";
    }

}
void appendCurTable(int oldSize、int newSize、string**ptTempData)
{
int oldRow、newRow;
字符串curFileName=“records/current.dat”;
oldRow=(oldSize/col);
newRow=(newSize/col);
i=0;
int a=i+旧尺寸;
readCurFile(curFileName,newSize);

对于(ir=oldRow;ir我找到了答案。我使用了一个不正确的数字来引用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++;
        }
    }
}
void appendCurTable(int oldSize、int tempSize、int newSize、string**ptTempData)
{
字符串curFileName=“records/current.dat”;
i=旧尺寸;
readCurFile(curFileName,newSize);

对于(ir=0;ir能否请您就您正在使用的值给出更多的具体示例?另一方面,我认为您需要增加a而不是I。我也尝试过增加a,但仍然没有解决它。这些值都是字符串数据类型。代码中有一些不一致之处。tablePtr来自哪里?然后在嵌套中ed for是基于a分配的,当您递增i和a时,nor tablePtr正在移动,在所有周期中,它们都指向同一个内存addr。tablePtr此时是一个全局数组。我刚刚尝试使用i本身和递增i。它仍然崩溃。您如何初始化tablePtr?