#include #include #include typedef struct litem_t { char *orderno; char *name; float price; int count; } litem; typedef struct llist_t { struct litem_t *item; struct llist_t *next; } llist; llist *addItem(llist * alist, char *orderno, char *name, float price, int count, float sum) { if (alist == NULL) { // neue liste anlegen! alist = (llist *) calloc(1,sizeof(llist)); alist->next = NULL; } else { llist *newlist = (llist *) calloc(1,sizeof(llist)); newlist->next = alist; alist = newlist; } alist->item = (litem *) calloc(1,sizeof(litem)); alist->item->orderno = strdup(orderno); alist->item->name = strdup(name); alist->item->price = price; alist->item->count = count; if (price * count != sum) { printf("error: price * count != sum \n"); } return alist; } void dumpList(llist * alist) { while (alist != NULL) { printf("%18s %40s %8.2f %03i %8.2f\n", alist->item->orderno, alist->item->name, alist->item->price, alist->item->count, alist->item->count * alist->item->price); alist = alist->next; } } void getSumAndCounter(llist * alist, float *sum, int *count) { while (alist != NULL) { *sum += (alist->item->count * alist->item->price); *count += alist->item->count; alist = alist->next; } } #define BUFSIZE 1024 char* getstrdelim(char delim, FILE *pFile){ char* buf = calloc(BUFSIZE,sizeof(char)); size_t pos=0; while (pos