Guest User

Untitled

a guest
Apr 8th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.25 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #include <string.h>
  5.  
  6. struct PASSWORD_REC
  7. {
  8.     char username[50];
  9.     char password[50];
  10.     char usertype[50];
  11. } array[50];
  12.  
  13.  
  14. struct NODE
  15. {
  16.     struct PASSWORD_REC user;
  17.     struct NODE *next;
  18. }
  19.  
  20. typedef struct ll_node
  21. {
  22.     char entry[150];
  23.     struct ll_node* next;
  24. } llnode, linkedlist;
  25.  
  26. linkedlist* createLinkedList()
  27. {
  28.     llnode* head;
  29.     char blank[150];
  30.     int c = 0;
  31.     for (c = 0; c < 150; c ++)
  32.         blank[c] = " ";
  33.  
  34.     head = (llnode *) malloc(sizeof(llnode));
  35.     head->entry = blank;
  36.     head->next = NULL;
  37.  
  38.     return head;
  39. }
  40.  
  41. void addToLinkedList(linkedlist* list, char entry[150])
  42. {
  43.     llnode* freeSpot;
  44.     llnode* newNode;
  45.  
  46.     freeSpot = list;
  47.  
  48.     while(freeSpot->next != NULL)
  49.         freeSpot = freeSpot->next;
  50.  
  51.     newNode = (llnode *) malloc(sizeof(llnode));
  52.     newNode->entry = entry;
  53.     newNode->next = NULL;
  54.     freeSpot->next = newNode;
  55. }
  56.  
  57. void printLLNode(llnode* my_node)
  58. {
  59.     printf("\tEntry:  %s\n", my_node->entry);
  60.     if (my_node->next != NULL)
  61.         printLLNode(my_node->next);
  62. }
  63.  
  64. void printLinkedList(linkedlist* list)
  65. {
  66.     if (list->next != NULL)
  67.     {
  68.         printf("Contents of list is:  ");
  69.         printLLNode(list->next);
  70.     }
  71.     else
  72.         printf("List is empty.");
  73.  
  74.     printf("\n");
  75. }
  76.  
  77. int main(void)
  78. {
  79.  
  80.     printf("Welcome to Reverse Password Print!");
  81.  
  82.     FILE *in = fopen("password.csv", "rt");
  83.  
  84.     int count = 0;
  85.  
  86.     if (fopen("password.csv", "rt") == NULL)   
  87.         printf("Could not find password.csv file.  Terminating!");
  88.     else                //if password.csv is in the directory
  89.     {
  90.         struct PASSWORD_REC array[count];
  91.         linkedlist* forward = createLinkedList();
  92.         linkedlist* reverse = createLinkedList();
  93.  
  94.         char buffer[150];       //alloting enough space
  95.         char uname[50];
  96.         char pword[50];
  97.         char usert[50];
  98.  
  99.         char* buffers[50];
  100.  
  101.         while(!feof(in))        //for all entries in the .csv file
  102.         {
  103.             fgets(buffer, 150, in);
  104.             //need to parse first
  105.             //knowing it's a comma seperated vector file, want to cut at every comma
  106.  
  107.             int i, j, k, l, m, n;       //all counter variables
  108.             char bufferc[150];
  109.  
  110.             buffers[count] = buffer;    //saving all the entries in an array of strings
  111.  
  112.             for (i = 0; i < 150 && buffer[i]!='\0' && buffer[i]!= '\n'; i ++)
  113.             {
  114.                 if (buffer[i] == ',')
  115.                 {
  116.                     for (j = 0; j < i; j ++)
  117.                         uname[j] = buffer[j];
  118.                     l = i + 2;      //want it after the comma and space
  119.                     for (m = 0; m < 150; m ++)  //copy of the buffer
  120.                         bufferc[m] = buffer[m];
  121.                     for (k = 0; k < 150; k ++)
  122.                         if (k < 150 - i)    //overwriting the buffer array to just be the password, usertype
  123.                             buffer[k] = bufferc[k + l];
  124.                         else
  125.                             buffer[k] = '\0';
  126.                     break;
  127.                 }
  128.             }
  129.             for (i = 0; i < 150 && buffer[i] != '\0' && buffer[i] != '\n'; i ++)
  130.             {
  131.                 if (buffer[i] == ',');
  132.                 {
  133.                     for (j = 0; j < i; j ++)
  134.                         pword[j] = buffer[j];
  135.                     l = i + 2;      //want it after the comma and space
  136.                     for (m = 0; m < 150; m ++)  //copy of the buffer
  137.                         bufferc[m] = buffer[m];
  138.                     for (k = 0; k < 150; k ++)
  139.                     {
  140.                         if (k < 150 - i)
  141.                             buffer[k] = bufferc[k + l];
  142.                         else
  143.                             buffer[k] = '\0';
  144.                     break;         
  145.                 }
  146.             }       //now the remaining stuff in buffer should only be the usertype
  147.             for (i = 0; i < 50 && buffer[i] != '\0' && buffer[i] != '\n'; i ++)
  148.                 usert[i] = buffer[i];
  149.  
  150.             array[count].username = uname;
  151.             array[count].password = pword;
  152.             array[count].usertype = usert;
  153.  
  154.             addToLinkedList(forward, buffers[count]);
  155.             count ++;
  156.         }  
  157.  
  158.         printf("Contents of struct. array:  \n\n");
  159.         int c;
  160.         for (c = 0; c < count; c ++)
  161.         {
  162.             printf("\tUsername %d:  %s\n", c, array[c].username);
  163.             printf("\tPassword %d:  %s\n", c, array[c].password);
  164.             printf("\tUser Type %d:  %s\n", c, array[c].usertype);
  165.         }
  166.  
  167.         printf("Contents of struct. array in reverse:  \n\n");
  168.         for (c = count - 1; c >= 0; c --)
  169.         {
  170.             printf("\tUsername %d:  %s\n", c, array[c].username);
  171.             printf("\tPassword %d:  %s\n", c, array[c].password);
  172.             printf("\tUser Type %d:  %s\n", c, array[c].usertype);
  173.         }
  174.  
  175.         for (c = 0; c < count; c ++)
  176.             addToLinkedList(reverse, buffers[count - 1 - c]);
  177.        
  178.         printf("Contents of linked list:  \n\n");
  179.         printLinkedList(forward);  
  180.         printf("Contents of linked list in reverse:  \n\n");
  181.         printLinkedList(reverse);
  182.  
  183.  
  184.         fclose(in);
  185.     }  
  186. }
Add Comment
Please, Sign In to add comment