Можно ли ограничить ввод в буфер, к примеру, 10 символами? - C (СИ)
Формулировка задачи:
Всем привет! Делаю задания, оно прозвучало так: внесите изменения в функцию, чтобы она прекращала ввод после загрузки 10 символов.
Я умею делать, чтобы ввелось только 10 символов, но чтобы в входном потоке заблокировать ввод, так я ещё не научился. Подскажите как сделать, или я не правильно задание понял. Функция которую изменить нужно
спасибо
#include <stdio.h> #include <string.h> void func(char *ar, int n); int main() { char string[40]; func(string,10); puts(string); } void func(char *ar, int n) { int i; for(i = 0; i < n; ++i) *ar++ = getchar(); *ar++ = '\0'; }
Решение задачи: «Можно ли ограничить ввод в буфер, к примеру, 10 символами?»
textual
Листинг программы
#include <assert.h> // assert #include <stdio.h> // fgets, stdin #include <stdbool.h> // true #include <stdlib.h> // atoi #define BUF_SIZE 40 void very_smart_function(char* const arr, int len) { assert(len < BUF_SIZE); fflush(stdin); fgets(arr, ++len, stdin); } int main(void) { char array[BUF_SIZE]; int n; while( true ) { puts("How many symbols to read?"); very_smart_function(array, 2); // двузначное число n = atoi(array); if( n <= 0 ) { break; } puts("So, type some symbols!"); very_smart_function(array, n); puts("Your symbols:"); puts(array); } return 0; }
Объяснение кода листинга программы
- Количество символов для чтения - двузначное число.
- Используется функция very_smart_function для чтения строки из стандартного ввода (stdin).
- В этой функции происходит проверка на размер буфера (BUF_SIZE). Если введенная строка превышает размер буфера, то происходит завершение программы.
- В функции main в цикле while происходит запрос на ввод количества символов для чтения.
- После ввода строки вызывается функция very_smart_function с аргументом n (количество символов для чтения).
- Функция very_smart_function считывает строку из стандартного ввода и сохраняет ее в массиве array.
- После этого выводится сообщение с введенными символами.
- Если количество символов для чтения меньше или равно нулю, то цикл while завершается.
- Ввод и вывод управляется функцией fgets.
- Функция atoi используется для преобразования символов в целое число.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д