169 похожих чатов

Зачем тебе столько раз сискол звать только ради того, что

б считать строку?

40 ответов

13 просмотров

Но внутри-то оно читает сколько это возможно во внутренний буфер и потом оттуда отдаёт. Посмотри вывод strace.

BlackBloodyRabbit-Rabbit Автор вопроса
k4leg
Но внутри-то оно читает сколько это возможно во вн...

Ну так-то мне достаточно убрать флаг нормализации и буферизация на этом закончится)

BlackBloodyRabbit Rabbit
Ну так-то мне достаточно убрать флаг нормализации ...

А ты не убирай. С таким успехом я могу отключить стандартную библиотеку.

BlackBloodyRabbit-Rabbit Автор вопроса
BlackBloodyRabbit Rabbit
Ну так её и ручками написать можно

Все возможно, только вот нужно ли это.

BlackBloodyRabbit-Rabbit Автор вопроса
k4leg
Все возможно, только вот нужно ли это.

А ещё не стоит забывать, что гораздо эффективнее вызвать 1 раз функцию, нежели 4 тыс. раз)

BlackBloodyRabbit Rabbit
А ещё не стоит забывать, что гораздо эффективнее в...

Это да, но иногда элегантность важнее усложнения логики — это называется преждевременная оптимизация.

BlackBloodyRabbit-Rabbit Автор вопроса
k4leg
Это да, но иногда элегантность важнее усложнения л...

К тому же в случае ручного буфера всегда можно выбрать его размер исходя из ожидаемых данных, что также оптимизирует программу, а если для тебя пара доп строчек - это усложнение логики, то сочувствую

BlackBloodyRabbit Rabbit
К тому же в случае ручного буфера всегда можно выб...

И как же ты решишь эту задачу таким образом, учитывая что дальше читать нельзя, чтобы не исчерпать непозиционируемый терминальный ввод?

BlackBloodyRabbit-Rabbit Автор вопроса
k4leg
И как же ты решишь эту задачу таким образом, учиты...

Ну во-первых вам стоит понимать, что буфер стандартного ввода никакого отношения к буферам scanf getchar и тд не имеет. Т.к. он является частью объекта ввода/вывода с 0 номером(зачастую) в таблице дескрипторов его атрибутов.

BlackBloodyRabbit Rabbit
Ну во-первых вам стоит понимать, что буфер стандар...

Что? getchar() и scanf() напрямую влияют на внутренний библиотечный буфер stdin.

BlackBloodyRabbit-Rabbit Автор вопроса
k4leg
Что? getchar() и scanf() напрямую влияют на внутре...

Ну вам стоит азы подтянуть, т.к. вы путаете буфер экземпляра структурки FILE, которым и является stdin, с буферами объектов ядра

BlackBloodyRabbit-Rabbit Автор вопроса

Как минимум мой ответы выше содержат как раз именно инфу о буфере объекта стандартного ввода ядра, о чём ещё может идти речь при упоминании таблицы дескрипторов и снятия флага нормализации?)))

BlackBloodyRabbit Rabbit
Как минимум мой ответы выше содержат как раз именн...

Таки напишите, как вы видите "эталонную" реализацию данной фунции. Не вижу способов, чтобы вышеупомянутая проблема не была затронута, самому интересно как обойти, хотя бы что-то конкретное по этому поводу напишите.

BlackBloodyRabbit-Rabbit Автор вопроса

Размером буфера логично, смысл выделять буфер бо́льшего размера, чем размер чтения?

BlackBloodyRabbit Rabbit
Размером буфера логично, смысл выделять буфер бо́л...

Так а если в самом начале будет новая строка, остальное попросту исчезнет?

BlackBloodyRabbit-Rabbit Автор вопроса
k4leg
Так а если в самом начале будет новая строка, оста...

Почему? Просто повторно вызываем нашу функцию для считывания следующей строки, буфер в которой имеет квалификатор статик

BlackBloodyRabbit Rabbit
Почему? Просто повторно вызываем нашу функцию для ...

Так оно исчезнет, все что мы прочитали? Т. е. прочитали допустим 4096 байт, в начале новая строка. Остальные 4095 исчезнут?

