[C] Nieskończona funkcja generująca liczby

Witam. Już drugi dzień borykam się z problemem napisania funkcji która będzie wywoływana w nieskończonej pętli. Jej zadanie ma polegać na liczeniu od 0 do jakiejś bardzo dużej liczby w formacie 0 1 … 9 nastepnie, 00 01 02 …99, 000 001 002 … 999 i tak dalej. Funkcja ma zwracać tablicę znaków tej liczby. Próbowałem funkcji sprintf z 02%d czyli wypisywaniem zer, lecz nic mi z tego nie wyszło. Proszę o pomoc.

Jak “bardzo nieskończona” ma to być funkcja? Użyciem printf z flagą “d” w zasadzie skończy się na nieco ponad 2 mld.

 o tym, że z flagą d mogę wygenerować tylko 10 znaków. myślę, że do 32 znaków tablicy wystarczy.

Więc ja algorytm widzę tak:

Czy mógłbyś przedstawić swój sposób na jakimś innym przykładzie?

Tego się już nie da prościej wytłumaczyć, podałem ci algorytm… w każdym razie masz kod, bo to około 30 linijek. Dłużej mi zajmie szukanie jakiś wyjaśnień na zasadzie czemu 1+1 = 2.

#include <stdio.h>

int main(void) {
	int idx = 0;
	char arr[64];
	
	memset(arr, '0', sizeof(arr));

	while (idx < 3) {
		print(arr, idx);
		idx += inc(arr, idx);
	}
	
	return 0;
}

int inc(char* arr, int idx) {
	if (arr[idx] < '9') {
		arr[idx] = arr[idx] + 1;
	} else {
		arr[idx] = '0';
		return idx > 0 ? inc(arr, idx-1) : 1;
	}

	return 0;
}

void print(char* arr, int idx) {
	for (int i = 0; i <= idx; i++) {
		putchar(arr[i]);
	}

	putchar('\n');
}

Sterowanie ilością liczbą (bo policzalne - self grammar nazi) znaków przez liczbę w pętli while w main.