Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.c
- // ex6
- //
- // Created by Harel Shattenstein on 27/12/2018
- // Copyright © 2018 Harel Shattenstein. All rights reserved
- //
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define MAX_USERNAME 10
- #define MAX_PASSWORD 15
- #define MIN_USERNAME 3
- #define MIN_PASSWORD 3
- #define MIN_AGE 18
- #define MAX_AGE 100
- #define MIN_LOGIN_INFO 3
- #define MAX_INFO 211
- #define MAX_HOBBIES 8
- #define MAX 10
- #define ID_LENGTH 10
- #define NAME_LENGTH 15
- #define NAME_LENGTH 15
- #define DESCRIPTION 211
- #define MAX_LINE_LEN 1000
- int const TRUE = 1;
- int const FALSE = 0;
- typedef struct {
- char *id;
- char *name;
- char *surname;
- int age;
- char gender;
- char *username;
- char *password;
- char *description;
- char *hobbies;
- }User;
- typedef struct Women {
- User *userWoman;
- struct Women *next;
- }Women;
- enum hobbies { Baseball = 1, Basketball, Bicycle, Books, Drawing, Gym, Movies, Poetry };
- User** readInput(User** headMen,int* numberOfMen,Women** head);
- void freeWomen(Women** head);
- void freeMen(User** headMen, int* numberOfMen);
- void searchId(Women** head, User** headMen, int* numberOfMen, char* enteredId);
- void freeUser(User* userTofree);
- void printListMen(User **head, int* size);
- User** removeMan(User** headMen, int* numberOfMen, char* existUser);
- void manu2(User* logedMan, User* logedWoman, Women** head, User** headMen, int* numberOfMen);
- void printUser(User* user);
- void reinitialize(int* vaildHobbies);
- void findMatchman(int minAge, int maxAge, User* logedWoman, User** headMen, int* numberOfMen);
- void findMatchWoman(int minAge, int maxAge, User* logedMan, Women** head);
- void printHobbies(User* user);
- int sumOfHobbies(int* vaildHobbies, int* vaildHobbies2, char* hobbies, char* hobbies2, int* matchHobbies);
- const char* getHobbyName(enum hobbies hobbey);
- void getVaildHobbies(int* vaildHobbies, char* hobbies);
- User* getWomanUser(char* existUser, Women** head);
- User* getManUser(char* existUser, User** head, int* numberOfMen);
- void manu(Women **head, User** headMen, int* numberOfMen);
- void push(Women **head, User *woman);
- void printList(Women **head);
- int searchWomanUser(char* existUser, Women** head);
- int searchWomanPass(char* existPassword, Women** head, char* existUser);
- int searchManUser(char* existUser, User** head, int* numberOfMen);
- int searchManPass(char* existPassword, User** head, int* numberOfMen, char* username);
- int search(Women** head, User** headMen, int* size, char* existUser, char* existPassword);
- Women** removeWoman(Women** head, char* existUser);
- void newMan(User **headMan, int *size, char *id, char *name, char *surname,
- int age, char gender, char *username,
- char *password, char *description, char *hobbies);
- User* newUser(char *id, char *name, char *surname,
- int age,
- char gender,
- char *username,
- char *password,
- char *description,
- char *hobbies);
- User** realocateHeadMen(User** headMen, int* size, char *id, char *name, char *surname,
- int age, char gender, char *username,
- char *password, char *description, char *hobbies);
- int main() {
- fflush(stdin);
- Women **head = NULL;
- Women *headWoman = NULL;
- User **headMen = NULL;
- int *numberOfMen, mens = 0;
- numberOfMen = &mens;
- head = &headWoman;
- headMen = readInput(headMen, numberOfMen, head);
- /*
- headMen = realocateHeadMen(headMen, numberOfMen, "012345678", "danny", "cohen", 22, 'M', "danny1993", "123", "Nice person", "1,2,4,8");
- headMen = realocateHeadMen(headMen, numberOfMen, "223325222", "or", "dan", 25, 'M', "ordan10", "1234", "Singer and dancer", "3,5,6,7");
- headMen = realocateHeadMen(headMen, numberOfMen, "349950234", "nadav", "levi", 50, 'M', "nd50", "nadav", "Engineer very smart", "3,6,7,8");
- push(head, newUser("203484758", "shani", "israel", 25, 'F', "shaninush", "12345", "Happy and cool girl", "4,5,6,7"));
- push(head, newUser("345656974", "oshrit", "hasson", 30, 'F', "osh321", "111", "Layer and a painter", "3,4,5,7"));
- */
- manu(head, headMen, numberOfMen);
- // printList(head);
- // printListMen(headMen, numberOfMen);
- //PRINT TO FILE!!!!!!!!!!!
- freeMen(headMen, numberOfMen);
- freeWomen(head);
- }
- void manu(Women **head, User** headMen, int* numberOfMen) {
- fflush(stdin);
- char existUser[MAX_USERNAME];
- char existPassword[MAX_PASSWORD];
- int choice, age, womanCorrectPass, manCorrectPass, womanUserExists, manUserExists;
- char id[ID_LENGTH];
- char name[MAX_PASSWORD], surname[MAX_PASSWORD], username[MAX_USERNAME],
- password[MAX_PASSWORD], description[MAX_INFO], hobbies[MAX_HOBBIES], gender;
- User *user = NULL;
- User* logedMan = NULL;
- User* logedWoman = NULL;
- printf("Welcome! please choose an option\n");
- printf("1 - Log in\n");
- printf("2 - New member\n");
- printf("3 - Exit\n");
- scanf("%d", &choice);
- switch (choice) {
- case 1:
- printf("Please enter your username:\n");
- scanf("%s", existUser);
- manUserExists = searchManUser(existUser, headMen, numberOfMen);
- womanUserExists = searchWomanUser(existUser, head);
- if (manUserExists == FALSE && womanUserExists == FALSE) {
- printf("User do not exist in the system, please try again\n");
- printf("Please enter your username:\n");
- scanf("%s", existUser);
- manUserExists = searchManUser(existUser, headMen, numberOfMen);
- womanUserExists = searchWomanUser(existUser, head);
- if (manUserExists == FALSE && womanUserExists == FALSE) {
- manu(head, headMen, numberOfMen);
- }
- }
- printf("Please enter your password:\n");
- scanf("%s", existPassword);
- manCorrectPass = searchManPass(existPassword, headMen, numberOfMen, existUser);
- womanCorrectPass = searchWomanPass(existPassword, head, existUser);
- if ((manUserExists && manCorrectPass) || (womanUserExists && womanCorrectPass)) {
- if (manUserExists) {
- logedMan = getManUser(existUser, headMen, numberOfMen);
- printf("Hello %s!\n", logedMan->name);
- }
- if (womanUserExists) {
- logedWoman = getWomanUser(existUser, head);
- printf("Hello %s!\n", logedWoman->name);
- }
- }
- else {
- printf("Wrong password\n");
- manu(head, headMen, numberOfMen);
- }
- manu2(logedMan, logedWoman, head, headMen, numberOfMen);
- break;
- case 2:
- printf("Please enter your ID:\n");
- scanf("%s", id);
- searchId(head, headMen, numberOfMen, id);
- printf("Please enter your first name:\n");
- scanf("%s", name);
- printf("Please enter your last name:\n");
- scanf("%s", surname);
- printf("Please enter your age (18 to 100):\n");
- scanf("%d", &age);
- if (age < MIN_AGE || age > MAX_AGE) {
- manu(head, headMen, numberOfMen);
- }
- printf("Please enter your gender (F-female, M-male):\n");
- scanf(" %c", &gender);
- printf("Choose a username (3-10 characters):\n");
- scanf("%s", username);
- if ((username[0]<'A' || (username[0] > 'Z' && username[0] < 'a') || username[0]>'z') || strlen(username) < MIN_USERNAME) {
- manu(head, headMen, numberOfMen);
- }
- printf("please choose 4 hobbies: Baseball=1, Basketball=2, Bicycle=3, Books=4, Drawing=5, Gym=6, Movies=7, Poetry=8\n");
- scanf(" %[^\n]%*c", hobbies);
- printf("Choose a password (attention-minimum 3 characters):\n");
- scanf("%s", password);
- if (strlen(password) < MIN_PASSWORD) {
- manu(head, headMen, numberOfMen);
- }
- printf("Some words about yourself:\n");
- scanf(" %[^\n]%*c", description);
- if (gender == 'F') {
- user = newUser(id, name, surname, age, gender, username, password, description, hobbies);
- push(head, user);
- }
- else {
- headMen = realocateHeadMen(headMen, numberOfMen, id, name, surname, age, gender,
- username, password, description, hobbies);
- }
- printf("Hi %s, lets find love!\n", name);
- logedMan = getManUser(username, headMen, numberOfMen);
- logedWoman = getWomanUser(username, head);
- manu2(logedMan, logedWoman, head, headMen, numberOfMen);
- break;
- case 3:
- freeMen(headMen, numberOfMen);
- freeWomen(head);
- exit(1);
- break;
- default: {
- printf("Bad choice, please try again\n");
- manu(head, headMen, numberOfMen);
- }
- }
- }
- User* newUser(char *id, char *name, char *surname,
- int age,
- char gender,
- char *username,
- char *password,
- char *description,
- char *hobbies) {
- User *newUser = NULL;
- newUser = (User*)malloc(sizeof(User));
- if (newUser == NULL) {
- printf("Allocation of newUser failed\n");
- exit(1);
- }
- newUser->id = (char*)malloc(ID_LENGTH * sizeof(char));
- if (newUser->id == NULL) {
- printf("Allocation of newUser -> id failed\n");
- exit(1);
- }
- strcpy(newUser->id, id);
- newUser->name = (char*)malloc(NAME_LENGTH * sizeof(char));
- if (newUser->name == NULL) {
- printf("Allocation of newUser -> name failed\n");
- exit(1);
- }
- strcpy(newUser->name, name);
- newUser->surname = (char*)malloc(NAME_LENGTH * sizeof(char));
- if (newUser->surname == NULL) {
- printf("Allocation of newUser -> surname failed\n");
- exit(1);
- }
- strcpy(newUser->surname, surname);
- newUser->age = age;
- newUser->gender = gender;
- newUser->username = (char*)malloc(MAX * sizeof(char));
- if (newUser->username == NULL) {
- printf("Allocation of newUser -> username failed\n");
- exit(1);
- }
- strcpy(newUser->username, username);
- newUser->password = (char*)malloc(NAME_LENGTH * sizeof(char));
- if (newUser->password == NULL) {
- printf("Allocation of newUser -> password failed\n");
- exit(1);
- }
- strcpy(newUser->password, password);
- newUser->description = (char*)malloc(DESCRIPTION * sizeof(char));
- if (newUser->description == NULL) {
- printf("Allocation of newUser -> description failed\n");
- exit(1);
- }
- strcpy(newUser->description, description);
- newUser->hobbies = (char*)malloc(NAME_LENGTH * sizeof(char));
- if (newUser->hobbies == NULL) {
- printf("Allocation of newUser -> hobbies failed\n");
- exit(1);
- }
- strcpy(newUser->hobbies, hobbies);
- return newUser;
- }
- void push(Women **head, User *woman) {
- Women *nextWomen = NULL, *temp = NULL, *newWoman = NULL, *addWoman = NULL;
- nextWomen = *head;
- if (*head == NULL) {
- *head = (Women*)malloc(sizeof(Women));
- if (*head == NULL) {
- printf("Allocation of headWoman failed\n");
- exit(1);
- }
- (*head)->userWoman = woman;
- (*head)->next = NULL;
- }
- else {
- if (strcmp((*head)->userWoman->surname, woman->surname) > 0) {
- temp = *head;
- newWoman = (Women*)malloc(sizeof(Women));
- if (newWoman == NULL) {
- printf("Allocation of newWoman failed\n");
- exit(1);
- }
- newWoman->userWoman = woman;
- newWoman->next = (temp);
- *head = newWoman;
- return;
- }
- while (nextWomen->next != NULL && (strcmp(nextWomen->next->userWoman->surname, woman->surname) <= 0)) {
- nextWomen = nextWomen->next;
- }
- if (nextWomen->next == NULL) {
- nextWomen->next = (Women*)malloc(sizeof(Women));
- if (nextWomen->next == NULL) {
- printf("Allocation of nextWomen failed\n");
- exit(1);
- }
- nextWomen->next->userWoman = woman;
- nextWomen->next->next = NULL;
- }
- else {
- addWoman = (Women*)malloc(sizeof(Women));
- if (addWoman == NULL) {
- printf("Allocation of addWoman failed\n");
- exit(1);
- }
- addWoman->userWoman = woman;
- addWoman->next = nextWomen->next;
- nextWomen->next = addWoman;
- }
- }
- }
- void printList(Women **head) {
- Women *user = (*head);
- while (user != NULL) {
- printf("%s\n", user->userWoman->id);
- printf("%s\n", user->userWoman->name);
- printf("%s\n", user->userWoman->surname);
- printf("%d\n", user->userWoman->age);
- printf("%c\n", user->userWoman->gender);
- printf("%s\n", user->userWoman->username);
- printf("%s\n", user->userWoman->password);
- printf("%s\n", user->userWoman->description);
- printf("%s\n", user->userWoman->hobbies);
- user = user->next;
- }
- }
- int searchWomanUser(char* existUser, Women** head) {
- Women *user = NULL;
- user = (*head);
- while (user != NULL) {
- if (strcmp(user->userWoman->username, existUser) == 0)
- return TRUE;
- user = user->next;
- }
- return FALSE;
- }
- int searchWomanPass(char* existPassword, Women** head, char* existUser) {
- Women *user = NULL;
- user = (*head);
- while (user != NULL) {
- if ((strcmp(user->userWoman->password, existPassword) == 0) && (strcmp(user->userWoman->username, existUser) == 0)) {
- return TRUE;
- }
- user = user->next;
- }
- return FALSE;
- }
- void searchId(Women** head, User** headMen, int* numberOfMen, char* enteredId) {
- int womanIdFound = FALSE, manIdFound = FALSE, i;
- Women *user = NULL;
- user = (*head);
- while (user != NULL) {
- if ((strcmp(user->userWoman->id, enteredId) == 0)) {
- womanIdFound = TRUE;
- }
- user = user->next;
- }
- for (i = 0; i < *numberOfMen; i++) {
- if (strcmp(headMen[i]->id, enteredId) == 0) {
- manIdFound = TRUE;
- }
- }
- if (manIdFound == TRUE || womanIdFound == TRUE) {
- printf("Error: User already exists\n");
- manu(head, headMen, numberOfMen);
- }
- }
- Women** removeWoman(Women** head, char* existUser) {
- Women *user = NULL, *prevoiusWoman = NULL, *nextWoman = NULL, *remove = NULL;
- user = (*head);
- if (strcmp(user->userWoman->username, existUser) == 0) {
- remove = user;
- nextWoman = user->next;
- if (*head == user) {
- *head = nextWoman;
- freeUser(remove->userWoman);
- free(remove->userWoman);
- free(remove);
- return head;
- }
- }
- else {
- while (strcmp(user->userWoman->username, existUser) != 0) {
- prevoiusWoman = user;
- user = user->next;
- }
- //Last node in the linked list
- if (user->next == NULL) {
- freeUser(user->userWoman);
- free(user->userWoman);
- free(user);
- prevoiusWoman->next = NULL;
- }
- else {
- nextWoman = user->next;
- prevoiusWoman->next = nextWoman;
- freeUser(user->userWoman);
- free(user->userWoman);
- free(user);
- }
- }
- return head;
- }
- User** realocateHeadMen(User** headMen, int* size, char *id, char *name, char *surname,
- int age, char gender, char *username,
- char *password, char *description, char *hobbies) {
- int newSize = 0;
- if (*size == 0) {
- headMen = (User**)malloc(sizeof(User*));
- }
- else {
- newSize = (*size) + 1;
- headMen = (User**)realloc(headMen, newSize * sizeof(User*));
- if (headMen == NULL) {
- printf("Reallocation of headMen failed\n");
- exit(1);
- }
- }
- if (headMen == NULL) {
- exit(1);
- }
- headMen[*size] = newUser(id, name, surname,
- age, gender, username,
- password, description, hobbies);
- *size += 1;
- return headMen;
- }
- int searchManUser(char* existUser, User** head, int* numberOfMen) {
- int i;
- for (i = 0; i < (*numberOfMen); i++) {
- if (strcmp(head[i]->username, existUser) == 0) {
- return TRUE;
- }
- }
- return FALSE;
- }
- int searchManPass(char* existPassword, User** head, int* numberOfMen, char* username) {
- int i;
- for (i = 0; i < (*numberOfMen); i++) {
- if ((strcmp(head[i]->password, existPassword) == 0) && (strcmp(head[i]->username, username) == 0)) {
- return TRUE;
- }
- }
- return FALSE;
- }
- User* getManUser(char* existUser, User** head, int* numberOfMen) {
- int i;
- for (i = 0; i < (*numberOfMen); i++) {
- if (strcmp(head[i]->username, existUser) == 0) {
- return head[i];
- }
- }
- return NULL;
- }
- User* getWomanUser(char* existUser, Women** head) {
- Women *user = NULL;
- user = (*head);
- while (user != NULL) {
- if (strcmp(user->userWoman->username, existUser) == 0)
- return (user->userWoman);
- user = user->next;
- }
- return NULL;
- }
- void findMatchWoman(int minAge, int maxAge, User* logedMan, Women** head) {
- int vaildHobbies[9] = { 0 }, vaildHobbies2[9] = { 0 }, matchHobbies[9] = { 0 };
- Women *user = NULL;
- user = (*head);
- while (user != NULL) {
- if (minAge <= (user->userWoman->age) && (user->userWoman->age) <= maxAge) {
- if (sumOfHobbies(vaildHobbies, vaildHobbies2, logedMan->hobbies, user->userWoman->hobbies, matchHobbies) >= 2) {
- printUser(user->userWoman);
- }
- }
- reinitialize(vaildHobbies);
- reinitialize(vaildHobbies2);
- reinitialize(matchHobbies);
- user = user->next;
- }
- }
- void getVaildHobbies(int* vaildHobbies, char* hobbies) {
- int i, j = 0;
- for (i = 0; i < strlen(hobbies); i++) {
- if (('0' < hobbies[i]) && (hobbies[i] < '9')) {
- int temp = atoi(&hobbies[i]);
- vaildHobbies[temp] = 1;
- j++;
- }
- }
- }
- const char* getHobbyName(enum hobbies hobbey) {
- switch (hobbey) {
- case Baseball: return "Baseball";
- case Basketball: return "Basketball";
- case Bicycle: return "Bicycle";
- case Books: return "Books";
- case Drawing: return "Drawing";
- case Gym: return "Gym";
- case Movies: return "Movies";
- case Poetry: return "Poetry";
- }
- }
- int sumOfHobbies(int* vaildHobbies, int* vaildHobbies2, char* hobbies, char* hobbies2, int* matchHobbies) {
- int i, sum = 0;
- getVaildHobbies(vaildHobbies, hobbies);
- getVaildHobbies(vaildHobbies2, hobbies2);
- for (i = 0; i < 9; i++) {
- if ((vaildHobbies[i] & vaildHobbies2[i]) == 1) {
- matchHobbies[i] = i;
- sum++;
- }
- }
- return sum;
- }
- void printHobbies(User* user) {
- int i, times = 0;
- char hobby;
- for (i = 0; i < 7; i++) {
- hobby = user->hobbies[i];
- if (('0' < hobby) && (hobby < '9')) {
- times++;
- if (times != 4) {
- printf("%s, ", getHobbyName(hobby - '0'));
- }
- else {
- printf("%s ", getHobbyName(hobby - '0'));
- }
- }
- }
- }
- void reinitialize(int* vaildHobbies) {
- int i;
- for (i = 0; i < 9; i++) {
- vaildHobbies[i] = 0;
- }
- }
- void printUser(User* user) {
- printf("Name: %s %s Age: %d Hobbies: ", user->name, user->surname, user->age);
- printHobbies(user);
- printf("Description: %s\n\n", user->description);
- }
- void manu2(User* logedMan, User* logedWoman, Women** head, User** headMen, int* numberOfMen) {
- int choice2, minAge, maxAge;
- fflush(stdin);
- printf("Please choose an option:\n");
- printf("1. Find a match\n");
- printf("2. I found love, DELETE me\n");
- printf("3. Log out\n");
- scanf("%d", &choice2);
- switch (choice2) {
- case 1:
- printf("Please choose ages range:\n");
- scanf("%d %d", &minAge, &maxAge);
- if (logedMan != NULL) {
- findMatchWoman(minAge, maxAge, logedMan, head);
- manu2(logedMan, logedWoman, head, headMen, numberOfMen);
- }
- else {
- findMatchman(minAge, maxAge, logedWoman, headMen, numberOfMen);
- manu2(logedMan, logedWoman, head, headMen, numberOfMen);
- }
- break;
- case 2:
- if (logedMan != NULL) {
- headMen = removeMan(headMen, numberOfMen, logedMan->username);
- manu(head, headMen, numberOfMen);
- }
- else {
- head = removeWoman(head, logedWoman->username);
- manu(head, headMen, numberOfMen);
- }
- break;
- case 3:
- manu(head, headMen, numberOfMen);
- break;
- default: {
- printf("Bad choice, please try again\n");
- manu(head, headMen, numberOfMen);
- }
- }
- }
- void findMatchman(int minAge, int maxAge, User* logedWoman, User** headMen, int* numberOfMen) {
- int vaildHobbies[9] = { 0 }, vaildHobbies2[9] = { 0 }, matchHobbies[9] = { 0 }, i;
- for (i = 0; i < (*numberOfMen); i++) {
- if (minAge <= (headMen[i]->age) && (headMen[i]->age) <= maxAge) {
- if (sumOfHobbies(vaildHobbies, vaildHobbies2, logedWoman->hobbies, headMen[i]->hobbies, matchHobbies) >= 2) {
- printUser(headMen[i]);
- }
- }
- reinitialize(vaildHobbies);
- reinitialize(vaildHobbies2);
- reinitialize(matchHobbies);
- }
- }
- User** removeMan(User** headMen, int* numberOfMen, char* existUser) {
- int i, j, newSize = 0;
- User *toRemove, *lastUser;
- for (i = 0; i < *numberOfMen; i++) {
- if ((strcmp(headMen[i]->username, existUser) == 0)) {
- j = i;
- toRemove = headMen[i];
- while (j != *numberOfMen - 1) {
- headMen[j] = headMen[j + 1];
- j++;
- }
- if (j != 1) {
- freeUser(toRemove);
- free(toRemove);
- newSize = (*numberOfMen) - 1;
- headMen = (User**)realloc(headMen, newSize * sizeof(User));
- if (headMen == NULL) {
- printf("Reallocation of headMen failed\n");
- exit(1);
- }
- }
- else {
- newSize = (*numberOfMen) - 1;
- headMen = (User**)realloc(headMen, newSize * sizeof(User));
- if (headMen == NULL) {
- printf("Reallocation of headMen failed\n");
- exit(1);
- }
- lastUser = *headMen;
- freeUser(toRemove);
- free(toRemove);
- headMen = &lastUser;
- }
- }
- }
- (*numberOfMen)--;
- return headMen;
- }
- void printListMen(User **head, int* size) {
- int i;
- for (i = 0; i < (*size); i++) {
- printf("%s ", head[i]->id);
- printf("%s ", head[i]->name);
- printf("%s ", head[i]->surname);
- printf("%d ", head[i]->age);
- printf("%c ", head[i]->gender);
- printf("%s ", head[i]->username);
- printf("%s ", head[i]->password);
- printf("%s ", head[i]->description);
- printf("%s \n", head[i]->hobbies);
- }
- }
- void freeUser(User* userTofree) {
- if (userTofree != NULL) {
- free(userTofree->description);
- free(userTofree->hobbies);
- free(userTofree->id);
- free(userTofree->name);
- free(userTofree->password);
- free(userTofree->surname);
- free(userTofree->username);
- /// free(userTofree); MAYBE
- }
- }
- void freeMen(User** headMen, int* numberOfMen) {
- while ((*numberOfMen) != 0) {
- freeUser(headMen[(*numberOfMen) - 1]);
- free(headMen[(*numberOfMen) - 1]);
- (*numberOfMen)--;
- }
- free(headMen);
- //freeUser(*headMen);
- }
- void freeWomen(Women** head) {
- while (*head) {
- // remove *head
- Women *toRemove = *head;
- *head = (*head)->next;
- // remove toRemove
- freeUser(toRemove->userWoman);
- free(toRemove->userWoman);
- free(toRemove);
- }
- }
- User** readInput(User** headMen, int* numberOfMen, Women** head) {
- char id[ID_LENGTH];
- char name[MAX_PASSWORD], surname[MAX_PASSWORD], username[MAX_USERNAME],
- password[MAX_PASSWORD], description[MAX_INFO], hobbies[MAX_HOBBIES], gender[MIN_LOGIN_INFO], age[MIN_LOGIN_INFO];
- FILE *input = NULL;
- char cChar = 'a', *dummy;
- int r;
- char current[MAX_LINE_LEN];
- char line[MAX_LINE_LEN];
- char genderChar;
- int ageInt;
- char currentChar = 'a';
- int currentIdx = 0, index = 0;
- int i, count = 0, flag = 0, flag1 = 0;
- input = fopen("input.txt", "r");
- if (input == NULL) {
- exit(1);
- }
- while (currentChar != -1) {
- while (currentChar != '\n') {
- currentChar = fgetc(input);
- index++;
- if (currentChar == EOF) {
- return headMen;
- }
- }
- r = fseek(input, -(index), SEEK_CUR);
- fgets(line, (index), input);
- index = 0;
- int n = strlen(line);
- for (i = 0; i <= n; ++i) {
- if (i < n && line[i] != ';' && line[i] != '\n' && line[i] != '\r') {
- current[currentIdx++] = line[i];
- }
- else {
- current[currentIdx++] = '\0';
- switch (count) {
- case 0:
- strcpy(id, current);
- break;
- case 1:
- strcpy(name, current);
- break;
- case 2:
- strcpy(surname, current);
- break;
- case 3:
- strcpy(age, current);
- break;
- case 4:
- strcpy(gender, current);
- break;
- case 5:
- strcpy(username, current);
- break;
- case 6:
- strcpy(password, current);
- break;
- case 7:
- strcpy(hobbies, current);
- break;
- case 8:
- strcpy(description, current);
- break;
- }
- ++count;
- currentIdx = 0;
- }
- }
- flag1 = 1;
- flag=2;
- count = 0;
- genderChar = gender[0];
- ageInt = strtol(age, &dummy, 10);
- if (genderChar == 'M') {
- // printf("%s %s %s %d %c %s %s %s %s\n", id, name, surname, ageInt, genderChar, username, password, description, hobbies);
- headMen = realocateHeadMen(headMen, numberOfMen, id, name, surname, ageInt, genderChar, username, password, description, hobbies);
- }
- else {
- // printf("%s %s %s %d %c %s %s %s %s\n", id, name, surname, ageInt, genderChar, username, password, description, hobbies);
- push(head, newUser(id,name,surname,ageInt, genderChar,username,password,description,hobbies));
- }
- currentChar = fgetc(input);
- //r = fseek(input, -1, SEEK_CUR);
- if (currentChar == '\n'){
- currentChar='a';
- //r = fseek(input, 1, SEEK_CUR);
- }
- if (currentChar == '\r'){
- r = fseek(input, 2, SEEK_CUR);
- }
- }
- fclose(input);
- return headMen;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement