Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include <string.h>
- struct PASSWORD_REC
- {
- char username[50];
- char password[50];
- char usertype[50];
- } array[50];
- struct NODE
- {
- struct PASSWORD_REC user;
- struct NODE *next;
- }
- typedef struct ll_node
- {
- char entry[150];
- struct ll_node* next;
- } llnode, linkedlist;
- linkedlist* createLinkedList()
- {
- llnode* head;
- char blank[150];
- int c = 0;
- for (c = 0; c < 150; c ++)
- blank[c] = " ";
- head = (llnode *) malloc(sizeof(llnode));
- head->entry = blank;
- head->next = NULL;
- return head;
- }
- void addToLinkedList(linkedlist* list, char entry[150])
- {
- llnode* freeSpot;
- llnode* newNode;
- freeSpot = list;
- while(freeSpot->next != NULL)
- freeSpot = freeSpot->next;
- newNode = (llnode *) malloc(sizeof(llnode));
- newNode->entry = entry;
- newNode->next = NULL;
- freeSpot->next = newNode;
- }
- void printLLNode(llnode* my_node)
- {
- printf("\tEntry: %s\n", my_node->entry);
- if (my_node->next != NULL)
- printLLNode(my_node->next);
- }
- void printLinkedList(linkedlist* list)
- {
- if (list->next != NULL)
- {
- printf("Contents of list is: ");
- printLLNode(list->next);
- }
- else
- printf("List is empty.");
- printf("\n");
- }
- int main(void)
- {
- printf("Welcome to Reverse Password Print!");
- FILE *in = fopen("password.csv", "rt");
- int count = 0;
- if (fopen("password.csv", "rt") == NULL)
- printf("Could not find password.csv file. Terminating!");
- else //if password.csv is in the directory
- {
- struct PASSWORD_REC array[count];
- linkedlist* forward = createLinkedList();
- linkedlist* reverse = createLinkedList();
- char buffer[150]; //alloting enough space
- char uname[50];
- char pword[50];
- char usert[50];
- char* buffers[50];
- while(!feof(in)) //for all entries in the .csv file
- {
- fgets(buffer, 150, in);
- //need to parse first
- //knowing it's a comma seperated vector file, want to cut at every comma
- int i, j, k, l, m, n; //all counter variables
- char bufferc[150];
- buffers[count] = buffer; //saving all the entries in an array of strings
- for (i = 0; i < 150 && buffer[i]!='\0' && buffer[i]!= '\n'; i ++)
- {
- if (buffer[i] == ',')
- {
- for (j = 0; j < i; j ++)
- uname[j] = buffer[j];
- l = i + 2; //want it after the comma and space
- for (m = 0; m < 150; m ++) //copy of the buffer
- bufferc[m] = buffer[m];
- for (k = 0; k < 150; k ++)
- if (k < 150 - i) //overwriting the buffer array to just be the password, usertype
- buffer[k] = bufferc[k + l];
- else
- buffer[k] = '\0';
- break;
- }
- }
- for (i = 0; i < 150 && buffer[i] != '\0' && buffer[i] != '\n'; i ++)
- {
- if (buffer[i] == ',');
- {
- for (j = 0; j < i; j ++)
- pword[j] = buffer[j];
- l = i + 2; //want it after the comma and space
- for (m = 0; m < 150; m ++) //copy of the buffer
- bufferc[m] = buffer[m];
- for (k = 0; k < 150; k ++)
- {
- if (k < 150 - i)
- buffer[k] = bufferc[k + l];
- else
- buffer[k] = '\0';
- break;
- }
- } //now the remaining stuff in buffer should only be the usertype
- for (i = 0; i < 50 && buffer[i] != '\0' && buffer[i] != '\n'; i ++)
- usert[i] = buffer[i];
- array[count].username = uname;
- array[count].password = pword;
- array[count].usertype = usert;
- addToLinkedList(forward, buffers[count]);
- count ++;
- }
- printf("Contents of struct. array: \n\n");
- int c;
- for (c = 0; c < count; c ++)
- {
- printf("\tUsername %d: %s\n", c, array[c].username);
- printf("\tPassword %d: %s\n", c, array[c].password);
- printf("\tUser Type %d: %s\n", c, array[c].usertype);
- }
- printf("Contents of struct. array in reverse: \n\n");
- for (c = count - 1; c >= 0; c --)
- {
- printf("\tUsername %d: %s\n", c, array[c].username);
- printf("\tPassword %d: %s\n", c, array[c].password);
- printf("\tUser Type %d: %s\n", c, array[c].usertype);
- }
- for (c = 0; c < count; c ++)
- addToLinkedList(reverse, buffers[count - 1 - c]);
- printf("Contents of linked list: \n\n");
- printLinkedList(forward);
- printf("Contents of linked list in reverse: \n\n");
- printLinkedList(reverse);
- fclose(in);
- }
- }
Add Comment
Please, Sign In to add comment