I get an error saying parse error before category Type on line 258 not sure why currentItem = CategoryType->headItem; im trying to set the headItem to the start of the linked list there is my structs I posted another thread with the full code but nobody has responded Code: int loadData(GJCType* menu, char* menuFile, char* submenuFile) { /*pointer for malloc*/ CategoryType *newCat, *currentCat, *prevCat ; ItemType *newItem, *currentItem, *prevItem; /*declaration of variables*/ int CountNoLines = 0; char temp[LINE_LENGTH]; char tempf2[LINE_LENGTH]; /* variables for tokenizer for menu file*/ char *catID; char *catType; char *catName; char *catDescription; char *line; int count; /* variables for sub menu*/ char *itemIDPtr; char *itemNamePtr; char *itemDescriptionPtr; char *dollarPtr; char *centsPtr; float dollarInt; float centInt; /* declare file pointers to files*/ FILE *f1; FILE *f2; /* opening the menu and submenu for reading*/ f1 = fopen(menuFile, "r"); f2 = fopen(submenuFile, "r"); /* check to see if the filuse exists*/ if(f1 ==NULL || f2 == NULL) { /* check whether both files have existed or typed in correctly*/ if(f1 == NULL && f2 == NULL) { printf("Both files do not exist %s %s\n",menuFile,submenuFile); } /* check for each file existance*/ else if (f1 == NULL) { printf("%s does not exist\n\n",menuFile); } /* check for each file existance*/ else if(f2 == NULL) { printf("%s does not exist\n\n", submenuFile); } printf("EXITING PROGRAM ERROR!\n\n"); return ERRORCODE; /* cannot proceed*/ } /* counts how many fields there are in the file*/ while(fgets(temp, LINE_LENGTH +2, f1)!=NULL) { currentCat = menu->headCategory; newCat = malloc(sizeof(CategoryType)); if(prevCat == NULL) { menu->headCategory = newCat; } /* else { prevCat->nextCategory = newCat; */ /* stores the catID but also checks if there is a duplicate*/ catID = strtok(temp, "|"); /* checking whether it tokenizez*/ /* if(catID == NULL) { printf("CatID missing\n"); }*/ strcpy(newCat->categoryID, catID); /*checks for a duplication of the id field*/ if(!checkDuplicationID(menu, catID)) { return ERRORCODE; } /* gets the second field and tokenizez it*/ catType = strtok(NULL, "|"); newCat->drinkType = catType[0]; /* checking whether it tokenizez*/ if(catType == NULL) { printf("CatType missing\n"); } catName = strtok(NULL, "|"); strcpy(newCat->categoryName, catName); /* checking whether it tokenizez*/ if(catName == NULL) { printf("CatName missing\n"); } catDescription = strtok(NULL, "\n"); strcpy(newCat->categoryDescription, catDescription); /* checking whether it tokenizez*/ if(catDescription == NULL) { printf("CatDescription missing\n"); } /* checks the string length of the field*/ if((strlen(catID) >ID_LEN) || (strlen(catType) >MAX_NAME_LEN) || (strlen(catDescription) >MAX_DESC_LEN)) { printf("Wrong data format\n\n"); return ERRORCODE; } /* put the pointer to the start of the list*/ /*newCat->nextCategory = NULL; newCat->headItem = NULL; newCat->numItems = 0; prevCat = newCat;*/ /* currentCat = menu->headCategory; prevCat = NULL; if(prevCat == NULL) { menu->headCategory = newCat; newCat->nextCategory = currentCat; } else { prevCat->nextCategory=newCat; newCat->nextCategory = currentCat; }*/ while(currentCat !=NULL) { printf("%s %c %s %s\n", currentCat->categoryID, currentCat->drinkType,currentCat->categoryName, currentCat->categoryDescription); currentCat = currentCat->nextCategory; } } /*end of while loop*/ while(fgets(tempf2, LINE_LENGTH +2, f1)!=NULL) { currentItem = CategoryType->headItem; newItem = malloc(sizeof(ItemType)); if(prevItem == NULL) { /* menu->headItem = newItem;*/ } } /*end of while loop*/ /* close both files after reading*/ if(fclose(f1)!=0 || fclose(f2)!=0) { fprintf(stderr, "Error in closing files\n"); } return EXIT_SUCCESS; } Code: #ifndef GJC_H #define GJC_H /* System-wide header files. */ #include <stdio.h> #include <stdlib.h> #include <string.h> /* System-wide constants. */ #define ID_LEN 5 #define MIN_NAME_LEN 1 #define MAX_NAME_LEN 25 #define MIN_DESC_LEN 1 #define MAX_DESC_LEN 250 #define NUM_PRICES 3 #define HOT 'H' #define COLD 'C' #define ERRORCODE 1 #define VALID 0 #define LINE_LENGTH 500 #define TOKEN_PRODUCT 4 typedef struct category* CategoryTypePtr; typedef struct item* ItemTypePtr; /* Structure definitions. */ typedef struct price { unsigned dollars; unsigned cents; } PriceType; typedef struct item { char itemID[ID_LEN + 1]; char itemName[MAX_NAME_LEN + 1]; PriceType prices[NUM_PRICES]; char itemDescription[MAX_DESC_LEN]; ItemTypePtr nextItem; } ItemType; typedef struct category { char categoryID[ID_LEN + 1]; char categoryName[MAX_NAME_LEN + 1]; char drinkType; /* (H)ot or (C)old. */ char categoryDescription[MAX_DESC_LEN]; CategoryTypePtr nextCategory; ItemTypePtr headItem; unsigned numItems; } CategoryType; typedef struct gjc { CategoryTypePtr headCategory; unsigned numCategories; } GJCType; int commandLineArguments(int argc, char* argv[]); int countToken(FILE *fp, char* temp, int tokenPerLine); #endif