Можно ли ограничить ввод в буфер, к примеру, 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 символами? - C (СИ)»

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;
}

8   голосов, оценка 4.625 из 5


СОХРАНИТЬ ССЫЛКУ