9 #include "structures.h"
14 int readUsersFromFile(
char inputFile[],
struct User users[],
int *nUsers) {
17 char *mode =
"r", line[BUFSIZ], item[BUFSIZ];
18 int indexLine = 0, indexItem;
19 const int nbItems = 5;
22 ifp = fopen(inputFile, mode);
24 fprintf(stderr,
"Cannot open input file: %s\n", inputFile);
28 while ( fgets(line,
sizeof line, ifp) != NULL ) {
34 len = strcspn(token,
";\n");
35 sprintf(item,
"%.*s", (
int)len, token);
45 strcpy(users[indexLine].login, item);
48 strcpy(users[indexLine].password, item);
51 strcpy(users[indexLine].name, item);
54 strcpy(users[indexLine].surname, item);
57 parseIntSeq(item, users[indexLine].favoriteSellers, MAX_USERS, &users[indexLine].nFavoriteSellers);
60 if ( (++indexItem == nbItems) ) {
62 users[indexLine].userID = indexLine+1;
67 if ( (++indexLine == MAX_USERS) )
77 int writeUsersToFile(
char outputFile[],
struct User users[],
int nUsers) {
82 ofp = fopen(outputFile, mode);
84 fprintf(stderr,
"Cannot open output file: %s\n", outputFile);
88 for (i=0; i<nUsers; i++) {
89 fprintf (ofp,
"%s;%s;%s;%s;", users[i].login, users[i].password, users[i].name, users[i].surname);
90 for(j=0; j<users[i].nFavoriteSellers; j++) {
94 fprintf (ofp,
"%i", users[i].favoriteSellers[j]);
104 int readItemsFromFile(
char inputFile[],
struct Item items[],
int *nItems) {
107 char *mode =
"r", line[BUFSIZ], item[BUFSIZ];
108 int indexLine = 0, indexItem;
109 const int nbItems = 7;
113 ifp = fopen(inputFile, mode);
115 fprintf(stderr,
"Cannot open input file: %s\n",inputFile);
119 while ( fgets(line,
sizeof line, ifp) != NULL ) {
125 len = strcspn(token,
";\n");
126 sprintf(item,
"%.*s", (
int)len, token);
128 if ( *token ==
'\0' )
136 strcpy(items[indexLine].description, item);
139 strcpy(items[indexLine].name, item);
142 items[indexLine].price = strtof(item, &stopstring);
145 items[indexLine].sellerID = atoi(item);
148 parseIntSeq(item, items[indexLine].likeRatings, MAX_USERS, &items[indexLine].nLikeRatings);
151 parseIntSeq(item, items[indexLine].dealRatings, MAX_USERS, &items[indexLine].nDealRatings);
154 parseIntSeq(item, items[indexLine].soldRatings, MAX_USERS, &items[indexLine].nSoldRatings);
157 if ( (++indexItem == nbItems) ) {
158 items[indexLine].itemID = indexLine+1;
164 if ( (++indexLine == MAX_ITEMS) )
175 int writeItemsToFile(
char outputFile[],
struct Item items[],
int nItems) {
179 ofp = fopen(outputFile, mode);
182 fprintf(stderr,
"Cannot open output file: %s\n", outputFile);
186 for(i=0; i<nItems; i++){
187 fprintf (ofp,
"%s;%s;%.2f;%i;", items[i].description, items[i].name, items[i].price, items[i].sellerID);
188 for(j=0; j<items[i].nLikeRatings; j++) {
191 fprintf(ofp,
"%i", items[i].likeRatings[j]);
195 for(j=0; j<items[i].nDealRatings; j++) {
198 fprintf (ofp,
"%i", items[i].dealRatings[j]);
202 for(j=0; j<items[i].nSoldRatings; j++) {
205 fprintf (ofp,
"%i", items[i].soldRatings[j]);
215 int parseIntSeq(
char *token,
int vector[],
int lVector,
int *n){
221 len = strcspn(token,
",");
224 sprintf(item,
"%.*s", (
int)len, token);
225 vector[index] = atoi(item);
227 if ( *token ==
'\0' ) {
233 if ( (++index == lVector) )