Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*-----------------------------------------------------------------------------
- * HTBLA-Leonding / Class: 2BHIF
- *-----------------------------------------------------------------------------
- * Exercise Number: 5
- * File: cc_checker.c
- * Author(s): Peter Bauer
- * Due Date: 15.10.2012
- *-----------------------------------------------------------------------------
- * Description:
- * This program checks the creditcard numbers of users.
- * it check's, if they are valid or not.
- *-----------------------------------------------------------------------------
- */
- #include <string.h>
- #include <stdio.h>
- #include "cc_checker.h"
- #define TRUE 0
- #define FALSE 1
- #define CARDID i
- static const CardPattern *pattern;
- static int len;
- /* ----------------- Prototypes of private functions ------------------------- */
- Bool start_is_equal(const char *short_string, const char *long_string);
- int length_of_pattern(const char *cc_number, int cardid);
- int start_cc_checker(const char *cc_number, int cardid);
- /* ----------------- Implementation of public functions ---------------------- */
- void init_cc_checker(const CardPattern p[], int patterns_count)
- {
- len = patterns_count;
- pattern = p;
- }
- Bool is_pattern(CardName name, const char *cc_number)
- {
- int len = 0;
- int cardid;
- int start = 0;
- for(int i = 0; i < 5; i++)
- {
- if(pattern[i].name == name)
- {
- cardid = i;
- }
- }
- switch(cardid)
- {
- case 0:
- len = length_of_pattern(cc_number, cardid);
- start = start_cc_checker(cc_number, cardid);
- break;
- case 1:
- len = length_of_pattern(cc_number, cardid);
- start = start_cc_checker(cc_number, cardid);
- break;
- case 2:
- len = length_of_pattern(cc_number, cardid);
- start = start_cc_checker(cc_number, cardid);
- break;
- case 3:
- len = length_of_pattern(cc_number, cardid);
- start = start_cc_checker(cc_number, cardid);
- break;
- case 4:
- len = length_of_pattern(cc_number, cardid);
- start = start_cc_checker(cc_number, cardid);
- break;
- }
- if(len == 1 && start == 1)
- {
- return True;
- }
- else
- {
- return False;
- }
- }
- Bool is_luhn_valid(const char *cc_number)
- {
- return (False);
- }
- int start_cc_checker(const char *cc_number, int cardid)
- {
- int i = 0;
- int rf = 0;
- while(i < POSSIBLE_STARTS_COUNT && pattern[cardid].start[i] != 0)
- {
- if(strncmp((cc_number), (pattern[cardid].start[i]), (strlen(pattern[cardid].start[i]))) == 1)
- {
- i = POSSIBLE_STARTS_COUNT;
- rf = 1;
- }
- i++;
- }
- return rf;
- }
- int length_of_pattern(const char *cc_number, int cardid)
- {
- int len = 0;
- int rf = 0;
- int j;
- for(int i = 0; i < strlen(cc_number); i++)
- {
- if(cc_number[i] != ' ')
- {
- len++;
- }
- }
- while(j < POSSIBLE_STARTS_COUNT)
- {
- if(len == pattern[cardid].length[j]);
- {
- rf = 1;
- }
- j++;
- }
- return rf;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement