Guest User

CENG 103 LAB - 24.12.2018

a guest
Dec 24th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.57 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int findSizeOfFile(FILE *file_reader) {
  4.     char holder, size = 0;
  5.  
  6.     int status = fscanf(file_reader, "%c", &holder);
  7.  
  8.     for (int i = 0; status != EOF; i++) {
  9.         if (holder == '\n')
  10.             size++;
  11.  
  12.         status = fscanf(file_reader, "%c", &holder);
  13.  
  14.         if (status == EOF)
  15.             size++;
  16.     }
  17.  
  18.     fclose(file_reader);
  19.  
  20.     return size;
  21. }
  22.  
  23. void readWordFromFile(FILE *file_reader, char list_arr[][100]) {
  24.     char holder;
  25.  
  26.     int status = 0;
  27.  
  28.     for (int i = 0; status!=EOF; i++) {
  29.  
  30.         status = fscanf(file_reader, "%c", &holder);
  31.  
  32.         for (int j = 0; holder!='\n'; j++) {
  33.             list_arr[i][j] = holder;
  34.  
  35.             status = fscanf(file_reader, "%c", &holder);
  36.  
  37.             if (status == EOF)
  38.                 break;
  39.         }
  40.     }
  41.  
  42.     fclose(file_reader);
  43. }
  44.  
  45. void displayArray(char arr[][100], int size) {
  46.     for (int i = 0; i < size; i++) {
  47.         printf("%s\n", arr[i]);
  48.     }
  49. }
  50.  
  51. void menu(char user_arr[], char pass_arr[]) {
  52.     int error=0;
  53.     char holder;
  54.  
  55.     printf("\n---------------------------\nWELCOME TO THE DATABASE OF PENTAGON\n");
  56.  
  57.     printf("---------------------------\nUsername: ");
  58.     scanf("%s", user_arr);
  59.  
  60.     holder = '*';
  61.  
  62.     do {
  63.         for (int i = 0; holder != '\0'; i++) {
  64.             holder = user_arr[i];
  65.             if (((holder >= 48 && holder <= 57) || (holder >= 65 && holder <= 90)) || holder == '\0')
  66.                 error = 0;
  67.             else {
  68.                 error = 1;
  69.                 break;
  70.             }
  71.         }
  72.  
  73.         if (error == 1) {
  74.             holder = '*';
  75.             printf("\nInput can consist only of capital letters and numerals. Please enter an input accordingly: ");
  76.             scanf("%s", user_arr);
  77.         }
  78.     } while (error == 1);
  79.  
  80.     printf("---------------------------\nPassword: ");
  81.     scanf("%s", pass_arr);
  82.  
  83.     holder = '*';
  84.  
  85.     do {
  86.         for (int i = 0; holder != '\0'; i++) {
  87.             holder = pass_arr[i];
  88.             if (((holder >= 48 && holder <= 57) || (holder >= 65 && holder <= 90)) || holder == '\0')
  89.                 error = 0;
  90.             else {
  91.                 error = 1;
  92.                 break;
  93.             }
  94.         }
  95.  
  96.         if (error == 1) {
  97.             holder = '*';
  98.             printf("\nInput can consist only of capital letters and numerals. Please enter an input accordingly: ");
  99.             scanf("%s", pass_arr);
  100.         }
  101.     } while (error == 1);
  102. }
  103.  
  104. int findSize(char arr[]) {
  105.     char holder = '*';
  106.     int size = 0;
  107.  
  108.     for (int i = 0; arr[i] != '\0'; i++)
  109.         size++;
  110.  
  111.     return size;
  112. }
  113.  
  114. int isEqual(char input_arr[], char list_arr[], int input_size, int list_size) {
  115.     if (input_size != list_size)
  116.         return 0;
  117.  
  118.     for (int i = 0; i < input_size; i++) {
  119.         if (input_arr[i] != list_arr[i])
  120.             return 0;
  121.     }
  122.  
  123.     return 1;
  124. }
  125.  
  126. int main() {
  127.     FILE *user_reader = fopen("Users.txt", "r");
  128.     FILE *password_reader = fopen("Passwords.txt", "r");
  129.  
  130.     char users[100][100] = {}, passwords[100][100] = {};
  131.     char username[100] = {}, password[100] = {};
  132.  
  133.     int orderNumber;
  134.  
  135.     readWordFromFile(user_reader, users);
  136.     readWordFromFile(password_reader, passwords);
  137.    
  138.     user_reader = fopen("Users.txt", "r");
  139.     int sizeOfUsers = findSizeOfFile(user_reader);
  140.  
  141.     password_reader = fopen("Passwords.txt", "r");
  142.     int sizeOfPasswords = findSizeOfFile(user_reader);
  143.  
  144.     do {
  145.         int i;
  146.  
  147.         menu(username, password);
  148.  
  149.         for (i = 0; i < sizeOfUsers; i++) {
  150.             if (isEqual(username, users[i], findSize(username), findSize(users[i])) == 1) {
  151.                 orderNumber = i;
  152.                 break;
  153.             }
  154.             else
  155.                 orderNumber = -1;
  156.         }
  157.        
  158.         if (orderNumber != -1) {
  159.             if (isEqual(password, passwords[i], findSize(password), findSize(passwords[i])) == 1)
  160.                 printf("---------------------------\n\nYou're now (somehow) logged in to Pentagon, great job\n");
  161.             else
  162.                 printf("(!)\n\nPassword is not correct\n");
  163.         }
  164.  
  165.         else
  166.             printf("\n(?)\nUsername not found\n");
  167.     } while (orderNumber == -1);
  168.  
  169.     return 0;
  170. }
Add Comment
Please, Sign In to add comment