о функции записи, - PullRequest
       5

о функции записи,

0 голосов
/ 27 января 2020

Я хочу показать все цифры, например "0123456789"

в Unix, я использовал vim и набрал код, например,


    #include <unistd.h>

     void ft_print_numbers(void)
     {
         int i;

         i=0;
         while(i <= 9)
         {
             write(1, &i, 1);
             i++;
         }

    }

     int main()
     {
         ft_print_numbers();
     }

, но результат, который Я видел, ничего не было ... Я ничего не вижу, кроме пустого ...

Что не так с моим кодом?

Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 27 января 2020

Существует нет известной схемы кодирования, где целые цифры равны их символу.

Используя наиболее распространенную доступную кодировку, ASCII, значение для символа '0' - это целочисленное значение 48.

Теперь для хороших новостей: спецификация C требует, чтобы все цифры кодировались последовательно. Это означает, что '1' будет 49, et c. до '9', то есть 57.

Таким образом, вы можете l oop от '0' до '9' и записать это значение вместо:

for (int8_t c = '0'; c <= '9'; ++c)
    write(STDOUT_FILENO, &c, 1);

[ Обратите внимание, что я изменил волхвов c число 1 на символ STDOUT_FILENO, так как числа волхвов c делают код трудным для чтения, понимания и обслуживания]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...