Как сделать функцию без 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); }
Объяснение кода листинга программы
- Подключение необходимых библиотек: iostream.h и stdlib.h
- Объявление переменных:
- x — целочисленная переменная
- buffer — массив символов
- Замена функции scanf:
- чтение строки с помощью функции fgets
- преобразование строки в целое число с помощью функции atoi
- Замена функции printf:
- инициализация указателя p на последний символ массива buffer
- обнуление последнего символа массива buffer с помощью оператора деления по модулю /
- Цикл for:
- инициализация переменной s значением x, если x больше или равно нулю, иначе -x
- установка значения переменной s на остаток от деления на 10
- добавление символа '0' + s в конец строки, выводимой на экран
- Проверка значения переменной x:
- если x равно нулю, то добавляется символ '0' в конец строки
- если x меньше нуля, то добавляется символ '-' в конец строки
- Вывод строки на экран с помощью функции fputs
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д