How to mask a range of sensitive parts of a string for general-purpose masking in C

1 Answer

0 votes
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char* maskRange(const char* input, size_t start, size_t end) {
    size_t len = strlen(input);

    if (start >= len)
        return strdup(input);   // nothing to mask

    if (end > len)
        end = len;

    char* result = strdup(input);  // allocate modifiable copy
    if (!result)
        return NULL;

    for (size_t i = start; i < end; i++) {
        result[i] = '*';
    }

    return result;
}

int main(void) {
    char* masked1 = maskRange("1234567899990000", 0, 12);
    char* masked2 = maskRange("john.doe@example.com", 1, 8);

    printf("%s\n", masked1);
    printf("%s\n", masked2);

    free(masked1);
    free(masked2);

    return 0;
}


/*
run:

************0000
j*******@example.com

*/

 



answered Dec 23, 2025 by avibootz
...