Как сделать функцию без printf или scanf - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Как сделать функцию для такого кода, но чтоб в функции не было printf'а или scanf'a?
Листинг программы
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int x;
  5. scanf("%d", &x);
  6. printf("%d", x);
  7. return 0;
  8. }

Решение задачи: «Как сделать функцию без printf или scanf»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.    
  4. int main() {
  5.   int x;
  6.   char buffer[256];
  7.  
  8.   /* scanf */
  9.   fgets(buffer, sizeof buffer, stdin);
  10.   x = atoi(buffer);
  11.        
  12.   /* printf */
  13.   char *p = buffer + sizeof buffer;
  14.   *--p = '\0';
  15.  
  16.   for (int s = x >= 0 ? x : -x; s != 0; s /= 10)
  17.     *--p = '0' + s % 10;  
  18.  
  19.   if (x == 0)
  20.     *--p = '0';
  21.   else if (x < 0)
  22.     *--p = '-';
  23.          
  24.   fputs(p, stdout);
  25. }

Объяснение кода листинга программы

  1. Подключение необходимых библиотек: iostream.h и stdlib.h
  2. Объявление переменных:
    • x — целочисленная переменная
    • buffer — массив символов
  3. Замена функции scanf:
    • чтение строки с помощью функции fgets
    • преобразование строки в целое число с помощью функции atoi
  4. Замена функции printf:
    • инициализация указателя p на последний символ массива buffer
    • обнуление последнего символа массива buffer с помощью оператора деления по модулю /
  5. Цикл for:
    • инициализация переменной s значением x, если x больше или равно нулю, иначе -x
    • установка значения переменной s на остаток от деления на 10
    • добавление символа '0' + s в конец строки, выводимой на экран
  6. Проверка значения переменной x:
    • если x равно нулю, то добавляется символ '0' в конец строки
    • если x меньше нуля, то добавляется символ '-' в конец строки
  7. Вывод строки на экран с помощью функции fputs

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы