Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   structs error (http://www.go4expert.com/forums/structs-error-t791/)

musicmancanora4 8May2006 11:00

structs error
 
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


shabbir 8May2006 22:37

Re: structs error
 
I have replied to your thread. Closing duplicate thread.


All times are GMT +5.5. The time now is 06:34.