Как сделать функцию без 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д