gpt4 book ai didi

c - 结构数组 : printing all members of each structure

转载 作者:太空宇宙 更新时间:2023-11-04 03:26:21 25 4
gpt4 key购买 nike

我正在尝试从列表中打印出每个结构的所有成员。我得到了下面的打印函数,可以从通用列表中打印出一个元素。

这是我的列表的结构定义,它在通用列表 ADT c 文件中:

struct list_type {
void *data;
int size;
int capacity;
int elementSize;
int (*comparePtr) (void *d1, void *d2);
};

所以在通用列表 ADT c 文件中,我有这个打印函数:

// client needs to send a pointer to a function capable of printing an element
void printl(ListType listptr, void (*printItem) (void *d)) {
int i;
for(i = 0; i < listptr->size; i++) {
// since we cannot use data[i], we need to calculate the address
// of the element to be sent to the client's print function
// since data is of type void, the formula is:
// the beginning address of the array + (offset x element size)
printItem(listptr->data + i * (listptr->elementSize) );
printf(" ");
}
printf("\n");
}

我这样调用我的 printl 函数:

printl(clientList, printItem);

在我的驱动程序文件中,有一个函数可以从列表中打印出一个元素:

void printItem (int* p) {
printf("%d", *p);
//`my attempt at printing the members of an individual structure from the list
// printf("%s", ((Client *)&p)[0]);
}

这是我的 Client 结构定义:

struct client_tag {
char id[5];
char name[30];
char email[30];
char phoneNum[15];
};

当我运行程序时,我得到了一堆奇怪的字符。我该如何解决这个问题?

最佳答案

假设你遗漏了这一行

typedef struct client_tag Client;

并假设 Client 的字符串保证以 null 终止,这就是想法:

void printItem (const Client* p) {
printf("%s\n", p->id);
}

关于c - 结构数组 : printing all members of each structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40903941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com