относительно о функции записи,

относительно о функции записи,

27.01.2020 10:21:46 Просмотров 20 Источник

Я хочу показать все цифры номера, как " 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();
     }

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

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

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

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/59926624/concerning-about-write-function#comment105975605_59926624
Чтобы помочь людям помочь вам, пожалуйста, отредактируйте , чтобы превратить показанный текст (это не код) в минимально воспроизводимый пример . Для этого вам нужно исправить синтаксис, нарушенный числами в начале каждой строки. Превратите их в комментарии или удалите, пожалуйста.
https://stackoverflow.com/questions/59926624/concerning-about-write-function#comment105975626_59926624
Добро пожаловать в SO. Пожалуйста, не добавляйте номера строк в свой код. Это мешает ему использовать c&p и компилировать его. Какого результата вы ожидали?
https://stackoverflow.com/questions/59926624/concerning-about-write-function#comment105975774_59926624
по правилу, я не могу использовать функцию "for", и я должен использовать функцию " write

Ответы - относительно о функции записи, / concerning about write function,

Some programmer dude

27.01.2020 10:27:42

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

При использовании наиболее распространенной кодировки ASCII значение символа '0'равно целому значению 48.

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

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

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

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

https://stackoverflow.com/questions/59926624/concerning-about-write-function/59926704#comment105975809_59926704
Спасибо за помощь, но, как правило, я не могу использовать функцию "for", и я должен использовать функцию " write
https://stackoverflow.com/questions/59926624/concerning-about-write-function/59926704#comment105975961_59926704
@Joseph затем вы просто переводите цикл for(это не функция) в соответствующий while, только не используя магическое число write.
https://stackoverflow.com/questions/59926624/concerning-about-write-function/59926704#comment105977203_59926704
Так... Что такое магическое число??? что это значит? а STDOUT_FILENO, о котором вы говорили, что это такое?
https://stackoverflow.com/questions/59926624/concerning-about-write-function/59926704#comment105977278_59926704
@Joseph пожалуйста, перейдите по ссылке в моем вопросе. STDOUT_FILENO-это макрос препроцессора, который расширяется до 1, но там, где 1может означать что угодно или ничего особенного, STDOUT_FILENOчитаем и понятен и сразу же распознается как стандартный выходной STDOUT).
https://stackoverflow.com/questions/59926624/concerning-about-write-function/59926704#comment105979508_59926704
@ Joseph фраза "магическое число" используется для описания числа, которое появляется в программе без объяснения причин. Использование стандартного макроса препроцессора упрощает чтение кода и не требует дополнительных затрат времени выполнения.
https://stackoverflow.com/questions/59926624/concerning-about-write-function/59926704#comment105982983_59926704
Вы должны использовать write? Я собирался ответить, чтобы использовать printfвместо этого.
Закрыть X