Записать номер в файл без printf в C? - PullRequest
0 голосов
/ 22 октября 2019

Есть ли способ сделать это с помощью системного вызова или другого механизма более низкого уровня, кроме printf? Это просто печатает символы на экран / файл:

write(STDOUT_FILENO, buffer, size);

Спасибо!

1 Ответ

0 голосов
/ 23 октября 2019

Я понял это без уроков, только ваше предложение по конвертации, спасибо за поддержку! Я надеюсь, что это не слишком небрежно.

#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;
}
...