0

我想知道我需要什么函数将typedef struct指针的数据复制到typedef struct数组中。

typedef struct nodebase{
    char company[254];
    int counter;
    int rows;
    int column;
    struct nodebase *next;
}data;

我知道我可以使用memcpychar company但是对于 Integer 值呢?

我想做类似的事情:

int main()
{
data *p;
data item[] = {0};
int counter = 0;

/*Calling for the roster file to scan and store the data into `data *p` using fscanf*/
/*Code for singly linked-list*/
counter++ //This happens everytime the program has scanned 4 variables in the file
item[counter] = p; //This definitely is now working..   

编辑:我现在正在使用memcpy,之前的问题已经解决。

(谢谢您的回答!)

现在,我遇到了一个新问题,那就是在我的单链表中。

显然,名册文件中有 12 个“计数器”(也就是说,名册文件中有 48 个变量用于读取和存储数据)。

//Code for Singly Linked-list
int main()
{
data *p;
data *head;
data *tail;
data item[] = {0};
FILE *f;
int counter = 0;

head = NULL;
tail = NULL;

while(!feoe(f)
{
    p = malloc(sizeof(data));
/*Opens the roster file and Read & Store the data in the file to the respective variables inthe `typedef struct`.*/
    if(head ==NULL)
    {
        head = p;
    }
    else
    {
        tail->next = p;
    }
    tail = p;

    if(head!=NULL)
    {
        do{
           printf(":||%s||: Name",p->name); //Just to check if the linked list is working
           memcpy(&item[counter], p, sizeof(data*));
           counter++;
           p = p->next;
           p = NULL;
        }while(p!=NULL);
    }free(p);
}
}

问题:当打印名册文件中 12 个“集合”的每个名称时,程序正确打印了前 10 个集合,然后它突然停止工作。(在 Windows 上使用 Tiny C)

奇怪的是,当我用 VS2012 编译这个文件时,它工作正常。

4

2 回答 2

0

试试这个

memcpy(&item[counter], p, sizeof(data));

您的上述说法无效

item[counter] = p;

看类型

于 2013-10-03T08:52:58.610 回答
0

struct nodebase *如果您想将 a (aka data *)指向的内容复制到struct nodebase []( data []) 中,您确实可以使用 a memcpy

memcpy(&item[counter], p, sizeof(struct nodebase));

memcpy文档中所述:

源指针和目标指针指向的对象的底层类型与此函数无关;结果是数据的二进制副本。

因此,它是整数还是其他任何东西都没有关系。

但是,您将需要一个足够大的阵列。所以一定item要用足够大的大小来实例化你的数组。

于 2013-10-03T08:53:16.237 回答