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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
   
int main() {
  int x;
  char buffer[256];
 
  /* scanf */
  fgets(buffer, sizeof buffer, stdin);
  x = atoi(buffer);
       
  /* printf */
  char *p = buffer + sizeof buffer;
  *--p = '\0';
 
  for (int s = x >= 0 ? x : -x; s != 0; s /= 10)
    *--p = '0' + s % 10;   
 
  if (x == 0)
    *--p = '0';
  else if (x < 0)
    *--p = '-';
         
  fputs(p, stdout);
}

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

  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
Похожие ответы