(C) 结构数组并将数据移动到其中



我想做以下事情:

结构定义:

struct mystruct {
     char cArr[500];
}

全局:

    struct mystruct **ptr;
    int count = 0;

主要:

ptr = malloc(20*sizeof(struct test *));
for (int i = 0; i != 20 ; i++) {
    ptr[i] = malloc(sizeof(struct test));
}

在一些被调用20次的函数中:

char burp[500];
//put whatever I want in burp;
ptr[count]->cArr = burp //is this right? Or do I have to memcpy to it, and if so how?
count++;

所以在最后,我将用我想要的字符顺序地填充mystruct的数组。我试着用char**做这件事,但没有成功;我现在把它包装在一个结构中,因为它可以帮助我可视化正在发生的事情

所以我想要一个char[500]的全局数组,每次调用函数时,它都会将该char[500'放入索引(要么传递到函数中,要么也是全局的)。

欢迎提出任何建议;Ofc我需要在最后释放数组的每个索引。

谢谢!

编辑:

像这样的东西吗

memcpy(ptr[count]->cArr, burp, 500);

那么工作?

#include <stdio.h>
#include <stdlib.h>
struct  mystruct
 {
    char *cArr; 
  // U were trying to assign array using = operator
  // Remember its not like in STL where u can perform deep copy of a vector    
};

 struct mystruct **ptr;

 int count = 0;

 int main()
{   int i;
    ptr = malloc(20*sizeof(struct mystruct *));
    for (i = 0; i != 20 ; i++) 
{
    ptr[i] = malloc(sizeof(struct mystruct));
}
   char burp[500]="No this is not correct boy.";
  //put whatever I want in burp;
  (*ptr+count)->cArr = burp ; 
   // Assigning pointer to a pointer , OK. Remember pointer != Array.

  //is this right? Or do I have to memcpy to it, and if so how?

  //count++; // Has no use in your code, enclose in a loop to then use it.

  printf("%sn",(*ptr + count)->cArr); // This works , I think.

 }

对于阵列,即char cArr[500]、

如果你想使用memcpy,你可以使用它:

memcpy((*ptr+count)->cArr,burp,500);

Strcpy也起作用:

strcpy((*ptr+count)->cArr,burp);

有两点很重要:

  1. 允许将指针分配给指针,但不允许数组的深度复制。

  2. **ptr是一个双指针。因此,(*ptr+count)或ptr[count]是指向结构的指针。

你的答案不需要第二点。

您可以使用strcpy来复制字符串。

strcpy(ptr[count]->cArr,burp);

但是strcpy终止于null字符。因此,请确保您的字符串(即打嗝)已正确初始化。

我想您所想做的就是在结构中存储一些文本以供以后使用。

struct mystruct {
   char carr[500];
}
struct mystruct *ptr = NULL;
int count = 0;
main{
    ...
    ptr = malloc( 20 * sizeof(struct test) );
    //Function call func()
    ...
    //After performing work
    free( ptr );
}
//Some function
func() {
    char burp[500];
    // burp has some data fed
    memcpy( ptr[count]->carr, burp, 500 );
}

相关内容

  • 没有找到相关文章

最新更新