#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* maskNumberWithStarsExceptFirstSixAndLastFour(char* cardNumber) {
int cardNumberLength = strlen(cardNumber);
int first6DigitsLength = 6;
int last4DigitsLength = 4;
char* first6Digits = malloc(first6DigitsLength + 1);
strncpy(first6Digits, cardNumber, first6DigitsLength);
first6Digits[first6DigitsLength] = '\0';
char* last4Digits = malloc(last4DigitsLength + 1);
strncpy(last4Digits, cardNumber + cardNumberLength - last4DigitsLength, last4DigitsLength);
last4Digits[last4DigitsLength] = '\0';
int requiredMaskLength = cardNumberLength - first6DigitsLength - last4DigitsLength;
char* requiredMask = malloc(requiredMaskLength + 1);
memset(requiredMask, '*', requiredMaskLength);
requiredMask[requiredMaskLength] = '\0';
char* maskedNumber = malloc(cardNumberLength + 1);
sprintf(maskedNumber, "%s%s%s", first6Digits, requiredMask, last4Digits);
free(first6Digits);
free(last4Digits);
free(requiredMask);
return maskedNumber;
}
int main() {
char* cardNumber = "9003125334656789";
char* maskedNumber = maskNumberWithStarsExceptFirstSixAndLastFour(cardNumber);
printf("%s\n", maskedNumber);
free(maskedNumber);
return 0;
}
/*
run:
900312******6789
*/