Thread: trying to print the linkedlist for 2+ objects it prints infinite time

  1. #1
    Registered User
    Join Date
    May 2021
    Posts
    1

    trying to print the linkedlist for 2+ objects it prints infinite time

    Code:
    #include<stdio.h>
    #include<stdlib.h>
    #include<String.h>
    #include<ctype.h>
        /*car struct */
    typedef struct car {
      unsigned int plate_number;
      unsigned int vin_number;
      char *Manufacturer_Name;
      char *model;
      char *colour;
      unsigned int year_Manufactured;
      unsigned int realseYear;
      unsigned int payment;
      unsigned int value;
      unsigned int engine_power;
      struct car *next;
    
    } car;
    
    car *cars;
    
    /*function to scan and check the int input */
    int CheckIntinput(unsigned int *a)
    {
    
      char temp[20];
      int i;
      int flag = 1;
      while (1) {
        scanf("%s", temp);
        for (i = 0; i < strlen(temp); i++) {
          if (!isdigit(temp)) {
            flag = 0;
            printf
                ("You did not enter a number , Please enter an argument's number\n");
            break;
          }
        }
        if (flag) {
          break;
        }
        flag = 1;
      }
    
      *a = strtoul(temp, NULL, 10);
      return 1;
    }
    
    /*function to check if the information of the car are correct */
    void checkifcarnputiscorrect(unsigned int *plate_number,
                                 unsigned int *vin_number,
                                 unsigned int *year_Manufactured,
                                 unsigned int *realseYear, unsigned int *payment,
                                 unsigned int *value, unsigned int *engine_power)
    {
      int flag = 1;
    
      while (1) {
        printf("enter plate number :");
        CheckIntinput(plate_number);
        if (*plate_number > 9999999 || *plate_number < 1000000) {
          printf("plate number should be 7 digits try again \n");
          flag = 0;
        }
        /*
           if(!checkifcaralreadyinlist(*plate_number))
           {
           printf("the car is already in the list \n");
           flag=0;
           } */
        if (flag) {
          break;
        }
        flag = 1;
      }
    
      while (1) {
        printf("enter vin number :");
        CheckIntinput(vin_number);
        if (*vin_number > 99999 || *vin_number < 10000) {
          printf("vin_number should be 5 digits try again\n");
          flag = 0;
        }
        if (flag) {
          break;
        }
        flag = 1;
      }
    
      while (1) {
        printf("enter year manfucatured :");
        CheckIntinput(year_Manufactured);
        if (*year_Manufactured > 9999 || *year_Manufactured < 1000) {
          printf("yeaer_manfucatured should be 4 digits try again\n");
          flag = 0;
        }
        if (flag) {
          break;
        }
        flag = 1;
      }
    
      while (1) {
        printf("enter realese year :");
        CheckIntinput(realseYear);
        if (*realseYear > 9999 || *realseYear < 1000) {
          printf("realse year  should be 4 digits try again \n");
          flag = 0;
        }
        if (flag) {
          break;
        }
        flag = 1;
      }
    
      while (1) {
        printf("enter payment :");
        CheckIntinput(payment);
        if (*payment > 9999999 || *payment < 0) {
          printf("payment should be between 0-9999999 digits\n");
          flag = 0;
        }
        if (flag) {
          break;
        }
        flag = 1;
      }
    
      while (1) {
        printf("enter value :");
        CheckIntinput(value);
        if (*value > 9999999 || *value < 0) {
          printf("value should be between 0-9999999 digits\n");
          flag = 0;
        }
        if (flag) {
          break;
        }
        flag = 1;
      }
    
      while (1) {
        printf("enter engine_power :");
        CheckIntinput(engine_power);
        if (*engine_power > 9999 || *engine_power < 1000) {
          printf("engine power be 4 digits\n");
          flag = 0;
        }
        if (flag) {
          break;
        }
        flag = 1;
      }
    }
    
    /*function to scan and check if the input is only chars */
    void Checkstringifonlychars(char *str)
    {
      int i;
      int flag = 1;
      while (1) {
        scanf("%s", str);
        for (i = 0; i < strlen(str); i++) {
          if (!isalpha(str)) {
            flag = 0;
            printf("wrong input try input only chars.");
            break;
          }
        }
        if (flag) {
          break;
        }
        flag = 1;
      }
    
    
    }
    
    int CheckLonginput(unsigned long *a)
    {
    
      char temp[20];
      int i;
      int flag = 1;
      while (1) {
        scanf("%s", temp);
        for (i = 0; i < strlen(temp); i++) {
          if (!isdigit(temp)) {
            flag = 0;
            printf
                ("You did not enter a number , Please enter an argument's number\n");
            break;
          }
        }
        if (flag) {
          break;
        }
        flag = 1;
      }
    
      *a = strtoul(temp, NULL, 10);
      return 1;
    }
    
    /*creating empty car list */
    
    int createCarList()
    {
      cars = (car *) malloc(sizeof(car));
      if (!cars) {
        return 0;
      }
      cars->next = NULL;
      return 1;
    }
    
    int addNewCar()
    {
      unsigned int plate_number, vin_number, realseYear, year_Manufactured, payment,
          value, engine_power;
      char *Manufacturer_Name, *model, *colour, c;
      car *temp = NULL;
      car *p = NULL;
      temp = NULL;
      temp = (car *) malloc(sizeof(car));
      while (1) {
        checkifcarnputiscorrect(&plate_number, &vin_number, &year_Manufactured,
                                &realseYear, &payment, &value, &engine_power);
    
        Manufacturer_Name = (char *) malloc(10 * sizeof(char));
        printf("enter Manufacturer Name:");
        Checkstringifonlychars(Manufacturer_Name);
    
        model = (char *) malloc(10 * sizeof(char));
        printf("enter model:");
        Checkstringifonlychars(Model);
    
        colour = (char *) malloc(5 * sizeof(char));
        printf("enter colour of the car:");
        Checkstringifonlychars(colour);
    
        temp->plate_number = plate_number;
        temp->vin_number = vin_number;
        temp->Manufacturer_Name = Manufacturer_Name;
        temp->model = model;
        temp->colour = colour temp->year_Manufactured = year_Manufactured;
        temp->realseYear = realseYear;
        temp->payment = payment;
        temp->value = value;
        temp->engine_power = engine_power;
        temp->next = NULL;
    
        if (cars == NULL) {
          cars = temp;
        } else {
          p = cars;
          while (p->next != NULL) {
            p = p->next;
          }
          p->next = temp;
        }
    
        printf("\n done adding? if yes press y ");
        scanf(" %c", &c);
        if (c == 'y') {
          break;
        }
    
    
      }
      if (cars == NULL) {
        return 0;
      }
      return 1;
    }
    
    void printAllCars(void)
    {
    
      car *tmp = cars;
    
      if (!cars) {
        printf("No Cars in list to Shown\n");
        return;
      }
    
      printf("\nCar List :\n\n");
      printf
          ("LicenseNum | chassisNum | makerName | modelName | color | productionYear | onRoadYear |  price  |  paidMoney  | engine");
      printf
          ("\n----------------------------------------------------------------------------------------------------------------------\n");
      while (tmp != NULL) {
        printf("%-11u ", tmp->plate_number);
        printf("%-13u ", tmp->vin_number);
        printf("%-11s ", tmp->Manufacturer_Name);
        printf("%-11s ", tmp->model);
        printf("%-7s ", tmp->colour);
        printf("%-16u ", tmp->year_Manufactured);
        printf("%-11u ", tmp->realseYear);
        printf("%-9u ", tmp->value);
        printf("%-14u ", tmp->payment);
        printf("%u\n", tmp->engine_power);
        tmp = tmp->next;
      }
    
      printf("\n");
    }
    
    int main()
    {
      createCarList();
      addNewCar();
      printAllCars();
      return 0;
    }
    Last edited by Salem; 05-31-2021 at 08:51 AM. Reason: Removed train-wreck colour scheme

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 4
    Last Post: 01-21-2015, 12:14 PM
  2. Replies: 7
    Last Post: 10-22-2011, 01:13 PM
  3. infinite compile time
    By bobknows in forum C++ Programming
    Replies: 5
    Last Post: 02-26-2011, 08:14 PM
  4. Replies: 13
    Last Post: 05-08-2006, 11:14 AM
  5. print driver that prints to a PDF file
    By planet_abhi in forum C# Programming
    Replies: 2
    Last Post: 11-11-2005, 12:53 AM

Tags for this Thread