将二维指针数组中的字符串分配给一维指针数组

     2023-02-21     21

关键词:

【中文标题】将二维指针数组中的字符串分配给一维指针数组【英文标题】:Assigning a string from a 2-D pointer array to a 1-D Pointer Array 【发布时间】:2016-02-20 22:29:02 【问题描述】:

目前,我只需要使用数组和指针来执行此操作(因此不需要结构或数据结构)

我正在尝试追加以数组表示的现有数据表。我这样做的方法是从文件中获取数据并将其全部放入一个指针数组中,只要我想显示它,我就会通过函数将其转换为二维数组。

我现在的问题是我正在附加数据,当我的程序进入我将更多数据分配到指针数组的代码部分时,我的程序崩溃了

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 创建包含原始数据和附加数据的新指针数组。

原谅我的混乱,我一直在到处修补,看看我所做的更改是否能解决它。经过所有这些修补后,我发现 for 循环中的部分导致了崩溃。

有没有办法使用指针数组来完成这项工作,或者我注定要失败?

【问题讨论】:

您能否就您使用的值提供更多具体示例?另一方面,我认为您需要增加 a 而不是 i。 我也试过增加 a 还是没解决。值都是字符串数据类型。 您的代码中有一些不一致的地方。 tablePtr 来自哪里?然后在嵌套的 for 中,您基于 a 进行分配,当您递增 i 并且 a 或 tablePtr 正在移动时,它们在所有周期中都指向同一个内存地址。 tablePtr 此时是一个全局数组。我只是尝试使用 i 本身并增加 i。它仍然崩溃.. 你是如何初始化tablePtr的? 【参考方案1】:

我找到了答案。我正在使用将 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++;
        
    

【讨论】:

将二维数组指针传递给c ++中的函数[重复]

】将二维数组指针传递给c++中的函数[重复]【英文标题】:passingan2darraypointertoafunctioninc++[duplicate]【发布时间】:2018-12-0805:05:57【问题描述】:我知道如何通过以下代码将一维数组指针传递给函数voidfiddleWithArray(int*);intmain()intlist[1... 查看详情

如何将二维数组的一维分配给VBA中的新一维数组

】如何将二维数组的一维分配给VBA中的新一维数组【英文标题】:Howtoassignonedimensionofa2darraytoanew1darrayinVBA【发布时间】:2012-01-1300:09:25【问题描述】:我需要能够创建一个新数组并将其分配给another2darray(atsomeelement)例子array1(0)=1ar... 查看详情

二维数组赋值给一维数组,子函数返回获取临时变量的指针导致问题(代码片段)

1说明在C语言中,如果从子函数获取指针,然后将指针拷贝给其他数据,容易出现拷贝不成功。这是因为子函数的变量,分配在栈上,当子函数退出时,对应的变量也生命周期结束。如果此时在将指针指向... 查看详情

怎么让一个二维指针指向一个二维数组

...面又有地址,你仔细看看,数组有地址,指针数组里面的字符串如("12")也是有地址的,这样就需要用一个二级指针指向它了,就是二级寻址,这是*p就不再是元素,就变成字符串"12"的首地 查看详情

无法分配给 C++ 中的指针数组

...并将每个项目的指针保留在数组中。顺便说一下,数组是二维的。所以我需要总结的是:指针[1][4]=PinterToAnItem;原因是我需要稍后删除该项目,所以我想保留指针并直接转到 查看详情

指针与一维数组和二维数组以及字符串指针数组的学习笔记

...指针的关系,谈论了二维数组和指针之间的关系,讨论了字符串数组指针数组和指针之间的关系,代码中以给出定义的方法和简单的使用,但是有些使用方法并没有列出,如果需要,请自行加入printf调试即可。转贴请注明出处,... 查看详情

一维数组和一级指针浅析

...,这个名字成为数组  其实我们可以把数组看成是一个字符串,就像是C++中的stri 查看详情

数组参数和指针参数

...传递数组时,将数组名看做常量指针传数组首元素地址3.二维数组参数同样存在退化的问题,二维数组可以看做是一维数组,二维数组中的每个元素是一维数组4.二维数组参数中第一维的参数可以省略5.C语言中无法向一个函数传... 查看详情

为啥可以将字符串分配给 char* 指针,但不能分配给 char[] 数组?

】为啥可以将字符串分配给char*指针,但不能分配给char[]数组?【英文标题】:Whycanastringbeassignedtoachar*pointer,butnottoachar[]array?为什么可以将字符串分配给char*指针,但不能分配给char[]数组?【发布时间】:2011-10-1119:34:42【问题描... 查看详情

将二维数组分配为结构成员

】将二维数组分配为结构成员【英文标题】:assigning2Darrayasastructmember【发布时间】:2022-01-0217:31:30【问题描述】:我需要创建一个以2Dbool数组为成员的结构,因此我将其设为双指针,如下所示。不,每当我尝试将二维数组对象... 查看详情

如何使用 C++ 中的指针动态分配和解除分配二维数组?

】如何使用C++中的指针动态分配和解除分配二维数组?【英文标题】:Howtodynamicallyallocateanddeallocatea2Darrayusingpointersinc++?【发布时间】:2020-10-1413:32:53【问题描述】:我想使用指针动态分配然后解除分配二维数组。我的想法是创... 查看详情

c语言二级指针作为输入(二维数组|二维数组内存大小计算|指针跳转步长问题)(代码片段)

文章目录一、二维数组内存大小计算二、二维数组内存大小意义一、二维数组内存大小计算给定一个二维数组:该二维数组中有444个一维数组,每个一维数组有101010个char数据;//I.二维数组chararray[4][10]="abc","123","258&... 查看详情

c语言数组(一维数组形参退化|二维数组形参退化|函数形参等价关系)(代码片段)

文章目录一、一维数组形参退化二、二维数组形参退化三、数组形参等价关系一、一维数组形参退化C中将一维数组作为参数,传递到函数中,该一维数组会退化为指针;将intarray[10]数组,作为参数,传递到函数中,voidfun(intarray[1000])与voi... 查看详情

c语言中二维数组行指针是啥

先从存储的角度对二维数组作一个全面的了解。二维数组在内存中的存储,是按照先行后列依次存放的。从内存的角度看,可以这样说,二维数组其实就是一个一维数组,在内存中没有二维的概念。如果把二维数组的每一行看成... 查看详情

c++如何用new动态开辟一个一维字符数组

...符数组步骤如下:1、new分配内存,通用格式是:类型名*指针=new类型名;如 int*pi=newint;类型可以是基本数据类型、结构体、自定义类等。2、delete来释放内存,通用格式是:delete指针名;注意delete与new配对,只能释放new分配的... 查看详情

声明指向多维数组的指针并分配数组

...会那么难。也许只是我累了..基本上,我想声明一个指向二维数组的指针。我想这样做,因为最终我将不得不调整数组的大小。我用一维数组成功完成了以 查看详情

多维数组与指针(代码片段)

...多维数组的指针比一维数组的指针要复杂一些。可以认为二维数组是数组的数组。例:定义:inta[3][4]=1,2,3,4,5,6,7,8,9,10,11,12;则二维数组a是由3个一维数组所组成的,设二维数组的首行首地址为2000,表示形式含义... 查看详情

如何利用memcpy将二维指针复制给一维指针?

...of(int))代码可以运行,但是tmp1没有被赋值,请问:如何将二维指针tmp2通过memcpy函数复制给一维指针tmp1?非常感谢~很简单啊,就跟你分配空间的顺序一样啊:for (int i=0; i<3; ++i)    memcpy( tmp1 ... 查看详情