This is cc_cksum.c in view mode; [Download] [Up]
/* * cc_cksum.c * * Credit Card check sum program * from 2600 magazine. * */ #include <stdio.h> void main(void) { char cc[20]; int check, len, prod, j; printf("\nAmex/MC/Visa Checksum Verification Program"); for (; ;) { printf("\nEnter Card Number [w/o spaces or dashes] (Q to quit)\n"); scanf("%s", cc); if (cc[0] == 'Q' || cc[0] == 'q') { exit(0); } if (cc[0] != '3' && cc[0] != '4' && cc[0] != '5' && cc[0] != '6') { printf("Card number must start with 3, 4, 5, or 6\n"); continue; } len = strlen(cc); if (cc[0] == '5' && len != 16) { printf("Mastercard must be 16 digits\n"); continue; } if (cc[0] == '4' && (len != 13 && len != 16)) { printf("Visa numbers must be 13 or 16 digits\n"); continue; } if (cc[0] == '3' && len != 15) { printf("American Express Numbers must be 15 digits\n"); continue; } if (cc[0] == '6' && len != 16) { printf("Discover Numbers must be 16 digits\n"); continue; } /* Perform checksum - Weighing list 212121212121... */ check = 0; for (j = 0; j < len; ++j) { prod = cc[j] - '0'; if (((len - (j + 1)) %2)) { prod *= 2; } if (prod >= 10) { prod = prod - 9; } check += prod; } if ((check % 10) == 0) { printf("Card has good checksum\n"); } else { printf("Card has BAD checksum\n"); } } }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.