Я пытаюсь распечатать все элементы каждой структуры из списка. Мне были предоставлены следующие функции печати, чтобы распечатать элемент из общего списка.Массив структур: печать всех элементов каждой структуры
Вот определение структуры моего списка, который в общем списке ADT гр файла:
struct list_type {
void *data;
int size;
int capacity;
int elementSize;
int (*comparePtr) (void *d1, void *d2);
};
Так в общем списке ADT файл Си, у меня есть эта функция печати:
// 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);
в моем файле драйвера, есть функция распечатки в Elemen т из списка:
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];
};
Когда я запускаю программу, я получаю кучу странных персонажей. Как это исправить?
Мы должны видеть, как 'printl' является и что такое определение структуры, и что такое ListType. – Schwern
http://stackoverflow.com/help/mcve - Как создать минимальный, полный, проверяемый пример – Elyasin
@ Шварн Хорошо, я предоставил их. Надеюсь, я дал достаточно, мой код довольно длинный, поэтому я не был уверен, сколько нужно быть включенным. – Jasmine