How to check if two halves of a number are equal in C

1 Answer

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

bool halves_equal(int n) {
    char buf[32];
    snprintf(buf, sizeof(buf), "%d", n);

    size_t len = strlen(buf);
    if (len % 2 != 0)
        return false;  // cannot split evenly

    size_t half = len / 2;
    
    return strncmp(buf, buf + half, half) == 0;
}

int main(void) {
    int testNumbers[] = {1212, 123123, 45454545, 123, 1213};
    size_t count = sizeof(testNumbers) / sizeof(testNumbers[0]);

    for (size_t i = 0; i < count; i++) {
        int n = testNumbers[i];
        printf("%d -> %s\n",
               n,
               halves_equal(n) ? "equal halves" : "not equal");
    }

    return 0;
}


/*
run:

1212 -> equal halves
123123 -> equal halves
45454545 -> equal halves
123 -> not equal
1213 -> not equal

*/

 



answered Dec 21, 2025 by avibootz
...