Я понял это без уроков, только ваше предложение по конвертации, спасибо за поддержку! Я надеюсь, что это не слишком небрежно.
#define MAX_CHAR_LENGTH 22 //64bit Character Length including sign
char *itoa(long number){
char *string = malloc(MAX_CHAR_LENGTH);
char temp, index = 0;
char sign = number < 0 ? '-' : 0;
if (number == 0) {
string[index++] = '0';
string[index] = '\0';
}
else while (number){
string[index++] = ((number % 10) * (number < 0 ? -1 : 1)) + 48;
number/=10;
if (number == 0){
if (sign){
string[index++] = sign;
}
string[index] = '\0';
for (int i = 0, j = index - 1; i < j; i++, j--){
temp = string[i];
string[i] = string[j];
string[j] = temp;
}
}
}
string = realloc(string, index);
write(STDOUT_FILENO, string, index);
return string;
}