BlackBloodyRabbit-Rabbit Автор вопроса
k4leg
Так оно исчезнет, все что мы прочитали? Т. е. проч...

Квалификатор статик, достаточно вначале проверять пустой ли буфер у нас и если нет - читать из него, потом снова со стандартного ввода

BlackBloodyRabbit Rabbit
Квалификатор статик, достаточно вначале проверять ...

Что за квадификатор магический такой? Тоже хочу, как сделать?

BlackBloodyRabbit-Rabbit Автор вопроса
BlackBloodyRabbit Rabbit
char *get_str(int fd) { static char buff[BUFF_...

И что? Как мне мои родные 4095 байт вернуть?

BlackBloodyRabbit-Rabbit Автор вопроса
k4leg
И что? Как мне мои родные 4095 байт вернуть?

Они будут храниться в этом буфере, можно также сделать статик переменную offset, в которой хранить оффсет для данного буфера

BlackBloodyRabbit-Rabbit Автор вопроса
k4leg
А понял, ну и костыли же.

Да не, с чего бы костыли? Все так делают

BlackBloodyRabbit Rabbit
Да не, с чего бы костыли? Все так делают

А вдруг кто-то изменил позицию или кто-то другой захотел те сокральные 4095 байт?

k4leg
А вдруг кто-то изменил позицию или кто-то другой з...

А, ты не в той функции сделал, а в другую выделил.

BlackBloodyRabbit-Rabbit Автор вопроса
k4leg
А вдруг кто-то изменил позицию или кто-то другой з...

Ну это бред, кто может изменить позицию, если эта переменная также находится в скоупе функции и логику взаимодействия с ней прописываешь ты? А второй вопрос вообще неуместен, т.к. это то же самое, что твои сакральные данные захотят считать из стандартного ввода

BlackBloodyRabbit-Rabbit Автор вопроса

С чего бы? При работе исключительно с этой функцией всё работает

BlackBloodyRabbit Rabbit
Ну это бред, кто может изменить позицию, если эта ...

Таки и чем это неприкрытое непотребство лучше стандартной библиотеки?

BlackBloodyRabbit-Rabbit Автор вопроса
k4leg
Таки и чем это неприкрытое непотребство лучше стан...

Тем, что ты сам можешь выставлять размер блока чтения, при этом одним предефайном, таким образом довольно быстро сможешь найти оптимальный размер для ожидаемых данных и своей системы.

BlackBloodyRabbit-Rabbit Автор вопроса

Аргументация будет?

BlackBloodyRabbit-Rabbit Автор вопроса

А у меня можно прочитать выше)

BlackBloodyRabbit Rabbit
Аргументация будет?

У вас аргументация как у Михалкова: "Если я что-то утверждаю, а вы опровергаете, то это ВЫ должны предоставить доказательства, а не я."?

BlackBloodyRabbit-Rabbit Автор вопроса

Ужас, а если внимательно посмотреть?

BlackBloodyRabbit-Rabbit Автор вопроса
k4leg
У вас аргументация как у Михалкова: "Если я что-то...

Теоретически я всю аргументацию расписал выше, тесты под r9 5900 могу завтра приложить

BlackBloodyRabbit Rabbit
Теоретически я всю аргументацию расписал выше, тес...

Только с тем же уровнем абстракции и теми же "куртизанками".

BlackBloodyRabbit-Rabbit Автор вопроса

Но если ты так сильно хочешь доказать, что я не прав - вперёд, доказывай, только аргументы не забудь захватить)

Похожие вопросы

Обсуждают сегодня

Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Хм. А телеграм апи работают через HTTP?
The Bird of Hermes
14
Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Ну раз я пока тут, задам пару глупых вопросов. Зачем писать на ассемблере если компилятор довольно умный, а ассемблер много времени занимает? В каких прикладных задачах сейчас...
Максим Рябцев
20
Я тут за тем, чтобы задать вопрос, так как не знаю ассемблер, учу с/с++. Короче, насколько дорога операция перехода в функцию при ее вызове? Дело в том, что в с++ есть макросы...
Максим Рябцев
12
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
А какие чаты вообще в ходу? Auto aim? И что еше
do you think you're better off alone? А
13
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Карта сайта