Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,968 questions

51,910 answers

573 users

How to increment an integer represented as an integer array of digits by one in C

1 Answer

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

int* incrementByOne(int* digits, int size, int* newSize) {
    int carry = 1;
    for (int i = size - 1; i >= 0; i--) {
        digits[i] += carry;
        if (digits[i] == 10) {
            digits[i] = 0;
            carry = 1;
        } else {
            carry = 0;
            break;
        }
    }

    if (carry == 1) {
        // Allocate a new array with one extra digit
        int* newDigits = (int*)malloc((size + 1) * sizeof(int));
        newDigits[0] = 1;
        for (int i = 0; i < size; i++) {
            newDigits[i + 1] = digits[i];
        }
        free(digits); // Free old array
        *newSize = size + 1;
        return newDigits;
    }

    *newSize = size;
    
    return digits;
}

int main() {
    int size = 3;
    int* digits = (int*)malloc(size * sizeof(int));
    
    digits[0] = 9;
    digits[1] = 9;
    digits[2] = 9;

    int newSize;
    digits = incrementByOne(digits, size, &newSize);

    printf("Result: ");
    for (int i = 0; i < newSize; i++) {
        printf("%d ", digits[i]);
    }
    printf("\n");

    free(digits);
    
    return 0;
}



/*
run:

Result: 1 0 0 0 

*/

 



answered Jul 2, 2025 by avibootz
...