Этого треда уже нет.
Это копия, сохраненная 24 апреля 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
C Propaganda.jpg1,9 Мб, 2000x2610
C Programming Language #65 /clang/ # OP 1852710 В конец треда | Веб
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь https://ideone.com/ https://wandbox.org/ или https://pastebin.com/ для вставки кода, если он длиной больше нескольких строк или содержит [​i​] или ∗.

Что читать:

- Brian Kernighan, Dennis Ritchie "The C Programming Language": http://www.cypress.com/file/56651/download
- Stephen Prata "C Primer Plus, 6th Edition" (2014): относительно свежая, знает про C89/C99/C11, описывает различия, объемная (около тысячи страниц), годная, с вопросами, упражнениями и ответами. Читать после K&R или до.
- Zed A. Shaw "Learn C the Hard Way" (2015): годное пособие для гуманитариев для гуманитариев!
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
- ООП, например: http://www.cs.rit.edu/~ats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт)
- Стандарт ISO/IEC 9899:2011 (C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- Черновик стандарта ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2479.pdf (февраль, с диффами)
- Последний черновик ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2583.pdf (октябрь)

Чем компилировать:

- Очевидный GCC.
- clang: оче годно, батя рекомендует.
- Intel C++ Compiler: оптимизации, тысячи их.
- Visual Studio Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.
- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.
- TCC: очень маленький компилятор с багами и поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.

Что еще почитать:

http://c-faq.com/
FAQ из comp.lang.c. Древний, но все еще актуален.

Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition" (2002)
Ебаный пересказ стандартов C89 и C99 (включая стандартную библиотеку). Для не осиливающих стандарт в оригинале. Читать в качестве подготовки к собеседованиям (есть задачник с ответами) и для ознакомления с масштабами пиздеца перед написанием своего парсера/компилера.

Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994)
"Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).

Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013) - почитать, вкатиться в указатели.

Ben Klemens "21st Century C: C Tips from the New School" (2012)

Paul Deitel, Harvey Deitel "C for Programmers with an Introduction to C11" (2013)

Stephen G. Koch@n "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

MISRA Ltd. "Guidelines for the Use of the C Language in Critical Systems" (2013)
Набор рекомендаций по написанию надежного кода на C (промышленный стандарт). Читать - однозначно, следовать - вдумчиво и без фанатизма. Также можно посмотреть https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard и http://web.archive.org/web/20190213011655/homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdf

Еще более длинный список: http://www.iso-9899.info/wiki/Books#Learning_C

https://github.com/kozross/awesome-c

Онлайн-утилиты:

- https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).
- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.

Прошлые треды:

- №62: https://arhivach.net/thread/616070/
- №63: https://arhivach.net/thread/623165/
- №64: https://arhivach.net/thread/623166/ >>1830513 (OP)
2 1852726
>>52710 (OP)
Почему С, а не С++?
3 1852730
>>52726
По С++ тред рядом в /pr/, воспользуйся поиском. Языки разные.
4 1852735
>>52726
Проще, компактнее, меньше рантайм, меньше оверхеда (да-да, даже vtable это индирект колл) больше охват девайсов.
А вот почему C, а не Zig
5 1852737
>>52735
Тогда зачем С++, а не С?
6 1852749
>>52735
Потому что правильно - Sieg. Чел слова писать не умеет, а ты хочешь его языком пользоваться
7 1852776
>>52737
Сложнее, громоздко, больше рантайм и оверхед.
8 1852790
>>52726
Си - кайфовый минималистичный читабельный язык для души.
9 1852793
>>52790
Но как без классов и объектов? Массивы передавать? А без оверрайдов и интерфейсов? Без дженериков?
10 1852798
>>52793

>Но как


Без задней мысли.
11 1852824
>>52793
Но объекты суть структуры с указателями на функции. И так далее.
12 1852828
>>52824
И где тут минимализм?
13 1852835
>>52735

>меньше оверхеда (да-да, даже vtable это индирект колл)


Платишь за то, что используешь.
Переизобретённое ООП в рамках С со структурой c указателями на функции — это тоже индирект колл.

Факты, которые ты привёл, верны. Но твой аргумент — invalid.
14 1852869
>>52726
По тому что С хватает для своих задач и не надо разбирать весь сахар чтоб написать программу.
>>52737
За тем что С не хватает когда твой проект разросся и стал большим на столько, что ты сам выдумываешь плюсовый сахар вместо того чтоб взять готовый.
15 1852903
>>52828
А почему его тут нет?
16 1852919
>>52793
Ты шо ебу дал? Мы тут на мк пердолимся

СВОБОДУ ЖЕЛЕЗУ! ХУЙ ЖЭЭСУ! ЗИП ФАЙЛ!
17 1852920
>>52869

> ты сам выдумываешь плюсовый сахар вместо того чтоб взять готовый


С плюсовым сахаром принято тащить кучу говна. Например, шаблоны. Например, исключения.
18 1852925
>>52835
Насколько я понимаю, в с++ ты все же платишь больше, чем используешь, а иногда используешь лишнего.
19 1852974
>>52925
Я бы попросил привести пример, но тред не про это, так что не надо.
20 1853131
>>52920

>Например, шаблоны



Которые позволяют в компайл тайме в миллиард раз больше того что может сраный препроцессор ссей и всё это с проверкой типов вместо ссяшной стрельбы из пулемета по ногам копипастой и мисюзом.
21 1853140
То есть С для всего, что имеет тактовую частоты не выше пары сотен мегагерц?
22 1853161
>>53140
Не знал

пук
23 1853169
>>53140
Если объяснять на пальцах, то ты в браузере читаешь текст выводимый через C-либу freetype и смотришь картинки через C-либы libpng, jpeg и так далее.
24 1853173
>>53131
Кстати, да, не понял его предьявы к темплейтам.
С эксепшенами ещё могу понять, сам отключал в некоторых проектах.
25 1853179
>>53140
Шизанутый, сколько всего разного может "пользоваться" сишными библиотеками? Сколько всего может использовать сишные библиотеки? А сипипишные, а? То то же.

А ты, наверное, обычный js-тролль, который тааааак любит БААААЛШЫЫЫЕ СЫСТЕЕЕМЫ на js, да ведь, толерантный хипстерочек?
26 1853185
>>53179
Ну тут ты немного не прав, многие С++ либы иногда могут иметь Сишный апи через extern "C" и описание функций, которые дёргают методы из классов.
Впрочем, у всех языков ffi обычно ассоциируется с вызовом именно сишных функций.
27 1853187
>>53169
Так, наверно, исторически сложилось, или из-за совместимости, или из-за линух-пердоль. Почему, кстати, они пишут на С?

>>53179
Нет, но я вправду не имел дел с С/C++, поэтому пытаюсь понять. Суть не в том, чтобы система была большой, а чтобы программисту было удобнее и эффективнее работать. А железо уже давно слишком быстрое, чтобы разница в производительности была заметной.
28 1853191
>>53187
Чтобы избежать лишних прослоек.
Системщики - вообще страшные люди, крайне любят низкоуровневое программирование, байтоёбство и прочие вещи, которые всякие фронтэндеры считают ненужными и излишними.
А Си тебе как раз дает относительно низкий уровень абстракции и, вместе с тем, крайне широкие возможности по твику и решению тех или иных прикладных задач.
Я сам крайне охуел, когда у меня получилось на сях реализовать прогу для восстановления фотографий из RawData и парочку простейших фильтров для джипега. При этом, не было мест, в которых бы у меня был глобальный затык из-за непонимания парадигмы языка. Да-да, я тоже прошёл CS50.

Пойми один простой вещь.
Когда ты пишешь на Питоне - помни, что под каждой твоей строчкой крутится полсотни строчек сишного кода.
Да и не только на Питоне, лол.

А ведь чем ниже уровень - тем меньше вероятность глобально накосячить.
29 1853195
>>53191

>А ведь чем ниже уровень - тем меньше вероятность глобально накосячить


Наоборот: чем выше уровень, тем эффективнее и лучше отлажен код уровнем ниже. А сколько там строк для меня значения не имеет.
30 1853196
>>53131
Скажи, а оно мне надо?
Вот если у меня задача получать данные по спиайю каждые 100 микросекунд, брать бпф и выдавать спектр в уарт НАХУЯ МНЕ НУЖЕН ЭТОТ САХАР? чтоб больше запутаться?
>>53140
С для того где его хватает, частоты не важны.
>>53173

>не понял его предьявы к темплейтам.


Они не нужны, если у тебя маленький деревянный код, они только будут мешать чтению.
31 1853213
>>53196
Там, где они не нужны — они не нужны. Кто ж поспорит. Но в других местах нужны.
32 1853217
>>53185
Да, кстати. Спасибо, что поправил. Могут иметь и сишный интерфейс.

Ну, я как раз и про "привязку" ffi к C и имел ввиду.
34 1853296
Что несете.

Классы это структуры. Си с классами это Си, а не кресты.

А вот кресты это STL, эти аллокаторы, енумераторы и прочие говнокаторы, и джаваскрипт-однострочная дрисня с вложенными функциями. Короче любое говноскриптовое говно - черный ящик, которое хуй пойми как работает и в глазах программиста никак не соотносится к реальному коду - ассемблеру.
sage 35 1853298
>>53131

> Которые позволяют в компайл тайме в миллиард раз больше


Да. Только что-то сложное практически невозможно прочитать. Да, как и сложные макросы в Си. Но лучше от этого шаблоны не становятся.
36 1853335
>>53195
Что-то я орнул. Далеко не всегда.
Если так идти выше по абстракции - зачем вообще кодить?
Устраивайся менеджером и колошмать мозги подчиненным разработчиком: у них-то будет все лучше отлажено, чем у тебя.
37 1853638
>>52793

>Массивы передавать?


Указатель на первый элемент.
38 1853640
>>52920

>. Например, исключения.


Отключаются опциями компилятора.
При этом классы останутся доступны, а STL отвалится.
39 1853655
>>53640

> а STL отвалится.


Необязательно
40 1853662
>>53298
Да все оно читается замечательно. А если программа большая и сложная так вообще намного лучше чем 500 функций под каждый принимаемый тип с именем этого типа в имени.
МайКласс1sumМайКласс2()

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

>>53638
Хранить глобально ничего никуда не передавать.
Привет эмбеддед.
>>53640
И толку с таких крестов? Выше писали С с классами это не кресты.
41 1853664
>>53662

>И толку с таких крестов?


Много.

>>53662

>А если программа большая и сложная

42 1853672
>>53335
Затем, что чем выше по абстракции, тем сложнее, то есть обладающий большим набором признаков и свойств результат. А чем этот набор больше, тем выше шанс, что он уникален и меньше тебя удовлетворяет.
Ты же на машинном коде все не пишешь?
43 1853675
>>53672

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


Охуеть, кто-то ещё кроме меня с интеллектом итт
44 1853730
>>53664
Чё сказать хотел?кроме того что ты не умеешь создавать новые файлы.
45 1853811
>>53662

> И толку с таких крестов? Выше писали С с классами это не кресты.


У меня друг работал в геймдеве, писали игры для телефонов на крестах. И во всех проектах по дефолту прям были выключены исключения и rtti. Использовалась своя stl. Так что - такие кресты нужны. То что ты юзекейса не нашел - не означает что другие не найдут.
46 1853954
>>53730
Это не мой код, это мерзкий openssl, с которым приходится работать. Хотел сказать — посмотреть, какая помойка.
47 1853957
>>53954

>посмотрите


Фикс
48 1854027
>>53954

>Хотел сказать — посмотреть, какая помойка.


Просто ты никогда не видел такого и возбудился.
Но при этом то же самое на С++ выглядело бы красивше.
49 1854050
>>54027

>Просто ты никогда не видел такого и возбудился.


Видел конечно, но обычно мимо проходил, а тут вникать пришлось.

>Но при этом то же самое на С++ выглядело бы красивше.


Об этом и говорю.
Но так-то и на С было бы красивше чем то, что есть, если бы писали не так монолитно КАК ДАУНЫ БЛЯДЬ.
50 1854055
>>53954
Так его вроде математики, а не программисты писали.
По крайней мере слышал такое объяснение, когда Heartbleed в нем нашли
51 1854118
>>54050
Код пишет человек, а не язык.
Чем больше свободы в языке, тем более уебищный код можно написать. но это если программист рукожоп, а если программист грамотен, то и код будет тем лучше, чем больше у него возможностей.

Говоря просто, крутой язык (си) отражает способности программитста. Какой ты - такой твой код. Свобода означает безграничные возможности, но в то же время накладывает абсолютную ответственность. За свои действия отвечаешь только ты, полностью, никаких нянек вроде языка с анальными ограничениями и принуждениями тут нет, так что свои косяки свалить не на кого и за тебя красивый код никто не напишет и не направит "как надо". На си пишут только настоящие программисты, которые сами за себя отвечают и сами знают как им надо, а не ищут нянек, которые помогут и направят тупое дитятко на "правильный путь".
sage 52 1854192
>>53191
бро, мож тоже пройти CS50?
53 1854228
народ, вы тут по операционкам шарите
скажите, я вот себе поставил линукс и проебался: не работают дрова вай фая и нет возможности подрубить кабель
начал вручную скачивать на одном компе дрова и их зависимости всякие, но в итоге ебусь уже день с тем, что одно трубует другое, а оно еще другое и еще и еще - короче пиздец
вопрос по теме: одна из вот этих нужны хуевин - gcc, но у него вереница блять зависимостей
где можно найти архив с уже всеми укомплектованными .deb файлами?
54 1854242
>>54228

>с уже всеми укомплектованными .deb файлами


На фул образе дистра
55 1854310
пикрилы, программа просто останавливает свое выполнение после ввода переменной, в чем здесь проблема?
56 1854321
>>54055
Да, и это видно прямо по коду.
57 1854386
>>54242
а ето где?
58 1854402
>>54386
На офсайте
image.png86 Кб, 1057x738
59 1854435
Товарищи сишники, объясните пожалуйста несколько моментов в этом коде. Он сортирует массив указателей на строки. Почему в строке 7 мы приводим полученные войдовые указатели к типу "указатель на указатель на char", а потом разыменовываем? Почему не просто приводим к указателю на char? Также непонятна строка 14 ну и следовательно 15. Почему в качестве размера массива мы передаем именно такую константу?
60 1854469
>>54310
АААА МОИ ГЛАЗААА
Ну очевидно же - что-то делаешь не так.
Может где-то не используешь нужную константу с указанием типа, или где-то в коде не то написано.
61 1854482
>>54435

> Почему в строке 7 мы приводим полученные войдовые указатели к типу "указатель на указатель на char", а потом разыменовываем?


Потому что qsort передает в компаратор указатели на элементы массива. Выходит в функции будут char ×× переданы, но реальный тип void ×, его надо привести к char ×× чтобы после разыменования указателя был тип char × который требуется функции strcmp.

> Почему не просто приводим к указателю на char?


А ещё разыменовать void × нельзя, так как неизвестен размер типа void.

> Также непонятна строка 14 ну и следовательно 15. Почему в качестве размера массива мы передаем именно такую константу?


sizeof возвращает размер типа.
`sizeof a` вернёт размер в байтах всего массива(20 байт или 40 байт), sizeof (char ×) вернёт 4-8 байт(зависит от размера указателя).
62 1854483
>>54469
очевидно, но я не понимаю в чем проблема. Не могу найти. И почему глаза болят?
63 1854499
>>54482
Спасибо, разобрался.
64 1854571
>>54310
В Си нету брейкпоинтов?
65 1854575
>>54483

> очевидно, но я не понимаю в чем проблема.


Вот я тоже не понимаю, не вижу потому что код запутанный, полон неявных приведений int к float, перемножения и деления float на int. Плюс ко всему код плохо структурирован и его читать проблематично. В цикле у тебя вообще делится целое число 1 на целочисленную переменную i, если i не ноль(а оно не ноль судя по коду), то результат такой операции всегда 0 будет. И так далее. Просто запутанный и проблемный код.

> И почему глаза болят?


Код структурирован без какой-либо на то логики и формальных правил.
66 1854581
>>54571
Нет. И в плюсах нет.
67 1854583
>>54575
как бы ты тогда тешил эту задачу?
68 1854584
>>54575

>результат такой операции всегда 0 будет


Ещё 1 может быть.
69 1854589
>>54583
Красиво и четко.
70 1854590
>>54584
Таки да. Есть вариант, с `i == 1`.
>>54583
Красиво и четко.
Эпсилон считать можно и не через pow.
Расписать формулу для члена ряда нормально.
Записать ее с использованием float литералов, и функций явно принимающих float(а может и double тебе нужен).
Структурировать код надо так, чтобы читать было проще, а не выглядел он как ебучая картина Пикассо.
По мере того как начало правильно считать и работать - вносить все ифы и прочее с ограничениями.
>>54589
Кажется ты читаешь мои мысли, ахаха.
71 1854806
>>54310
Сканф_С???!!
Фабс(флоат)??
ты вообще дурачёк? сложно писать как все? надо выебнуться?
72 1854812
>>54310
вангую у тебя z всегда больше e и всё время растёт, поэтому цикл никогда не завершается
тебе надо не z с e сравнивать, а разницу между новым z и и предыдущим
73 1854818
>>54806

> Сканф_С???!!


scanf_s это безопасная функция scanf, предоставляемая шиндошсом. Под шиндошс с ней норм.
74 1854901
>>54310

>пик 2


Какой мерзкий пиздец с проверкой ввода. А ведь можно было просто поставить goto.
75 1854909
>>54901
Щас студенты, которых учат, что goto плохо, тебе пояснят твою неправоту.
76 1854910
>>54310

> пикрилы, программа просто останавливает свое выполнение после ввода переменной, в чем здесь проблема?



Отладочные принтфы запретили?
77 1854913
>>54901
Нет там пиздеца. Даже красиво как-то.

>>54909
goto незаменим при написании конечных автоматов.
Вот там действительно макароны без goto получаются.
78 1854927
>>54310

Ну и да, вся матх.хэ расчитана на даблы, все функции работают только с даблами

float - онли для гейдева, что бы графон в 144 фпс и физон в нем же считать.

Используй даблы.
79 1854933
>>54913

typedef enum{
MOCHA,
PIDOR,
BLYADINA,
HUI
} State;

State s = HUI;
bool isFinished = false;
while(!isFinished){
switch(s){
case HUI:
...
case MOCHA:
...
break;
case PIDOR:
...
break;
case BLYADINA:
...
s = PIDOR;
break;
default:

}
}
79 1854933
>>54913

typedef enum{
MOCHA,
PIDOR,
BLYADINA,
HUI
} State;

State s = HUI;
bool isFinished = false;
while(!isFinished){
switch(s){
case HUI:
...
case MOCHA:
...
break;
case PIDOR:
...
break;
case BLYADINA:
...
s = PIDOR;
break;
default:

}
}
80 1854936
>>54933
Даже не смешно. Ты попробуй реальный сложный автомат запилить.
81 1854939
>>54936

>Даже не смешно. Ты попробуй реальный сложный автомат запилить.



То же самое, только

State s = HUI;
bool isFinished = false;
while(!isFinished){
switch(s){
case HUI:
s = processHui();
break;
case MOCHA:
s = processMocha();
break;
case PIDOR:
s = processPidor();
break;
case BLYADINA:
s = processBlyadina();
break;
default:
printf("DA TY OHUEL SUKA");
isFinished = true;
}
}
82 1854941
>>54939
Да я уже видел что ты знаешь как работает оператор switch.
Ты хотя бы препроцессор для Си напиши беp goto.
83 1854947
>>54192
Пройди, это несложно.
Я не скажу, что курс много даёт, но будешь понимать в ЯПах чуть больше.
84 1854949
>>54228

>где можно найти архив с уже всеми укомплектованными .deb файлами?


Какой линукс ты себе поставил?
В убунте apt тебе автоматически все зависимости вытянет, как и любой пакетный менеджер.
85 1855074
>>54818

>scanf_s это безопасная функция scanf, предоставляемая шиндошсом.


Верно, но пользоваться ей не нужно.
Эти виндофункции _s оказались ошибкой.
86 1855252
>>54913

>Нет там пиздеца.


Вообще то есть адовое дублирование кода.
A
B
if(cond)
{
do {
C
A
B
}while(cond)
}
87 1855262
>>55252
А, точно, есть.

while(1)
{
/.. код ввода тут .. /
if(cond_is_good)
break;
}
88 1855517
>>54118
повтори еще раз, непонятно же, заебешь
89 1855910
>>54818
Которая принимает сколько аргументов? а сколько ты передаёшь?

>Под шиндошс с ней норм.


Но зачем?
>>54910

>Отладочные принтфы запретили?


Пиздец деграданты.

>>1855450


>Нахуй нужно, линукс даже на кофеварках.


Ну удачи, лол, особенно посмотрю на тебя в ЦОС с линуксом.
ты просто не понимаешь в чём разница между микроконтроллером и микропроцессором и области применения

>>1855538


>все подобные штуки будут писаться на си под rtos.


Ртос это и есть линукс(в 80% случаев) , пилится всё на бареметал.

>>1855832


Чтоб в фейсбук зайти.
А если серьёзно - проще поставить МК чем ебаться с логикой на транзисторах

>>1855841


классика маркетологов, а иван ерохин производит готовый продукт где ничего не надо качать и управлть с телефона, а где есть 4 кнопки, никаких головняков.
90 1855952
>>55910

> последняя строка


Два кофе этому господину.

Есть, короче, кофе машины. На них 2-3 кнопки - эспрессо, средний и большой американо. ВИСЬО. Хочешь капучино? Сбоку есть капучинатор: трубка мокается в стакан с молоком, нажимается еще одна кнопка, выплевывается теплая молочная пена.

И никаких скриптов.
91 1855958
>>55910

> Которая принимает сколько аргументов? а сколько ты передаёшь?


> Но зачем?


Давай посмотрим сюда:
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/scanf-s-scanf-s-l-wscanf-s-wscanf-s-l

>These versions of scanf, _scanf_l, wscanf, _wscanf_l have security enhancements, as described in Security Features in the CRT


Ага, идём дальше:
https://docs.microsoft.com/en-us/cpp/c-runtime-library/security-features-in-the-crt
Ну тут и все становится на свои места, просто детект ошибок и адекватный вывод их, чтобы кто-то юзающий функции не выстрелил себе в ногу. Вполне полезно, особенно для бедного студента который лабу пишет
92 1856012
>>55958
Ок, используй.

>чтобы кто-то юзающий функции не выстрелил себе в ногу


Чтоб не выстрелить себе в ногу, надо не стрелять себе в ногу.
Заебали уже прохрамисты которые пишут так что оно может "выстрелить себе в ногу", пиши так чтоб оно не стреляло себе в ногу.
а выстрелить себе всё равно проблем не составит

>особенно для бедного студента который лабу пишет


Вот как раз студентики то пускай себе ногу и отстреливают, у них и время на это есть и на проде не упадет, того гляди поотстреливают себе ноги пока молоды так потом как вырастут этого делать не будут.
93 1856038
>>56012

> Ок, используй.


У меня нет винды. Я лишь поясняю что это за функции у МС имеются в наличии.

> >чтобы кто-то юзающий функции не выстрелил себе в ногу


> Чтоб не выстрелить себе в ногу, надо не стрелять себе в ногу.


"Если ты бездомный, просто купи дом"

> Заебали уже прохрамисты которые пишут так что оно может "выстрелить себе в ногу", пиши так чтоб оно не стреляло себе в ногу.


"Да вот возьми и купи дом. Нет денег? Заработай!"

> а выстрелить себе всё равно проблем не составит


"А быть бездомным может каждый, на это много ума не надо"
Примерно так твоя аргументация выглядит

> >особенно для бедного студента который лабу пишет


> Вот как раз студентики то пускай себе ногу и отстреливают, у них и время на это есть и на проде не упадет, того гляди поотстреливают себе ноги пока молоды так потом как вырастут этого делать не будут.


Дык они и отстреливают. Попадают потом на работу/стажировку, и там уже в твоих проектах стреляют в ногу. Пусть на примере этих функций узнают об возможностях пострелять в ноги, и может поинтересуются как эти проблемы обошли.
94 1856154
Я вот прочитал это Brian Kernighan, Dennis Ritchie "The C Programming Language"
Но не нашёл там про оператор ",". Впервые увидел его применение в декомпилированном коде от IDA
96 1856229
>>56164
У меня русская версия. Хз, наверно, пропустил.
97 1856237
>>56038
Один из лучших подходов сишечки это парадигма "оно то есть но если оно плохое то мы его не используем"
Вот это из разряда функций которые использовать просто не надо.
Так же как и цикл "Ду вайл"(кроме определенных случаев где он действительно уместен)

А при чем тут бездомные. Ты не можешь писать код предварительно подумав что и где он делает? Или тебе надо чтоб тебя ограничивали и говорили что так нельзя?
Так и появляются говносишники которые перешли из какой-то джавы с тотальным анальным контролем которые пишут говно из-за того что коданалищатор их не стукает по ручкам.

Как-то хреново отстреливают если не помогает.
Я как-то во время обучения настрелял достаточно чтоб трижды подумать над каждой строчкой
98 1856313
>>56237

> Один из лучших подходов сишечки это парадигма "оно то есть но если оно плохое то мы его не используем"


Тогда почему не удаляют?

> Вот это из разряда функций которые использовать просто не надо.


И почему же? _s ничем тебя особо не обязывает, а при наличии ошибок в коде - тебе может подсказать что ты сделал не так сам компилятор или crt выведет что-то.

> Так же как и цикл "Ду вайл"(кроме определенных случаев где он действительно уместен)


Ясно, у тебя все нинужно, если ты этому не можешь найти применение.

> А при чем тут бездомные. Ты не можешь писать код предварительно подумав что и где он делает? Или тебе надо чтоб тебя ограничивали и говорили что так нельзя?


Аргументация у тебя уровня дебила.
Я так понимаю, ты с большими проектами на Си не работал и большой командой? Все писал своими потными ручками, чисто свой код и из-за этого у тебя выработалась мания величия? Когда половина кода написана не тобой, и он весьма большой по объему - анализаторы вполне могут сократить время разработки приложения, банально предупредив о какой-то возможности наколоться. Нет, конечно, можно пойти в код, глянуть что за таинственная функция написанная каким-то давно уволившимся сотрудником, изучить как она работает, как тянет ворох других ваших функций, потратить денёк на дебаг, а можно просто увидеть выхлоп анализатора или warning компилятора и исправить сходу свой код на правильный вариант.

> Так и появляются говносишники которые перешли из какой-то джавы с тотальным анальным контролем которые пишут говно из-за того что коданалищатор их не стукает по ручкам.


Смешно, но знаю тонну джавистов которые сбежали от С/С++(причем работали в этой области от 10 лет) просто потому что их достало ебаться с памятью

> Я как-то во время обучения настрелял достаточно чтоб трижды подумать над каждой строчкой


И наверное пишешь 10 строчек в месяц, мня о том какой ты ниибацца охуенный погромист.
99 1856535
>>56313
Большой, старый проект
@
На Си
@
Я первый с анализатором
100 1856573
>>56313

>Тогда почему не удаляют?


По тому что кто-то это уже использовал.

>И почему же?


А делать "как все" нельзя? Надо изебнуться? чего тебе не хватает в обычном сканф?

>_s ничем тебя особо не обязывает


Кроме того что это это виндовая функция

> а при наличии ошибок в коде - тебе может подсказать что ты сделал не так


???? что там она подскажет??

>если ты этому не можешь найти применение.



Ок, давай покажи применения ду-вайл за которое тебя не выпрут с работы за мозгоёбный кодстайл (вариант инициализации не предлагать, там он действительно лаконичен)

> ты с большими проектами на Си не работал и большой командой?


Работал, не могу сказать что уж совсем большими и что уж совсем большой командой(не совсем понимаю как в С можно работать большой командой и главное почему тогда не перейти на язык который для этого больше подходит)

А ты работал?

>Когда половина кода написана не тобой, и он весьма большой по объему


Да у меня фреймворк с открытым говнокодом я замечательно знаю что это такое.

>анализаторы вполне могут сократить время разработки приложения


Да именно так, статанализаторы это наше всё, но не для студента, студент должен работать САМ и СТРАДАТЬ, а статанализаторы пускай будут когда он поймёт что он делает.
просто читаю ОПа(это ты??) с тем как он в 3-х строках обосрался и вместо того чтоб разобраться и отдебажить пришел ныть на двач со своей "безопасной функцией"

>Смешно, но знаю тонну джавистов которые сбежали от С/С++


Ок, я рад за них, при чём ту это?

>И наверное пишешь 10 строчек в месяц


Я пишу коммерческий код за который платят деньги.
А ты лабораторки в вузе?
100 1856573
>>56313

>Тогда почему не удаляют?


По тому что кто-то это уже использовал.

>И почему же?


А делать "как все" нельзя? Надо изебнуться? чего тебе не хватает в обычном сканф?

>_s ничем тебя особо не обязывает


Кроме того что это это виндовая функция

> а при наличии ошибок в коде - тебе может подсказать что ты сделал не так


???? что там она подскажет??

>если ты этому не можешь найти применение.



Ок, давай покажи применения ду-вайл за которое тебя не выпрут с работы за мозгоёбный кодстайл (вариант инициализации не предлагать, там он действительно лаконичен)

> ты с большими проектами на Си не работал и большой командой?


Работал, не могу сказать что уж совсем большими и что уж совсем большой командой(не совсем понимаю как в С можно работать большой командой и главное почему тогда не перейти на язык который для этого больше подходит)

А ты работал?

>Когда половина кода написана не тобой, и он весьма большой по объему


Да у меня фреймворк с открытым говнокодом я замечательно знаю что это такое.

>анализаторы вполне могут сократить время разработки приложения


Да именно так, статанализаторы это наше всё, но не для студента, студент должен работать САМ и СТРАДАТЬ, а статанализаторы пускай будут когда он поймёт что он делает.
просто читаю ОПа(это ты??) с тем как он в 3-х строках обосрался и вместо того чтоб разобраться и отдебажить пришел ныть на двач со своей "безопасной функцией"

>Смешно, но знаю тонну джавистов которые сбежали от С/С++


Ок, я рад за них, при чём ту это?

>И наверное пишешь 10 строчек в месяц


Я пишу коммерческий код за который платят деньги.
А ты лабораторки в вузе?
101 1856695
>>56573

>Кроме того что это это виндовая функция


Кек. Хорошо горит. Предлагаю всем в треде впредь постить только подобные майкрософтовские функции.
102 1856798
>>56573

> >Тогда почему не удаляют?


> По тому что кто-то это уже использовал.


Я б удалил с новых версий языка, если их никто не использует из-за того, что это дурной тон.

>По тому


АХАХАХАХАХХАХАХА
Кажется препроцессор писал за тебя.

> >И почему же?


> А делать "как все" нельзя? Надо изебнуться? чего тебе не хватает в обычном сканф?


Защиты от разьеба стека, которую предоставляет _s версия. Замечу, scanf обычный в gcc/glibc это все тоже делает, но без суффикса, ms решили не ломать обратную совместимость.

> >_s ничем тебя особо не обязывает


> Кроме того что это это виндовая функция


Говоришь как будто это что-то плохое.
О ГОСПОДИ, А ЕСТЬ ЖЕ ТОННА СИСТЕМ ГДЕ НЕТУ LIBC И СТАНДАРТИЗИРОВАННЫХ ФУНКЦИЙ, НА НИХ ПИСАТЬ НЕЛЬЗЯ, НЕ КАНОН, ВЕДЬ ТАМ НЕТУ ТОГО К ЧЕМУ ИМЕННО ДОЛБОЕБ ИЗ СИ ТРЕДА НЕ ПРИВЫК, КАКОЙ УЖАС

> > а при наличии ошибок в коде - тебе может подсказать что ты сделал не так


> ???? что там она подскажет??


Поюзай ASan/TSan, дядь, ты устарел.

> >если ты этому не можешь найти применение.


> Ок, давай покажи применения ду-вайл за которое тебя не выпрут с работы за мозгоёбный кодстайл (вариант инициализации не предлагать, там он действительно лаконичен)


Беру и пишу небольшие циклы do while где удобно. Чет не выгнали ещё за столько лет. Проблемы?

> > ты с большими проектами на Си не работал и большой командой?


> Работал, не могу сказать что уж совсем большими и что уж совсем большой командой(не совсем понимаю как в С можно работать большой командой и главное почему тогда не перейти на язык который для этого больше подходит)


Ты хочешь сказать Си не подходит для большой разработки? Ты точной опытный дядька? Я имею большие сомнения насчёт твоей компетенции.

> А ты работал?


Да. Вполне норм работаю в США.

> >Когда половина кода написана не тобой, и он весьма большой по объему


> Да у меня фреймворк с открытым говнокодом я замечательно знаю что это такое.


Видать ты и поехал крышей после такого дебага.

> >анализаторы вполне могут сократить время разработки приложения


> Да именно так, статанализаторы это наше всё, но не для студента, студент должен работать САМ и СТРАДАТЬ, а статанализаторы пускай будут когда он поймёт что он делает.


"Иисус сказал что надо страдать и мы страдаем все, не только программисты, но особенно программисты, возомнившие себя выше других."
Не мог не вставить.
Зачем страдать, когда можно объяснить и рассказать где про это прочитать? Или ты один из тех программистов, возомнивший себя выше других, который находит в страдании обучение? Я вон учился в универе и не страдал, вполне неплохо обучился, прод не обваливаю, код крутится@лавеха мутится.

> просто читаю ОПа(это ты??) с тем как он в 3-х строках обосрался и вместо того чтоб разобраться и отдебажить пришел ныть на двач со своей "безопасной функцией"


Ни у кого насчёт нее претензий не было, кроме тебя.

> >Смешно, но знаю тонну джавистов которые сбежали от С/С++


> Ок, я рад за них, при чём ту это?


К тому что от таких говнохранителей как ты народ и перестает пользоваться байтоебскими языками.

> >И наверное пишешь 10 строчек в месяц


> Я пишу коммерческий код за который платят деньги.


Тоже.

> А ты лабораторки в вузе?


Смешно.
102 1856798
>>56573

> >Тогда почему не удаляют?


> По тому что кто-то это уже использовал.


Я б удалил с новых версий языка, если их никто не использует из-за того, что это дурной тон.

>По тому


АХАХАХАХАХХАХАХА
Кажется препроцессор писал за тебя.

> >И почему же?


> А делать "как все" нельзя? Надо изебнуться? чего тебе не хватает в обычном сканф?


Защиты от разьеба стека, которую предоставляет _s версия. Замечу, scanf обычный в gcc/glibc это все тоже делает, но без суффикса, ms решили не ломать обратную совместимость.

> >_s ничем тебя особо не обязывает


> Кроме того что это это виндовая функция


Говоришь как будто это что-то плохое.
О ГОСПОДИ, А ЕСТЬ ЖЕ ТОННА СИСТЕМ ГДЕ НЕТУ LIBC И СТАНДАРТИЗИРОВАННЫХ ФУНКЦИЙ, НА НИХ ПИСАТЬ НЕЛЬЗЯ, НЕ КАНОН, ВЕДЬ ТАМ НЕТУ ТОГО К ЧЕМУ ИМЕННО ДОЛБОЕБ ИЗ СИ ТРЕДА НЕ ПРИВЫК, КАКОЙ УЖАС

> > а при наличии ошибок в коде - тебе может подсказать что ты сделал не так


> ???? что там она подскажет??


Поюзай ASan/TSan, дядь, ты устарел.

> >если ты этому не можешь найти применение.


> Ок, давай покажи применения ду-вайл за которое тебя не выпрут с работы за мозгоёбный кодстайл (вариант инициализации не предлагать, там он действительно лаконичен)


Беру и пишу небольшие циклы do while где удобно. Чет не выгнали ещё за столько лет. Проблемы?

> > ты с большими проектами на Си не работал и большой командой?


> Работал, не могу сказать что уж совсем большими и что уж совсем большой командой(не совсем понимаю как в С можно работать большой командой и главное почему тогда не перейти на язык который для этого больше подходит)


Ты хочешь сказать Си не подходит для большой разработки? Ты точной опытный дядька? Я имею большие сомнения насчёт твоей компетенции.

> А ты работал?


Да. Вполне норм работаю в США.

> >Когда половина кода написана не тобой, и он весьма большой по объему


> Да у меня фреймворк с открытым говнокодом я замечательно знаю что это такое.


Видать ты и поехал крышей после такого дебага.

> >анализаторы вполне могут сократить время разработки приложения


> Да именно так, статанализаторы это наше всё, но не для студента, студент должен работать САМ и СТРАДАТЬ, а статанализаторы пускай будут когда он поймёт что он делает.


"Иисус сказал что надо страдать и мы страдаем все, не только программисты, но особенно программисты, возомнившие себя выше других."
Не мог не вставить.
Зачем страдать, когда можно объяснить и рассказать где про это прочитать? Или ты один из тех программистов, возомнивший себя выше других, который находит в страдании обучение? Я вон учился в универе и не страдал, вполне неплохо обучился, прод не обваливаю, код крутится@лавеха мутится.

> просто читаю ОПа(это ты??) с тем как он в 3-х строках обосрался и вместо того чтоб разобраться и отдебажить пришел ныть на двач со своей "безопасной функцией"


Ни у кого насчёт нее претензий не было, кроме тебя.

> >Смешно, но знаю тонну джавистов которые сбежали от С/С++


> Ок, я рад за них, при чём ту это?


К тому что от таких говнохранителей как ты народ и перестает пользоваться байтоебскими языками.

> >И наверное пишешь 10 строчек в месяц


> Я пишу коммерческий код за который платят деньги.


Тоже.

> А ты лабораторки в вузе?


Смешно.
103 1856817
>>56798

>Я б удалил с новых версий языка,


Охуенно, чтоб обновился и твой легаси проект упал, заебись блять и хранить 10 компехляторов.

>Говоришь как будто это что-то плохое.


Использовать что-то особое когда есть обычное с таким же функционалом.

>Ты хочешь сказать Си не подходит для большой разработки?


>Ты точной опытный дядька? Я имею большие сомнения насчёт твоей компетенции.


Да, я вижу когда при разростании проекта наступает момент когда "на плюсах было бы проще"

>Зачем страдать, когда можно объяснить и рассказать где про это прочитать?


За тем что когда ты учишься - это замечательное время обучиться навыку решения говнопроблем и поиска ошибок САМОСТОЯТЕЛЬНО, если ты его обрёл без страданий - честь тебе и хвала, как видешь, вопрашающий не обрёл и вместо того чтоб разобраться и немножно пострадать выбрал "простой путь" а не пройдя хоть пару раз по сложному он в дальнейшем не сможет по нему сам пройтиу него просто банально не будет на это времени

>Ни у кого насчёт нее претензий не было, кроме тебя.


эээ и что? ну у меня есть.

>К тому что от таких говнохранителей


Говнохранителей чего? того что не надо в "свой особый путь"
Если я тебе скажу что я не использую функцию Ссканa ты мне тоже скажешь что я не прав?
104 1856829
>>56817

>отвечать шизу/ларперу/троллю

Wat-Pigeon-Funny-Bird.jpg77 Кб, 631x488
105 1856851
>>56573

>Ок, давай покажи применения ду-вайл за которое тебя не выпрут с работы за мозгоёбный кодстайл (вариант инициализации не предлагать, там он действительно лаконичен)



Что за ёбань я читаю вообще. Может вам и goio удалить хочется?

Мимокрок
106 1856852
>>56851
goto*

быстрофикс
107 1856863
>>56237

>Так же как и цикл "Ду вайл"(кроме определенных случаев где он действительно уместен)



Мой любимое использование do { / code here / } while(0); для избежания использования большой вложенности операторов if

Ибо: if(condition) break; между которыми помещается код.
В результате, после небольшой привычки, код читается даже легче и выглядит пристойнее, чем куча вложенных if()
108 1856892
>>56573
Что не так с do?
109 1857022
>>56573

> Do while


Любой случай, где заранее известно, что условие истина, но стоимость вычисления условия нетривиальна.
Или же случай, где условие не определено до завершения итерации. Примеров море, но мне лень копировать.
110 1857025
>>56573
А как ты определил, "как все"? Покажи статистические исследования с методикой. А то выянсится, что ты один так пишешь.
111 1857051
>>57025
Капитан Кросс-Платформенность утверждает, что тупо весь пингвинячий код написан без этой функции. Какие еще вам нужны доказательства?
func.jpg61 Кб, 997x506
112 1857202
>>56863

> do { / code here / } while(0);


Это именно тот случай, я когда встретил это решение то просто охуел от лаконичности.
>>57022

>Примеров море, но мне лень копировать.


Они все замещаются форами или обычным вайлом.
А читать код где кто-то решил показать всё на что он способен и как познал всё до чего можно только дотянуться это пиздец.
>>57025
пик
113 1857209
>>57202

>Они все замещаются форами или обычным вайлом.


Всё замещается на mov.
114 1857232
>>57209
здраствуте MISRA C rules - 3е правило прямо запрещает срать асемблером куда попало.
115 1857312
>>56817

> >Я б удалил с новых версий языка,


> Охуенно, чтоб обновился и твой легаси проект упал, заебись блять и хранить 10 компехляторов.


Порой бывает старые проекты не собираются на новых компиляторах. Бывает. Может ты не сталкивался, а я сталкивался.

> >Говоришь как будто это что-то плохое.


> Использовать что-то особое когда есть обычное с таким же функционалом.


Тебя ничего не обязывает юзать что одно, что другое. Если платформа что-то предлагает получше, почему не заиспользовать? Я не вижу в этом ничего плохого.

> >Ты хочешь сказать Си не подходит для большой разработки?


> >Ты точной опытный дядька? Я имею большие сомнения насчёт твоей компетенции.


> Да, я вижу когда при разростании проекта наступает момент когда "на плюсах было бы проще"


Я с таким сталкивался только из-за либ которые есть на С++, а на Си - только хуярить самому wrapper.

> >Зачем страдать, когда можно объяснить и рассказать где про это прочитать?


> За тем что когда ты учишься - это замечательное время обучиться навыку решения говнопроблем и поиска ошибок САМОСТОЯТЕЛЬНО, если ты его обрёл без страданий - честь тебе и хвала, как видешь, вопрашающий не обрёл и вместо того чтоб разобраться и немножно пострадать выбрал "простой путь" а не пройдя хоть пару раз по сложному он в дальнейшем не сможет по нему сам пройтиу него просто банально не будет на это времени


Ну мы ему ответили. Он не станет программистом, вероятнее всего. Или хорошим программистом не станет. Меня это устраивает, меньше конкуренции в будущем.

> >Ни у кого насчёт нее претензий не было, кроме тебя.


> эээ и что? ну у меня есть.


А я у меня нет.

> >К тому что от таких говнохранителей


> Говнохранителей чего? того что не надо в "свой особый путь"


Каждый имеет право на свой путь в программировании, выбрать самому как учиться, выбрать какие функции юзать.

> Если я тебе скажу что я не использую функцию Ссканa ты мне тоже скажешь что я не прав?


Да и я их не использую. Но если будут юзать(даже для чтения ебаного stdin) - ну и норм, это ж не я написал, главное чтоб работало правильно.
115 1857312
>>56817

> >Я б удалил с новых версий языка,


> Охуенно, чтоб обновился и твой легаси проект упал, заебись блять и хранить 10 компехляторов.


Порой бывает старые проекты не собираются на новых компиляторах. Бывает. Может ты не сталкивался, а я сталкивался.

> >Говоришь как будто это что-то плохое.


> Использовать что-то особое когда есть обычное с таким же функционалом.


Тебя ничего не обязывает юзать что одно, что другое. Если платформа что-то предлагает получше, почему не заиспользовать? Я не вижу в этом ничего плохого.

> >Ты хочешь сказать Си не подходит для большой разработки?


> >Ты точной опытный дядька? Я имею большие сомнения насчёт твоей компетенции.


> Да, я вижу когда при разростании проекта наступает момент когда "на плюсах было бы проще"


Я с таким сталкивался только из-за либ которые есть на С++, а на Си - только хуярить самому wrapper.

> >Зачем страдать, когда можно объяснить и рассказать где про это прочитать?


> За тем что когда ты учишься - это замечательное время обучиться навыку решения говнопроблем и поиска ошибок САМОСТОЯТЕЛЬНО, если ты его обрёл без страданий - честь тебе и хвала, как видешь, вопрашающий не обрёл и вместо того чтоб разобраться и немножно пострадать выбрал "простой путь" а не пройдя хоть пару раз по сложному он в дальнейшем не сможет по нему сам пройтиу него просто банально не будет на это времени


Ну мы ему ответили. Он не станет программистом, вероятнее всего. Или хорошим программистом не станет. Меня это устраивает, меньше конкуренции в будущем.

> >Ни у кого насчёт нее претензий не было, кроме тебя.


> эээ и что? ну у меня есть.


А я у меня нет.

> >К тому что от таких говнохранителей


> Говнохранителей чего? того что не надо в "свой особый путь"


Каждый имеет право на свой путь в программировании, выбрать самому как учиться, выбрать какие функции юзать.

> Если я тебе скажу что я не использую функцию Ссканa ты мне тоже скажешь что я не прав?


Да и я их не использую. Но если будут юзать(даже для чтения ебаного stdin) - ну и норм, это ж не я написал, главное чтоб работало правильно.
116 1857320
>>57202

> пик


А теперь по всем проприетарным виндоус прогам и самой винде.
117 1857454
>>57202

> они все замещаются фор


Ты ебобо или зелёный?
what is your opinion.png47 Кб, 190x200
118 1857476
>>57202

>Они все замещаются форами или обычным вайлом.


Да-да, конкструкция с бесконечным циклом и if-break-ами существенно лучше, конечно читается. Аллоэ, за это тред кто-то конкретику про do-while принесёт, или лишь бы кококо?

>>57320
Чтобы что?

>>57312

>Тебя ничего не обязывает юзать что одно, что другое.


<Но давайте выпилим цикл с постусловием, он меня напрягает, похуй на совместимость.

Чот биполярочка
119 1857609
>>57232
До свидания.
120 1857619
>>57232
Думаю это была отсылка к тюринг полному языку использующему только mov.
121 1857622
>>57619
ADD, NEG, MOV (aka LOAD & STORE). RCL, AND, OR, XOR, JZ, JС, JMP.

Пока не проверял, но почти что 100% на этом базисе можно написать любую программу.

Нужно вычитание? Используй вместо него NEG и ADD.
Нужно сдвинуть регистр на один бит влево - используй 31 сдвиг через перенос вправо. Нужен нециклический сдвиг? Сделай перед сдвигом AND по маске. И т.д. по аналогии.

При этом программу будет жутко неэффективная, но мы же речь ведём о минимальном базисе, а не об эффективности.
122 1857625
>>57622
С 10 любой сможет.
123 1857637
>>57476

> >Тебя ничего не обязывает юзать что одно, что другое.


> <Но давайте выпилим цикл с постусловием, он меня напрягает, похуй на совместимость.


> Чот биполярочка


Явно вижу ты не следишь за обсуждением или толком его не читал, потому что отвечаешь на пост человека, который за наличие do-while в си, который срется с противником оного и чет заливаешь за биполярочку. Сессию как сдавать будешь, если ты читать не в состоянии?

мимокрокодил
124 1857639
>>57625
Я знаю что ты шутишь, но я не привык сдаваться.
Тебе нужен процессор с одной инструкцией MOV?
Это возможно.
Ты можешь зарезервировать несколько физических адресов и сделать процессор с одной инструкцией.
Например, по адресу 0x10000 находится ячейка, при записи в которую процессор переходит на адрес, записанный в неё.
Вот тебе уже и JMP родился.
по адресу 0x10008 запписываешь первый операнд.
По адресу 0x10010 запписываешь второй операнд.
По адресу 0x10018 ты читаешь сумму записанных чисел
По адресу 0x10020 ты читаешь разность записанных чисел.
И так далее.

Вот видишь, оказывается процессор с одной инструкцией возможен. Реализацию условных переходоы мне придумывать лениво, но полагаю что и эта задача решаема.
125 1857647
>>57639
Не знаю, зачем ты это пишешь - конечно язык с одним mov уже давно сделан.
126 1857655
>>57639
Вроде как тема эта уже изучена как URISC процессоры. Было бы прикольно чтобы кто-то написал под сие дело компилятор Си, а то дальше ассемблеров дело не доходило.
127 1857686
>>57622

> о минимальном


Зачем же ты принес половину 8080?
Читай труды Алана Тьюринга.
128 1857699
>>57637
Извини, в сортах анона не разбираюсь. Постер отвечает на фразу о невозможности компилить старый код новым комилятором после гипоететической правки синтаксиса чем? «Ну и что, и так сейчас бывает».
129 1857730
movfuscator
130 1857733
131 1857772
>>57733
Это да, но под х86.
А мне б Си компилятор под какой-то bitbitjmp или subleq URISC процессор, такого вроде как нет.
132 1857800
>>57476
Давайте выпилим будем придерживаться кодстайла и не использовать все виды цыклов только по тому что можем.
133 1857802
>>57800
Пиздец в си-треде дауны сидеть, дувайл слишком сложный, не надо использовать, вдруг не поймет кто-нибудь.
Закрываю нахуй.
134 1857809
>>57802
Мы не дауны!
Дауны не мы... Это тебе в кое-какой другой тред...
135 1857898
>>57800

> не использовать все виды цыклов


Пчел, в этом недоязыке даже until нет
136 1858024
Можно ли с помощью signal() выловить точку, где происходит SIGSEGV?
Нужно узнать текущий вход и желательно функцию.
137 1858033
>>58024
А чем gdb не угодил? Им и вылавливай.
138 1858085
>>58024
Отловить SIGSEGV можно.
Вывод стэктрейса можно сделать через backtrace() на линуксах, или чем-то другим если система другая.
Потом можно названия функций и смещения конвертнуть через утилиту addr2line в названия файлов и номера строк, если нужно.
139 1858251
Снимок экрана 2020-11-17 в 10.56.35.png65 Кб, 701x808
140 1858333
Господа СИшники. Реквестирую помощи. Почему так? Почему выводится какая-то хуйня? По долгу учебы надо писать на Си, на питоне все замечательно работает, на Си же выводится неведомая хуйня. Сложность задания не играет роли. Выводится непонятное число, хз откуда, как исправить - тоже. В гугле инфы по этому вопросу нет, одногруппники сами охуевают. Без вас не обойтись.
Снимок экрана 2020-11-15 в 18.05.46.png163 Кб, 1576x605
141 1858338
>>58333
Именно такая фигня с массивами. Неадекватное поведение даже не только в этом примере, а в других. Вывод на экран тоже, может вывести первые 2-3 элемента ОК, потом какую-то хуйню. Или 1 элемент потом опять невнятное число. К сожалению, писать на других языках запрещено, с радостью бы писал, приходится работать с этим языком.

Например здесь, просто скриншот, в онлайн компиляторе вообще другой вывод, отличный от моего. Почему так он себя ведет и как этого избежать? А да, & пробовал ставить и убирать, вывод не меняется. Не в нем дело.
142 1858343
>>58333
Ты n в инициализации массива-то использовать не хочешь?
143 1858345
>>58333

>list[]


>printf &max &index

144 1858351
>>58343
Не дает. Ошибка компиляции. Пробовал
>>58345
и что? Вывожу 2 значения. После джавы и питона не вижу ничего плохого. Тип один и тот же. & убирал , не помогает, так же пробовал %d%d , тоже не помогает
145 1858358
>>58333
А что тут объяснять? Ты создал массив из 0 элементов. Навсегда. А потом обращаешься по индексу за его пределами.
list = tmp никакой памяти не выделяет, новых элементов не создает.
146 1858359
>>58351

>не вижу ничего плохого.


Просто значок & рандомно добавлять-убирать, действительно, что тут такого.
147 1858361
>>58358
int list[] = {0};

Помогло это. Пиздец. Я думал Си может в динамику.
>>58359
На войне все средства хороши, я должен попробовать.

Спасибо за помощь
148 1858365
>>58351
Долбаеб ебаный тебе уже указали на твои ошибки ты продолжаешь высирать полотны малолетнего бреда
int[] пустой чанк памяти которым ты отстреливаешь себе ноги
printf %d на pointer возвращает адрес ссылки
149 1858370
>>58361
Размер таких массивом должен быть известен на этапе компиляции. В gcc есть расширение, позволяющее писать arr[n], но это не стандарт.
Тебе в твоём случае надо заалоцировать через маллок массив и освободить эту память в конце
150 1858374
>>58365
Ну ты прав. Я долбоеб , правда не малолетний. И ошибки указали, я их исправил и все заработало, я на Си никогда не писал до этого.
>>58370
спасибо
151 1858375
>>58361

>int list[] = {0};


Нет, это только полдела. Так ты создаешь массив с одним элементом. Если ты будешь обращаться [1], [2] то так же вылетишь.
152 1858389
>>58361

>int list[] = {0};


Компилятор сопоставит общее количество элементов в "{}" и засунит это в []
Тут у тебя хуйня эквивалентная list[1] = {0}
Для динамики маллокейти
153 1858878
>>58389

>маллокейти


так это же потом руками удалять придеться
154 1859017
>>52726
это разные языки
155 1859019
>>58370

>> В gcc есть расширение, позволяющее писать arr[n], но это не стандарт.



Это опциональная часть стандарта, называется VLA, в кланге тоже есть
156 1859026
>>58878
Надо юзать alloca(), мне так дядька с 40 годами опыта программирования на Си советовал, пока не сдох, было ему 65 лет, эх
157 1859057
>>58361
Это не помогло, это тебе кажется.
Динамика в С не нужна делается ручками.
>>58374
Незаработало.
158 1859105
>>59026
Да на стеке можно с запасом выделить и всё.
типа

int list[10000]; // Хули нам, кабанам, 40 килобмайт не память.

Но за название list надо по рукам бить - массив это не списоок.
изображение.png291 Кб, 782x800
sage 159 1859108
Такой вопрос, пишу учебный консолечный квест. Нужно чтоб происходила ротация определенных событий в мире, с долей рандома. Есть ли вариант вариант запихнуть реалтайм генератор эвентов в зацикленную функцию, пока игрок делает ходы. Хз, возможно ли это, но только си не передаст управление обратно игроку пока цикл бесконечный,а нужно чтобы он работал независимо от него. Может и хуйню горожу, но мсье хочет ебли. Или покатит только вызов функции с рандоматором?
161 1859120
>>59108
Можно сделать новый поток и там генерить.
Можно вообще ничего не делать, а смотреть когда игрок сделал ход, сколько времени прошло, и в зависимости от этого насувать N событий.
162 1859577
>>59108
У тебя чтоль общий цикл как блокирующие функции написан?
Если нет - в него в начало и пихай, там проверяй время (не на каждый же оборот цикла что-то должно происходить)

Если у тебя там уже есть потоки - создай ещё один и в нём делай что тебе надо с вейкап периодом когда тебе надо.
163 1860190

>Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013) - почитать, вкатиться в указатели.


Кто читал? Сколько полезного узнали? Охочусь сейчас за всей инфой по хипу, немножечко не понимаю, надеюсь эта книжка мне поможет.
К слову, не могу понять - Если инкрементировать сам указатель до того как он станет нулевым т.е до конца, он останется на начальном или конечном адресе если делать дереференс?
Я проверил на принте, что он доходит до нуля, только не могу понять остается ли он там.
164 1860198
Еще можете подсказать как можно создать массив чаров только после того как пользователь введёт текст? Например сейчас мучаюсь с прогой в которой есть функция которая принимает текст и сплитит все найденные слова в массив из массивов чара. Если с этим нет проблем, то со строкой неизвестно сколько пользователь может ввести. Как с этим справляются опытные программеры?
165 1860292
бляьь да какого хуя всё на английском
как вкатиться тт блятб
166 1860301
>>60190
Что ты несешь...
167 1860305
>>60292
It easi, jast start speek englesh. It simple :)
1581305050756.png202 Кб, 800x572
168 1860307
169 1860320
>>60198
Выделяешь изначально сколько-то памяти и считываешь пока не встретится символ перевода строки. Если память кончилась раньше чем встретил символ выделяешь ещё в два раза больше и продолжаешь.
170 1860347
>>60307
>>60305
охуенно, спасибо
dead per dead 171 1860370
>>60198
У каждой строки есть разумный предел.
dead per dead 172 1860373
>>60190

> станет нулевым


Ты не имеешь права.
173 1860522
>>60307
Какой это язык? Не гуглться.
174 1860532
>>60522
Рапира
175 1860567
Пиздец, почему линукс такой уебищный, и почему на нем все ещё кто-то сидит? Вот щас не пользовался ноутом где стоит чисто убунта несколько дней, захожу - отвалился вайфай. Просто так, сам собой) и вэлкам многочасовой пердолинг в консольке и чтение форумов красноглазиков. Почему с виндой я уверен что я сегодня запущу компьютер, и у меня все будет также как и вчера, а с линуксом я даже не уверен что у меня он вообще запустится нахуй?
176 1860583
>>60567
Скинь скриншотик, у тебякакое убунту?
177 1860603
>>60198
typedef struct
{
char str = NULL;
size_t size = 0;
size_t cap = 0;
}string_build;
void push(string_build
s, char symb)
{
if (s->size >= s->cap){s->cap*=2; realloc(s->data,s->cap);}
s->size++;
}
178 1860610
>>60567
Само собой в линуксе может только хуй твой отвалиться, быдло невежественное. Линукс нихуя без твоего ведома не сделает, даже убунта. Ты сам нахуевертил где-то с ним, вот и сидишь без вайфая.
179 1860612
>>60610
В убунте вроде как автоапдейты от каноникал можно включить по умолчанию
180 1860614
>>60603
void push(string_build s, char symb)
{
if (s->size >= s->cap){s->cap*=2; realloc(s->data,s->cap);}
s->size++;
s->data[s->size-1]=symb;
}
слоуфикс
181 1860643
>>60567
Ты смог отключить обновления шинде? Просто погугли новости, сколько компов на ней окирпичилось
182 1860644
>>60614
Неплохо бы указатель после реаллока на нуль проверять.
183 1860686
>>60644
А не то что?
184 1860688
>>60567
Раз на раз не приходится. Стабильность дров та ещё шняга, особенно если сетевуха realtek, китайцы не стараются делать норм драйвера, или отвал, или отсутствие дров обеспечено. Более или менее норм на интеловсих wifi, там драйвер являет собой лаунчер огромного блоба, который и под виндой юзается.
Поддвачну этого >>60643, имею ноут на Windows 10. Он уже давно не включается. Он находится при запуске в состоянии попытки поставить апдейт, апдейт отваливается непонятно почему, работается и винда опять ставит апдейт. Мне в принципе похуй, я пекабоярин. Но винда походу там умерла окончательно.
Мне кажется нетестируемые CI/CD апдейты в ОС скоро сыграют в ещё более злую шутку(злоумышленники троянца отправят по всем компам в качестве апдейта). Таким может отличиться или винда, или та же убунта.
185 1860689
>>60686
Хакир введет строку на 32 гигабайта и взломает твой асус.
186 1860733
>>60603
Во как.
>>60320
Понятно.
>>60301
Уже проверил. Указатель после инкремента до нулевого значения остается на том же адресе. Нулевое значение идет после последнего элемента в указателе.
187 1860786
>>60733

>Уже проверил.


Погоду на Марсе если только.
После дереференса нулевого указателя у тебя UB. Сегодня твой компилятор и твоя ОС привели к такому результату, на другом железе у другого человека будет другое.
188 1860792
>>60786
В строке же всегда есть указатель на нул.
189 1860797
>>60792
Блять...
190 1860854
>>60610
ты че слепой бля? Я же написал: не включал ноутбук несколько дней в последний запуск вайфай работает, щас нет. Да и это офк не первый раз проблемы с еблинуксом. После установки (офиц. версию с флешки, на чистый комп, без винды) у меня просто не регулировалась яркость экрана и не работала добрая половина клавиш Fn не работала. Ахуенная ОС. Только установил - сразу начинается пердолинг.
191 1860942
>>60854
Кто ебёт, что ты несколько дней с этим выключенным ноутом делал, дебил? Может ты им в футбол играл, может уронил по пьяни. Ты нихуя не понимаешь в устройстве линукс, но уже имеешь наглость свой вонючий рот открывать. Программирование не для тебя, скройся.
192 1860944
>>60942

>Ты нихуя не понимаешь в устройстве линукс,


Говно говна. С вкраплениями бриллиантов. Но бриллантов мало, а говна овердохуя.
193 1861061
>>60567

> Почему с виндой я уверен что я сегодня запущу компьютер, и у меня все будет также как и вчера, а с линуксом я даже не уверен что у меня он вообще запустится нахуй?


Не будет. Даже с макосью. Хочешь стабильность - выключай автоапдейты и управляй пакетами сам, как делают все нормальные конторы. Или ставь hardenned gentoo centos

> захожу - отвалился вайфай. Просто так, сам собой)


Если ты починил, то ты знаешь почему он отвалился и как сделать чтобы он не отваливался. Если не знаешь, то ты ещё не починил.
194 1861302
Знаю, что вопрос не совсем тематический. Но все-таки тут происходит низкоуровневое дрочево, поэтому, надеюсь, кто-то может мне пояснить за следующую фигню. Судя по пик 2, uname -m система должна выдать мне cpu microarchitecture, в случае с i7 4800mq должно выводиться Haswell. Я же вижу i686. Какого хуя? Я же не капчую на проце из девяностых. uname -p должно выдать ISA. Опять же, какого хуя я вижу тут i686? Даже если учитывать, что проц запускается в Legacy mode (32 бит x86 архитектура), то разве самый последний ISA в случае x86 это i686? Есть же i786 (первые pentium 4 были 32-бит x86). С последней строкой вопросов нет -- это просто минимальное требуемое ISA для работы дистрибутива. Причем странно, что я вижу идентичный вывод в первой строке (пик 1) даже на amd ryzen. У него-то cpu microarchitecture тоже не может быть i686.
195 1861306
>>61302

>случае x86 это i686


x86_64
196 1861319
>>61306
Ты же видишь контекст. В данном случае имелось в виду, какой ISA является самым последним в случае с x86 32-бит.
197 1861320
>>61302
cat /proc/cpuinfo

И не выёбуйся, если у тебя Linux.
198 1861329
>>61320

>/proc/cpuinfo


Про это я знаю, но вопрос не стал менее актуален
199 1861330
>>61319

>какой ISA является самым последним в случае с x86 32-бит


Погугли
200 1861343
>>61330
Да не могу я найти ничего конкретно по этим моментам. Помимо этого, все еще интересуют все остальные вопросы, которые я задал в посте
dead per dead 201 1861352
>>61302
uname -m выдает тебе то, что авторы понимают под типом машины, не более того.
202 1861356
>>61352
Хорошо, а что авторы могут понимать под типом машины в данной реализации в таком случае? Есть предположения?
изображение.png620 Кб, 604x453
sage 203 1861359
На связи снова дебик-кун. Жопная боль относительно рекурсии: https://pastebin.com/XfFzSv56
Код компилится, но после запуска неизбежно появляется сообщение об ошибке. Что делаю не так, хотя вроде следую той же логики в своем коде, и гугление дает похожие примеры.
204 1861363
>>61356

> а что авторы могут понимать


Учи матчасть и не еби мозги анонам
205 1861366
>>61359
Это нихуя не рекурсия, это - бесконечный цикл без условия выхода
sage 206 1861372
>>61366
Чет не вдупляю, а как тогда эту шляпу написать правильно
207 1861385
>>61372
В первом варианте есть условие, по которому функция не вызывается заново, в твоем - условия нет.
208 1861422
>>61329
Нет никакого вопроса. Ты путаешь идентификацию системы и идентификацию модели процессора.
209 1861429
>>61302
Я думаю что они просто тиснули что-то типа наименьшего общего элемента. Может быть у тебя система и не использует инструкции 786, кстати.
изображение.png64 Кб, 846x186
sage 210 1861443
>>61385
Почему она должна заново вызваться? Для справки, рекурсии в учебнике посвящено пол темы, и за зацикливание ни слова, только весьма странное описание ее работы на пике. Мне вот допустим нужно чтоб в вызове себя она просто перемножала любое число и все
211 1861446
>>61429

>Я думаю что они просто тиснули что-то типа наименьшего общего элемента.


Таковым является i386, и дистр действительно собран под эту ISA -- на i386, i486, i586, i686 и i786 заведется.

>Может быть у тебя система и не использует инструкции 786, кстати.


Вот я и не могу понять, а почему? Ведь 786 был 32-бит x86 несколько первых поколений пня четвертого. То есть почему бы в Legacy Mode процу не исполнять именно ISA i786? Почем проц работает в i686?
212 1861447
>>61422
Но в lscpu белым по черному написано Architecture: i686. То есть проц работает в режиме ISA i686. Почему? Ведь последним ISA для 32-бит x86 архитектуры является i786
213 1861449
>>61447
i686 - это под какую версию архитектуры x86 собрали бинари, команды процессора новее чем описанные в мануале pentium pro не должны использоваться. На этом все.
214 1861451
>>61443
Поставь себя на место компьютера и выполняй по шагам.
foo()
{
x=1;
foo();
x=2; //сюда ты не дойдешь никогда
}
215 1861459
>>61449
Хорошо, то есть ISA процессора в linux узнать невозможно? Ведь мы видим только i686 -- какая архитектура ISA минимально поддерживается ядром системы.
И тогда к чему относится вывод команды uname -i? Там вообще i386, это что?
216 1861468
>>61459
Точную ISA? Это зависит от архитектуры, конечно же.
В принципе если в выхлопе увидел намек на x86, дальше можно чекать только поле Flags из файла /proc/cpuinfo, там в принципе описаны все фичи/инструкции которые поддерживает процессор. Ну или юзать cpuid.
Допустим архитектура i686, но в flags светится команда popcnt, на оригинальном i686 ее не было, а на твоём процессоре есть, ты можешь написать код который её дёргает, система не кинет тебе SIGILL, хоть и система рассчитана на работу на пентиум про.

Можешь ещё глянуть как написана утилита uname. https://github.com/wertarbyte/coreutils/blob/master/src/uname.c
По сути любое получение инфы, это какая-то уже predefined информация из ядра или glibc.
217 1861469
>>61459
Обратись к поставщику своей ОС
218 1861509
>>61468
Я имею в виду, что то, что мы получаем с помощью uname -m -- это информация о том, для какой архитектуры было скомпилировано ядро. В данном случае, для i686. uname -p (по идее) должно выдавать ISA проца. Так как система у нас 32 битка и скомпилена для i686, то проц должен работать, как минимум, в режиме i686 (что он и делает), однако, почему сам проц не работает в режиме i786 (который совместим с i686) который является самым последним и свежим набором команд 32-бит x86 архитектуры?
Я, вообще, правильно понимаю логику или где-то проебался? Я просто уже десяток топиков прочел, везде разные ответы. Также я все еще не понимаю, что выводит uname -i (в данном случае i386)
219 1861573
>>61509
Если кому интересно, нашел ответ (см. часть про Fedora -- у меня стоит CentOS).
https://unix.stackexchange.com/questions/307955/uname-p-i-are-unknown
220 1861621
>>61509
Ты логику не понял. Ядро хоть и собранно под i686, можешь на нем гонять инструкции от более новых версий isa если они доступны на данном процессоре. Собранное ядро под i686 не заставляет твой процессор гонять только инструкции для i686, не ограничивает в рамках одной isa, а на новые инструкции проц не будет кидать исключения с неправильной инструкцией.
Исключения наверное lm, который уже x86_64.
Такая тема на каком-то arm или powerpc вероятнее всего не сработает, считай это фичей х86
221 1861626
>>52710 (OP)
Открыт закрытый форум сообщества Эльбрус
http://forum.elbrus.ru/
222 1861717
>>52710 (OP)
Короч аноны. Говнокод лонгрид. Мучает меня вопрос...

Пишу под встраиваемки. Часто нужно свапать параметры при изменении в разные места. Например в ПЗУ и на дисплей. Или только на дисплей, а другое на ПЗУ, треть только на ПЗУ.
Четвертое имеет размер не в байт а в 4. И тд и тп.

Причем ок, когда подобной хуйни 5-6, 10, 20.. Можно обойтись пару тройкой энумов и нормально это распихивать и по адресам дисплея и по адресам ПЗУ.

А вот че делать когда их 100 и выше?
В один момент, у меня было 14 C файлов с const массивами, создававшими таблицу:
энум переменной - адрес ПЗУ, адрес дисплея, размер, флаги че с этим делать.
Причем ясен хуй файлы эти хранились отдельно от своих модулей, вместе, т.к. адреса расписывать руками заебнее, чем искать где переменные этого модуля.

Меня в один прекрасный момент это заебало, я решил - еепромы нынче дешевые пиздец и я могу просто ставить размером с ОЗУ, затеняя адреса на еепром.

И наговнокодил вот такую хуйню: https://ideone.com/vDFqUt
Что бы внутри непосредственно модуля, делать вот так: https://ideone.com/t3d5Hn
Сохранение переменной выглядит теперь вот так: VAR_Save(var_props[VAR_ENUM], new_value, NULL);
VAR_Save или Load собственно читает инфу о переменной по адресу в ПЗУ и выполняет действия требуемые в описании.
Например добавляет адрес и размер в очередь на отправку значений на дисплей или в ПЗУ.

Главная особенность этой хуйни, она почти не жрет ОЗУ, жрет столько сколько занимает непосредственно переменная.
При этом обеспечивает моментальную реакцию на изменение.
Это все заебись, только все равно не особо удобно. Если требуется внести изменения в таблицу - милости прошу перепахивать всю хуйню.
Далее, милости прошу соснуть хуйца, если забыл где-то сделать VAR_Save, а просто напрямую записал.

Какие варианты есть еще?
Прям отдельная аля база данных? Но это прям совсем хуйня, т.к.:
- жрет охуеть ОЗУ, на 1 байт будет оверхед из 5-6 байт. Учитывая что большинство переменных такие считай 5х требуемый размер.
- еще более медленное говно, пусть и не сильно.
- требуется либо динамическая регистрация, что еще сильнее разжирнит размер в ОЗУ, один хуй потребует таблиц адресов (ну или при каждых изменениях - сохраненные настройки ВСЕ, т.к. адреса поехали).
- снова городить таблицы внутри, что возвращает меня к первоначальной проблеме.
- один хуй останутся функции чтения\записи
222 1861717
>>52710 (OP)
Короч аноны. Говнокод лонгрид. Мучает меня вопрос...

Пишу под встраиваемки. Часто нужно свапать параметры при изменении в разные места. Например в ПЗУ и на дисплей. Или только на дисплей, а другое на ПЗУ, треть только на ПЗУ.
Четвертое имеет размер не в байт а в 4. И тд и тп.

Причем ок, когда подобной хуйни 5-6, 10, 20.. Можно обойтись пару тройкой энумов и нормально это распихивать и по адресам дисплея и по адресам ПЗУ.

А вот че делать когда их 100 и выше?
В один момент, у меня было 14 C файлов с const массивами, создававшими таблицу:
энум переменной - адрес ПЗУ, адрес дисплея, размер, флаги че с этим делать.
Причем ясен хуй файлы эти хранились отдельно от своих модулей, вместе, т.к. адреса расписывать руками заебнее, чем искать где переменные этого модуля.

Меня в один прекрасный момент это заебало, я решил - еепромы нынче дешевые пиздец и я могу просто ставить размером с ОЗУ, затеняя адреса на еепром.

И наговнокодил вот такую хуйню: https://ideone.com/vDFqUt
Что бы внутри непосредственно модуля, делать вот так: https://ideone.com/t3d5Hn
Сохранение переменной выглядит теперь вот так: VAR_Save(var_props[VAR_ENUM], new_value, NULL);
VAR_Save или Load собственно читает инфу о переменной по адресу в ПЗУ и выполняет действия требуемые в описании.
Например добавляет адрес и размер в очередь на отправку значений на дисплей или в ПЗУ.

Главная особенность этой хуйни, она почти не жрет ОЗУ, жрет столько сколько занимает непосредственно переменная.
При этом обеспечивает моментальную реакцию на изменение.
Это все заебись, только все равно не особо удобно. Если требуется внести изменения в таблицу - милости прошу перепахивать всю хуйню.
Далее, милости прошу соснуть хуйца, если забыл где-то сделать VAR_Save, а просто напрямую записал.

Какие варианты есть еще?
Прям отдельная аля база данных? Но это прям совсем хуйня, т.к.:
- жрет охуеть ОЗУ, на 1 байт будет оверхед из 5-6 байт. Учитывая что большинство переменных такие считай 5х требуемый размер.
- еще более медленное говно, пусть и не сильно.
- требуется либо динамическая регистрация, что еще сильнее разжирнит размер в ОЗУ, один хуй потребует таблиц адресов (ну или при каждых изменениях - сохраненные настройки ВСЕ, т.к. адреса поехали).
- снова городить таблицы внутри, что возвращает меня к первоначальной проблеме.
- один хуй останутся функции чтения\записи
223 1861719
>>61717

>свапать


>свопать


быстрофикс.
224 1861726
>>61717
У тебя обострение?
225 1861743
>>61726
Не спал ночь думал. Решил анона спросить.
226 1861858
>>61743
Не думаю что кто то вообще понял о чем идет речь.
dead per dead 227 1861956
>>61719
Все равно не понятно.
228 1862190
Сап, поясните за битовые сдвиги. Как их воплощать. И с чем использовать. Пару примеров было бы круто увидеть. И где можно прочитать про это?
229 1862276
>>62190
Операторы такие, биты в регистрах сдвигают.

>> и <<


Операторы
Было в регистре число 5 = 101b
Сдвинул влево на 2 позиции, стало число 10100b = 20, сдвиг влево по сути умножение на 2(522).
Сдвинул на 2 позиции опять же число 101b, вышло 1b = 1, сдвиг вправо по сути деление на 2 целочисленно((5/2)/2).
Ещё есть сдвиги разные в процессорах, и сдвиги циклические. Всё это в инете почитаешь.
230 1862385
>>61626

> Всего сообщений: 87

231 1862390
>>62190

>Сап, поясните за битовые сдвиги.


сдвиг на один бит влево равносилен умножению на 2
сдвиг на один бит вправо равносилен делению на 2
сдвиг на два бита - на 4
сдвиг на три бита - на 8
etc.
Стикер512x512
232 1862410
>>62390
сдвиг на тридцать три бита - UB
233 1862418
234 1862535
>>62410
Нет с uint34_t и выше.
235 1862571
>>62276
окей, то есть, каждый сдвиг на >> 1 будет умножать на число в два раза больше: 1>> 2 | 2 >> 4 |3 >> 8| 4>> 16 и т.п.
И на сколько можно двигать позиций максимум 32 я так понимаю?? И еще вопрос один глупый вопрос, как переводить с двоичной допустим в 10-ричную. Можно ли при помощи сдвигов это реализовать? Препод нам ляпнул про сдвиги, но объяснять не стал, сказал что еще рано (ебать рано - почти все темы ебнули, а про сдвиги так и не объяснил)
236 1862697
>>62571
Зависит от размера переменной.

Второй вопрос смешной. Внезапно, представление целочисленных регистров и переменных только в битах(и байтах). Считай что запись десятичного числа в переменную уже переводит его в биты.
С битовыми сдвигами можно легко биты эти вывести.
237 1862754
>>62571

> как переводить с двоичной допустим в 10-ричную.



А вот тут тебе уже без настоящего деленя не обойтись.
Вообще такого понятия как перевод из одной системы исчисления в другую для компьютера не актуален. Если закрыть глаза на существующую в 8086 десятичную арифметику, которая давно никем не импользуется. Поодумай эту мысль.

А теперь о том, как вывести на уэкран число в десятичном виде.

Берёшь массив char элементом на... ну 10 хватит.

Делишь переводимое число на 10. К остатку прибавляешь ASCII код нуля и пишешь в последний элемент массива. Проверяешь частное - если не ноль, то повторяешь операции, и записываешь в предпоследний элемент массива, иначе в массиве ASCII коды цифр преобразуемогоо числа.

Смотри пример. Число 0xC. При делении на 10 остаток равен трём и частное равно единице. Три записываешь, единицу делишь снова на 10, получаешь один в остатке и ноль частное. Вот у получилист у тебя цифры 3 и 1. Но поскольку ты записываешь их в массив с конца, то будет 1 и 3, т.е. 13.
238 1862762
>>62571

> как переводить с двоичной допустим в 10-ричную


int number = 100500;
char str[16];
sprintf(str, "%d", number);
d тут значит decimal.
Попробуй ещё %o, %x. octal, hexadecimal
239 1862763
>>62762
Такая-то тонкота. Как будто в тред скриптовых языков вкатился.
240 1862770
>>62762
очень интересно, но ничего не понял
241 1862772
>>62762
а соре, я слеп
242 1862779
>>62762
Смешно, но это реально один из самых простых способов перевести число. Ещё можно itoa юзать, но она не стандарт.
243 1862914
>>62754
Я так понимаю для 16 ричной системы будет 0xF?
244 1862924
>>62914
Нет, это же 15. 0x10 = 16.
245 1862937
>>62924
сложно
246 1862941
>>62924
0xC - если 13, то по логике 16 - 0xf?
я в паутине не понимания
247 1862945
>>62941
У него очевидная ошибка.
9 = 9
A = 10
B = 11
C = 12
248 1862952
>>62945
окей, так. Мне в руки попала программа. Перевода с 10 в 16-ричную.
Так там мужик объясняет, что в конце нужно добавлять 0xf для перевода в 16-ричную. объясните мне что да как, за сегодня только еще больше путаницы произошло в моем мозгу. Возможно я что-то не так понимаю
249 1862956
>>62952
Совершенно нет желания этим заниматься. Это разжевывается в любом учебнике информатики примерно в начале.
250 1862957
>>62952
кому в общем верить? Каждый говорит по разному.
251 1862959
>>62956
0123456789 A -10; B - 11; C - 12; D - 13; E - 14; F - 15; теперь понимаю. Спасибо
252 1862961
>>62959
Да, F это самая большая однозначная цифра, после нее идет 10. Как в десятичной после 9.
253 1863202
>>62945
Да, походу я сморозил глупость.
254 1863209
>>62957

int val = 0x3e7211da;

int pos = 10;
char num[10];
num[--pos] = '\0';
do
{
num[--pos] = '0' + val % 10;
val /= 10;
}
while(val);

puts(num + pos)

Не проверял. Надеюсь что ты проверишь. Но я настолько крут, что в 99% этот код рабочий.
255 1863301
Какая разница между statements и operator? Всё переводится как оператор, но я гуглил и нашел какую-то тухлую тему с форума по с++ где напиасли несколько постов непонятных, где ничего конкретно не сказали, только что у statements нет перевода "операция" вообще
256 1863322
>>63301
Statement переводится примерно как "выражение". Проблема в том, что Expression тоже переводится как выражение.
Гадать не нужно, все описано тут
https://en.cppreference.com/w/cpp/language/statements
Есть statement, скажем условно что это утверждение.
statement может быть разных видов, например expression то есть выражением.
Выражение (expression) состоит из operators с операндами как сказано тут
https://en.cppreference.com/w/cpp/language/expressions
257 1863343
>>63209
Как же красиво это наебнётся - любо-дорого посмотреть.
258 1863391
>>63322

>Statement переводится примерно как "выражение"


Проиграл с этого академика
259 1863409
объясните вкратце, хуки легко детектятся какими-нибудь античит системами? можно ли со 100% гарантией только получать информацию от приложения (игры) и не получить бан, без попыток подмены адресов в его памяти? если что, я не читер и никакого преимущества над другими я не получаю в данном случае (игра вообще сингл, просто требует наличие аккаунта и подключение к сети). хочу сделать для себя небольшого хелпера, который структурировал бы инфу по моему алгоритму в отдельном процессе. хуки не писал ни разу
260 1863427
>>63209
Ты используешь do while, а значит по мнению местного шизика тебя б уволили к хуям собачьим.
244 Кб, 431x419
261 1863432
лежало значит у меня это кольцо неделю, потом поставил 30с и спустя еще одну неделю его купила дедайка
???
??
?
кто кого наебал?
262 1863440
>>63432
Ты его. Это лютый оверрейт который форсят авторы гайдов чтобы лутать орбы с лохов.
263 1863441
>>63440
>>63432
Уходите со своим непонятным языком
264 1863454
>>63441
да я мисанул по треду. расскажи про хуки тогда >>63409
265 1863456
>>63440
хз, я просто увидел топ моды и поставил цену на обум. я уже и забыл про это кольцо, еще немного и сдал бы вендору. не знаю ни один билд, кому бы такая солянка зашла даже за 30с. с другой стороны, уже конец лиги, мб месяца полтора назад на него еще и был бы спрос...
266 1863563
Решаю задачки на сайтах типа кодварса. Не могу разобраться со строками. Перестановка порядка слов к примеру, или перевернуть слово и потом переставить порядок. Или тот же малок для алокаций памяти для массива из указателей на строки. Короче голова болит, что делать? Может есть какие нибудь ресурсы или книжки где все разжуют, без решений.
267 1863583
>>63563
Тетрадка в клетку. Пишешь в клетки слова по буквам. Все диды так делали.
268 1863587
>>63583
А разве наши диды не ваевали, когда где-то в США диды строки в тетрадки писали?
269 1863597
>>63583
Оки попробую.
270 1863602
>>63583
А по малокам книжки есть какие?
271 1863607
>>63409
с 100% гарантией ты вообще нихуя не сделаешь.

что за игра?
272 1863626
>>63607
path of exile
сначала мне интересно было понять, как работает эта тулза https://github.com/SnosMe/awakened-poe-trade
она каким-то образом определяет предмет, на который ты ткнул в gui самой игры вплоть до получения свойств предмета, и показывает его цену на игровом рынке. покопался я в исходниках и нашел какие-то намеки на использование хуков, но целиком сам процесс именно этого приложения понять не смог. при этом, за это приложение не банят и на офф форуме игры его обсуждают/советуют + стримеры им пользуются.

сейчас я хочу сделать что-то подобное, только чтобы получать информацию о текущих квестах в игре. это нужно для того, чтобы бегать сюжетку максимально быстро и не сворачивать игру на гайд - не тратить время на это. игра построена так, что можно делать параллельно задачи в игре, даже если игра еще сама не говорит о них, а чтобы делать такое без гайда, надо прокачать героев 100 наверное и тупо вызубрить этот монотонный процесс. т.е. суть моего помощника в том, чтобы в реальном времени транслировать, если не в сам процесс игры, то в процесс этого приложения информацию о следующем действии. для этого надо как-то обрабатывать состояния квестов в процессе игры и получать от них информацию.
273 1863677
>>52710 (OP)
Что и чему позволяет осуществять наличие файловых дескрипторов, если есть PID'ы + fork(), open(), exit() и т.д ? Никакие гуглы и книжки по-програмиздски человеческим языком пояснить не могут.
274 1863706
>>63677
Из всего что ты перечислил, только open() имеет отношение к файловым дескрипторам. Собственно open() при открытии файла и возвращает этот дескриптор, с помощью которого ты осуществляешь операции с открытым файлом.
275 1863716
>>63706
Куда возвращает? Родительскому процессу? А дальше что происходит, род. процесс этот дискриптор параметром в его (родительских) вызовах использует? Для чего?
276 1863726
>>63716
Неправильные вопросы задаёшь. Это плохо.

>Куда возвращает?


Функция open() возвращает файлоый дескриптор или -1, если по какой-то причине не удалось открыть файл.

>Родительскому процессу?


Тому процессу, который вызывает функцию open()

> А дальше что происходит, род. процесс этот дискриптор параметром в его (родительских) вызовах использует?



Дальше ты используешь этот дескрпитор в функциях write и read, f так же close()/

>Для чего?


Чтобы писать в файл и читать из файла.

fork() это другое - это порождение нового процесса путём его клонирования. После него у тебя будет два одинаковых процесса и каждый из них будет иметь одинаковые открытые файлы.

exit() вообще не использует файлоые дескрипторы, а просто завершает программу. При этом ОС сама закроет все открытые файлы. Но лучше это делать явно.
277 1863730
>>63726
Т.е процесс 1 вызывает open() для открытия файла 1, и если у вызова(?) этого не получается, то он возвращает процессу 1 дескриптор -1? А дальше при попытке вызвать read() или write() процессом 1 в них (read/write) передаётся уже полученный дескриптор -1 в качестве аргумента?
278 1863732
>>63730
Если тебе функция open вернула -1, зачем дальше пытаться read/write? Выводишь сообщение об ошибке пользователю retry/abort либо завершаешь прогу.
279 1863742
>>63732
В таком случае в какой раздел вирт. адресного диапозона процесса записывается дескриптор? Получается когда процессор до него (дескриптора) доходит, он что-то вроде джампа к инструкциям завершению/приостановке процесса делает?
280 1863743
>>63742
А, блять, опять троллинг.
281 1863745
>>63743
Блять нет. Я реально не понимаю.
282 1863750
>>63745
Зачем тогда тебе программирование, да ещё на Си?
283 1863752
>>63750
Затем что я наверное способен это понять если буду досканально представлять что где и как происходит. Просто реально, куда именно внутри процесса дискриптор записывается? Как именно он на исполнение/своппинг/завершение повлиять может?
284 1863777
>>63752
Расскажи нам, что такое файловый дескриптор. Ты же читал какие-то книжки, а в книжках это объясняют. А если не читал или не понял, то почему дегенератские двачи должны тебе объяснить.
285 1863782
>>63777
"Проще говоря, когда вы открываете файл, операционная система создает запись, представляющую этот файл и хранящую информацию об этом открытом файле. Таким образом, если в вашем OS открыто 100 файлов, то в OS будет 100 записей (где-то в kernel). Эти записи представлены целыми числами, такими как (...100, 101, 102....). Этот номер записи является дескриптором файла. Таким образом, это просто целое число, которое однозначно представляет открытый файл в операционной системе. Если ваш процесс открывает 10 файлов, то в таблице процессов будет 10 записей для файловых дескрипторов."

То что это число выдаваемое процессам я понял, но как именно они на процесс влияют? Каким образом говорят процессу выполнять/невыполнять какие-то вызовы? Хуй мне на ротешник в разъяснений вопроса прилетает везде.
286 1863802
>>63782

> читает какие-то машпереводы


Вот оно че.

> Каким образом говорят процессу выполнять/невыполнять какие-то вызовы?


Это просто число, данные. Дальше процесс может передавать его как аргумент в другие системные вызовы. Что такое вызов функции, ты представляешь?
287 1863810
>>63391
Так он неправ или что? Я вообще ничего не понимаю
288 1863816
>>63802

>Что такое вызов функции, ты представляешь?


Не очень. Знаю что функция main все остальные вызывает, а её в свою очередь ещё какой то процесс (то-ли cli, толи инит). Да и честно сказать про стек подзабыл, помню что туда всё заносится по принципу FIFO до 1-8Мб, по-этому лучше указатели в случае динамических структур/массивов использовать.
Всё из-за того что практики по темам нихуя. Даже найти себе задачи проблема. А без этого всего и читать/понимать код/api не выйдет.
289 1863819
>>63810
В теле функции находятся statemets, один из них - expression statement:
[expression] ;
Expression составляется из переменных, констант и операторов, которые к ним применяются.
290 1863854
>>63816
Ебать у тебя каша в голове.
crt0 вызывает функцию main. (JFYI)

Короче, у тебя уникальный случай. Вот бывыают пустые головы, которые ничего не знают. Но у тебя в голове куча обрывочных сведений, смешавшихся в кашу. Такого феерического пиздеца надо ещё поискать. Тебе проше забыть всё что знаешь и начать изучать Си с "чистого листа".

Я бы, честно говоря, охуел бы и застрелился в голову, если бы внезапно узнал что ты мой студент.
291 1863893
>>63854
А ты Вы преподаете?
292 1863898
>>63854

>начать изучать Си с "чистого листа"


Может и так. Только вероятно опять из головы велетит от отсутствия практики.
293 1863975
>>63898
Прату попробой только делай задания после каждой главы.
294 1863991
>>63563

> Короче голова болит, что делать


Кодить на нормальном языке, от себя могу посоветовать python.
295 1863998
>>63991
tolsto
296 1864336
>>63991
От себя советую джаваскрипт.
Недавно, впервые в жизни, подумал прикоснуться к сетевой параше - написать серверок с передачей данных в удаленный браузер. На чем такое делать - в душе не ебу, но вспомнил, что уже пользуюсь удобным серверком из одного экзешника, в свойствах которого было написано "node.js". Так что решил тоже на ноде писать за неимением других мыслей. Проиграл с этого джаваскрипта. Пишешь хуйню от балды, на чистой интуиции, и оно работает! Просто ор выше гор. Язык почти соответствует парадигме, где беспардонно пишешь "сделай заебись" и норм.
297 1864340
>>64336
Зачем ты удолил браузер? Восстанови.
298 1864743
Помогите ньюфагу-хеллоуворлдщику.
Кароч хочу я чтобы была возможность в строки писать на любом языке. Однако при компиляции я постоянно ловлю пикрелейтед 1. Но при этом OnlineGDB прекрасно с этим справляется. Почему так, и самое главное, можно ли это пофиксить?
Гугл подсказал следующее решение (пик.3), но оно какое-то геморное, не говоря уже о том, что я пока понятия не имею что это вообще такое.
1484112959430.png47 Кб, 1260x262
299 1864744
>>64743
Сменяй кодировку в терминале
Гугол говорит просто добавить в settings.json
"terminal.integrated.shellArgs.windows": ["-NoExit", "/c", "chcp.com 65001"],
300 1864747
>>64744
Спасибо.
301 1864772
>>64744
Уточню что кодовая страница 65001 это utf-8 (не знаю насколько полноценно), мало ли тебе это важно.
302 1865063
>>64743

>хочу я чтобы была возможность в строки писать на любом языке


Хотеть не вредно.
В си строк нет, есть только байты. Так что, если тебе нужны строки, ты сам должен их сделать из байтов. Иными словами, не понимая что такое строки и как работают разные кодировки, ты ничего не напишешь. Можешь разве что высрать говно, которое будет работать только у тебя на компьютере, а у остальных кракозяблы и краши.

>оно какое-то геморное, не говоря уже о том, что я пока понятия не имею что это вообще такое


Вот съеби и не возвращайся пока не поймешь. Или съеби программировать на питоне. В любом случае - съеби, пока что ты не туда зашел, петушок. Си не тот язык, где можно писать на авось сам не зная что.
303 1865093
>>65063

>в си нет строк


В юнитфактори, быдло, подменяющее понятия.
покормил
304 1865185
Аноны привет. Подскажите, что я жопой прочитал.
1)fork() возвращает родителю PID ребёнка, ребёнку возвращается 0;
2)У ребёнка меняется PPID (Parent Process Id) на PID родителя.
Почему меня PPID ребенка не равен пиду родителя ?
305 1865208
>>65185
Наверно родитель уже успел схлопнуться.
306 1865217
>>65185

>люних

307 1865218
>>65217
я залетел не в тот тренд?
308 1865230
>>65185
Удали свой абортуалбох.

main()
{
int pid = fork();
if (pid == 0)
printf("%d %d %d\n", pid, getpid(),getppid());
else
printf("%d %d %d\n", pid, getpid(),getppid());
}

$ ./a.out
4868 4867 4834
0 4868 4867
309 1865241
>>65208
Этот прав, ppid сына в юниксе тогда становится 1.
obeme.jpg7 Кб, 226x202
310 1865263
>>65230
лол, спасибо анон. А что это получается мой виртуалбокс мне паскудит?
Этож сколько явного/неявного гемороя я хапану из за него.

/a.out
8769 8768 7373
0 8769 1490
image.png54 Кб, 300x168
311 1865267
312 1865276
>>65263

> 8769 8768 7373


> 0 8769 1490


7373 должен быть пид твоей оболочки, а кто такой 1490?
Там должен быть пид родителя (8768) или 1.
313 1865288
>>65263

> А что это получается мой виртуалбокс мне паскудит?


Нет, тебе врут, запусти pstree
314 1865320
>>65276
pydof systemd = 1490.
с помощью pgrep методом тыка нашел что 7373 - pid баша.
получается что 7373 пид-баша, когда процесс родитель схлопнулся раньше времени(хер знает почему), как сказал анон >>65208,
потомок вместо того чтобы получить себе в ппид пид-баша-7373, получает в свой ппид пид-системд-1490.
изображение.png42 Кб, 1220x791
315 1865366
Хай! Начинающий программист, задание вывести строку если в она оканчивается на 3 кириллических символа. Встал вопрос, почему программа не работает. Вообще не понимаю почему, мог бы кто объяснить?
#include <stdio.h>
#include <string.h>
#include <wchar.h>
#include <stdlib.h>

wchar_t get_wcs() {
wchar_t buf[81] = {0};
wchar_t
res = NULL;
int len = 0;
int n = 0;
do {
n = wscanf(L"%80[^\n]", buf);
if (n < 0) {
if (!res) {
return NULL;
}
} else if (n > 0) {
int chunk_len = wcslen(buf);
int str_len = len + chunk_len;
res = realloc(res, sizeof(wchar_t) (str_len + 1));
wmemcpy(res + len, buf, chunk_len);
len = str_len;
} else {
wscanf(L"%
c");
}
} while (n > 0);

if (len > 0) {
res[len] = '\0';
} else {
res = calloc(1, sizeof(wchar_t));
}
return res;
}

int main() {
wchar_t s = NULL;
s = get_wcs();
int n = wcslen(s);
if (/
1/(L'А' <= s[n-3]) && (s[n-3] <= L'я') && /2/(L'А' <= s[n-2]) && (s[n-2] <= L'я') && /3*/(L'А' <= s[n-1]) && (s[n-1] <= L'я'))
fputws(s, stdout);
}
изображение.png42 Кб, 1220x791
315 1865366
Хай! Начинающий программист, задание вывести строку если в она оканчивается на 3 кириллических символа. Встал вопрос, почему программа не работает. Вообще не понимаю почему, мог бы кто объяснить?
#include <stdio.h>
#include <string.h>
#include <wchar.h>
#include <stdlib.h>

wchar_t get_wcs() {
wchar_t buf[81] = {0};
wchar_t
res = NULL;
int len = 0;
int n = 0;
do {
n = wscanf(L"%80[^\n]", buf);
if (n < 0) {
if (!res) {
return NULL;
}
} else if (n > 0) {
int chunk_len = wcslen(buf);
int str_len = len + chunk_len;
res = realloc(res, sizeof(wchar_t) (str_len + 1));
wmemcpy(res + len, buf, chunk_len);
len = str_len;
} else {
wscanf(L"%
c");
}
} while (n > 0);

if (len > 0) {
res[len] = '\0';
} else {
res = calloc(1, sizeof(wchar_t));
}
return res;
}

int main() {
wchar_t s = NULL;
s = get_wcs();
int n = wcslen(s);
if (/
1/(L'А' <= s[n-3]) && (s[n-3] <= L'я') && /2/(L'А' <= s[n-2]) && (s[n-2] <= L'я') && /3*/(L'А' <= s[n-1]) && (s[n-1] <= L'я'))
fputws(s, stdout);
}
316 1865368
>>65366
если что, работать обязательно нужно с unicode символами
twoouts.jpg90 Кб, 542x460
317 1865370
>>65320
кароче поставил задержку sleep(1) все начало работать корректно.

Если кому интересно.
1) Создается процесс батя ppid=7373, pid=8768, child_pid = 8769
2) Создается процесс ребенок ppid = 8768, pid = 8769, value = 0
3) запускаем наше файло. Мой терминал думает что программа завершена - выводит результат процесса бати, после чего думает что все закончено - уничтожает процесс бати, после чего ребенок получает в свой ppid pid systemd, сверху по иерархии процессов.

Единственное я не понял, почему два a.out? мы же делаем форк от текущего процесса где мы находимся т.е от баша. Должен же быть баш родитель, а a.out чайлд. Я же верно прочитал по схеме, что из баша создается один родитель и один ребенок(красным обвел), т.е за одну функцию fork() мы создаем +2 новых процесса?
От родителя создаем еще одного родителя, а от второго ребенка? wtf?)
318 1865389
>>65370
Оболочка делает fork+exec и создает процесс a.out.
Процесс делает fork и создает копию.
319 1865391
>>65370
Ты это по какому-то учебнику выполняешь?
320 1865393
>>65063
Вот это бабах неосилятора.
321 1865397
>>65366
Зачем усложнил?
Нужно в три раза проще.
322 1865403
>>65397
Подскажешь?
323 1865405
>>65368
Что такое unicode символы?
dead per dead 324 1865420
325 1865422
>>65405
UTF-8 кодировка, ну или UTF16, UTF-32
326 1865424
>>65420
Сорян, забыл уточнить, но мне нужно через библиотек wchar.h
327 1865443
>>65391
Основы операционных систем карпов, коньков.
https://intuit.ru/studies/courses/2249/52/info
328 1865444
>>65391
теоретическая часть у конькова/карпова откровенно дерьмовая. Теорию по Таненбауму.
329 1865494
Подскажите позязя
почему условие на '\n" не срабатывает?
while (arrayString != '\n'){
scanf("%c", &arrayString);
printf("Âû ââåëè ñèìâîë %d: %c\n", i, arrayString);
i++;

//arrayString = '\n';
};
330 1865511
>>65494
Ну потому что arrayString у тебя указывает всегда на одно и то же место? Ведь ты только i увеличиваешь.
331 1865638
>>65511
Макаба съила квадратные скобки ииндексы и кавычки у \n,, но символы считываются потом выводятся но условие в while не срабатывает. Если напрямую присвоить (под комментом) цикл прерывается. С-free win XP.
image.png61 Кб, 1253x652
332 1865815
Анон я написал свой первый мейкфал. ну нахуй это говно пиздец просто параша невыносимая
333 1865824
>>65815
А там разве нет никаких фреймворков ил типа того?
334 1865829
>>65815
А чем cmake вообще плох?
335 1865833
>>65829
Незнаю, но у меня жирный проект и специфичный дурной компилятор и я его всю жизнь ИДЕ билдил и там всегда пиздос был в мейкфайле. Но тут чет пришлось подразобрать его и вытащить сборку из IDE.

>>65824
Есть но я стремался ибо вообще не ебал что они должны делать и как.
Конечно буду теперь их изучать. Вообще мейк такой блевотный, что надо что то безмейковое искать.
336 1865834
>>65833

>Вообще мейк такой блевотный, что надо что то безмейковое искать.


Есть Scons правда я не уверен что пидором не назовут
337 1865854
>>65829
Ничем, он просто не нужен, как и make.
Пользуются этим только шизоидные пердуксоиды, зачем-то пишущие виндовые программы линуксными инструментами. У некоторых голова из жопы выросла, что поделать, бывает.
338 1865860
>>65833
Мне cmake попроще кажется чем написание скрипта под make. Не агитирую за него, просто стало интересно что аноны думают о нём.
>>65854
А как тогда приделывать CI/CD? Или надо на хосте поднимать IDE для сборки и тестирования проекта? Или обязательно системы сборки должны быть headless-IDE по сути которые должны хавать файлы проектов?
339 1865901
>>65494
Бамп вопросу. С do while так же не срабатывает.
340 1865905
>>65901
Дауны, куда вы лезете без ВО
341 1865908
>>65901
Ты тред читал? Do while юзать нельзя, в уважаемых конторах за такое увольняют. Так Анон говорил!

В примере с do while ты чекаешь в условии цикла следующий элемент, ведь перед проверкой бахнул i++, естественно не будет работать
342 1865916
>>65901
что такое \n?
343 1865925
>>65905
Никуда не лезу.
ВО есть, читаю Прату.
>>65908
Спасибо помогло.
344 1865928
>>65916
новая строка
345 1865932
>>65928
это какой-то символ?
346 1865958
>>65905
Шиз всравший 5 лет, спок.
347 1866046
>>65932
Да.
348 1866052
>>66046
а не два?
349 1866055
>>66052
А так вообще четыре
"\n"
350 1866057
>>66055
просто в некоторых файлах энтер cr lf добавляет
351 1866068
>>66057
А зачем они это делают? Вот дураки.
352 1866074
>>66057

> cr


> lf


Ну вот видишь и тут по два символа.
353 1866285
>>65925

>ВО есть


У тебя справка от психиатра должна быть если ты такое осилить не можешь
IMG20201126231549543.jpg98 Кб, 545x533
354 1866315
Ну шо, ребзя, вам задачка на вечер.
355 1866347
>>66315
Ну тут однозначно счетом древних русов.
356 1866566
>>66285
Какое такое?
1606423151177.mp41,2 Мб, mp4,
576x1024, 0:10
357 1866571
Анон, впервые в жизни начал ковыряться с драйвером устройства на линухе (Xilinx xdma), драйвер представляет до юзерапи символьное устройство (функции read(), write, seek). Мой юзерский код делает что-то типа int rc=read(fd, buf, 32*4096). Буфер выделяю через posix_memalloc.
Анон, я вообще не понимаю как это отследить, но когда я делаю прием в отдельном потоке, нон-стоп зацикливая чтение, (даже без синхронизации с основным), программа весело кидает segmentation fault в какие-то произвольные моменты времени.
Я вообще не имеею опыта в программировании ядра, как всю эту херь отследить? Есть ли какие-то ограничения на все эти виртуальные памяти ОС и потоки? Что такое AIO, как его можно использовать (драйвер поддерживает)?
358 1866618
>>66571

>нон-стоп зацикливая чтение, (даже без синхронизации с основным), программа весело кидает segmentation fault в какие-то произвольные моменты времени.



А если буфер уменьшить?
А если читать в основном потоке, а писать из другого?
А если драйвер кривой и не позволяет одновременные чтение и запись?
359 1866700
>>66571
Не поня тно. Эсли в read пытаться читать не туда, программа получит ошибку, а не сигнал.
360 1866728
>>66571
А в стектрейсе что при падении?
361 1867634
>>63209
Я не уверен, но ведь это просто показ ascii номера? Не?
362 1867637
>>63209
но все равно спаибо!
363 1867722
>>67634
Показ десятичного числа.
А в памяти числа всё равно в виде нулей и единиц хранятся, Представление отображения имеет смысл как раз при вываоде.
Но значительно лучше массив и начальное значение pos сделать размерность хотя бы 16 элементов, а не 10. Иначе там очень хитро стек рушится. Так рушится, что устанешь отлавливать ошибку.
364 1867742
>>67634
Нет. Там складывают символ '0' и число.
365 1868003
Помоги исправить какой-то древний код, чтобы не выдавало ошибки.
http://www.cpp.sh/4e545
366 1868116
>>68003
Почему первые инклбды закавычены?
367 1868164
>>68116
Так длл инклюдятся
368 1868280
>>52710 (OP)
Не так давно натыкался на новые книги по Си, года 2018-2020-го. Теперь вспомнил, но найти уже не получается. Гуглить книги по Си очень сложно, из за однобуквенного названия. Знает кто какие новые книги есть? Все статье в топку. И книги Праты тоже. У него даже про компилятор ничего не написано. Не было интернета и я толком не мог разобраться как из объектного файла сделать бинарник.
369 1868300
>>68280

>книги


На хуй они тебе нужны? Если ты школочмоня то пойдет любая
370 1868301
>>68280

> как из объектного файла сделать бинарник


Подобное описано в документации к твоему компилятору. Язык никак не регулирует такое.
371 1868329
>>52710 (OP)
Как померить сколько сокет соединений будет держать на одной машине?
372 1868332
>>68329
65,535
373 1868334
>>68329
TCP - 1 сокет на accept входящих(слушающий), 1 сокет - на каждое 1 соединение.
UDP - 1 сокет на тонну соединений работает.

А если тебе нужно узнать сколько будет тачка соединений держать - утилиту пиши или ищи готовую.
374 1868335
>>68301
Охуенно, писать книгу по Си на 1000 страниц и не написать 10 строк о том как компилировать. И тут же адвокат прибежал защищать. Говно книга.
375 1868336
>>68332

>65,535


Откуда цифры? Я хочу ноду померять. Один чувак на конференции сказал, что она только 2к держит. Не верится. Да и давно это было, в 2015.
376 1868337
>>68334

>А если тебе нужно узнать сколько будет тачка соединений держать - утилиту пиши или ищи готовую.


Так я и спрашиваю как померять, какие утилиты есть и т.п.
377 1868339
>>68300
Пошел нахуй хуесос. Встреться ты мне, посмотрел бы как бы ты в лицо это сказал, хуета, шкальник ебучий.
378 1868340
>>68337
Мы тут на си погромируем, а не утилитами занимаемся.
Тем более вообще неясно что ты там тестировать собрался.
379 1868344
>>68340
Особо одаренный? Вы все тут говоришь такие? Измерить сколько сервер на ноде сможет держать сокет соединений.
380 1868364
>>68344
Иди нахуй отсюда, еблан.
По тебе видно что ты недалёкий клоун.
381 1868370
>>68364
На хуй твоя жопа хороша. Не знаешь ответа на вопрос - молчи. Не хуй выебываться. Школота ебаная.
382 1868384
>>68370
Не, ну ты реально дебил. Согласен с тем аноном.
Ты действительно думаешь, что оскорбляя тут кого-то, тебе кто-то поможет?
383 1868388
>>68384
Он и другие первые начали. Я нормально задал вопрос.
384 1868389
>>68344

>на ноде


Тебе в JS-тред, петушок.
385 1868400
>>68389
Хуй соси, шкальник.
386 1868404
>>68400

>пук


Не рвись так, мартышка.
387 1868409
>>68404
Клал я на тебя, идиот блядь. Только если ты думал, что вы тут молокососы можете всех хуесосить, то ты сильно ошибся. Я вас сам так заебу, что в лес убежите.
388 1868482
Посоветуйте книги по сетевому программированию на си под линукс
389 1868536
>>68003
Бамп. Помогите. У меня самого не получается. Исправление одной ошибки ведёт к несовместимости типов данных в других местах, с невозможностью преобразовать типы.
390 1868539
>>68536
Читать умеешь? Что в выводе написано? Написано 4:20: fatal error: stdafx.h: No such file or directory, как переводится?
391 1868542
>>68539
Этот код мне уже кто-то чуть переделывал без stdafx.h и с добавлением stdio, но я потерял тот код, а сделать сам так же без stdafx.h не могу.
392 1868544
>>68536
Это windows специфичный код. В крестах не спец, как и в винде, но думаю ты не скомпилишь в этом онлайн шеле.
393 1868550
>>68544
У меня VS2019 есть, онлайн компилятор просто чтобы дать ссылку на код. Могу ссылку прям на совсем всё скинуть, если надо. https://drive.google.com/drive/folders/0B0tDS9ufZC7EVmFCb05OZ0pRZVk
394 1868553
>>68544
И да, я вижу, что по моей ссылке есть stdafx.h, но я не вижу смысла его подключать, если можно сделать точно так же и без него.
395 1868558
396 1868563
#include<stdio.h>
#define bit8 0x80
#define bit7 0x40
#define bit6 0x20
#define bit5 0x10
#define bit4 0x08
#define bit3 0x04
#define bit2 0x02
#define bit1 0x01

int n;
int a[1000];
scanf_s("%d", &n);
for (int i = 0; i < n; i++) {
scanf_s("%d", &a[i%10]);
}
for (int i = 0; i < n; i++) {
printf("%x : ", (unsigned char)a);
printf("%x", (a & bit8) ? 1 : 0);
printf("%x", (a & bit7) ? 1 : 0);
printf("%x", (a & bit6) ? 1 : 0);
printf("%x", (a & bit5) ? 1 : 0);
printf("%x", (a & bit4) ? 1 : 0);
printf("%x", (a & bit3) ? 1 : 0);
printf("%x", (a & bit2) ? 1 : 0);
printf("%x |", (a & bit1) ? 1 : 0);
}
соре за тупые вопросы, но я опять тут. Почему он не выводит больше 2 символов в 16 ричной?
396 1868563
#include<stdio.h>
#define bit8 0x80
#define bit7 0x40
#define bit6 0x20
#define bit5 0x10
#define bit4 0x08
#define bit3 0x04
#define bit2 0x02
#define bit1 0x01

int n;
int a[1000];
scanf_s("%d", &n);
for (int i = 0; i < n; i++) {
scanf_s("%d", &a[i%10]);
}
for (int i = 0; i < n; i++) {
printf("%x : ", (unsigned char)a);
printf("%x", (a & bit8) ? 1 : 0);
printf("%x", (a & bit7) ? 1 : 0);
printf("%x", (a & bit6) ? 1 : 0);
printf("%x", (a & bit5) ? 1 : 0);
printf("%x", (a & bit4) ? 1 : 0);
printf("%x", (a & bit3) ? 1 : 0);
printf("%x", (a & bit2) ? 1 : 0);
printf("%x |", (a & bit1) ? 1 : 0);
}
соре за тупые вопросы, но я опять тут. Почему он не выводит больше 2 символов в 16 ричной?
397 1868567
>>68563
все понял, глупая ошибка была
1598774790167.jpg18 Кб, 338x424
398 1868881
>>68563

> bit8


> 0x80


> bit8

399 1868916
>>68881
https://prog-cpp.ru/c-operation/ может я что-то не так понял?
snap002663.png18 Кб, 732x254
400 1869078
>>68916
Охуительные истории у этой бабы.
401 1869081
>>69078
Это конечно пиздец.

Но если компилятор выдаёт ошибку, то можно ему помочь.
= (int*)500;
402 1869179
Есть утилита на C под *nix. При сборке разными способами всякий раз ошибка fatal error: sys/sysctl.h: No such file or directory. Файл sys/sysctl.h в системе есть. Возможно не по тому адресу, в котором ищется при сборке. Как фиксить? Ссылки на утилиту ниже

https://github.com/satori-com/tcpkali
https://aur.archlinux.org/packages/tcpkali/
403 1869186
>>66315
Никто здесь эту задачу сам не решит. Это перечислительная комбинаторика, ее почти никто не изучает даже в вузах, по ней мало книг и вообще инфы на русском.
404 1869191
>>68332
Молодец, я в курсе, что sizeof((struct sockaddr ∗)NULL->sin_port) == sizeof(uint16_t). Что сказать-то хотел?
405 1869193
>>68563
Децибел, блядть, позиция бита в слове - величина сдвига единицы, как и индекс в массиве - оффсет от начала. Откуда вы беретесь в Си-треде?
406 1869194
>>68482
берьош сокет, ебошиш коннекшн, погроммируеш... фантазия кончилась?
image.png483 Кб, 800x450
407 1869195
>>68384

>оскорбляя тут кого-то, тебе кто-то поможет


>называет кого-то дебилом

408 1869310
>>69193
раз такой умный, кинь мне книги по которым учился. Буду благодарен. Нам препод нихуя не объясняется. Учимся сами по себе.
409 1869327
>>68335

>Охуенно, писать книгу по Си на 1000 страниц и не написать 10 строк о том как компилировать.


Я тебя понимаю, но на самом деле очень-очень зависит от твоей ОС, компилятора, среды разработки и т.п.

Хотя если пишешь книгу для нулевых, было бы полезно небольшой экскурс в этой части дать, на примере пары компиляторов, например.
410 1869329
>>68332
Всё зависит он настроек ОС и как конкретно коммутация устроена. Можно и миллион держать, в принципе.

И, естественно, ещё сильно зависит от того, как обработчик соединений реализован. Он может тупо много не тянуть.
411 1869332
>>69310

>раз такой умный, кинь мне книги по которым учился. Буду благодарен. Нам препод нихуя не объясняется. Учимся сами по себе.


Вот увидишь он сдуется. Или посоветует дерьмо какое нибудь. Сам небось кроме хеловорлдов ничего не писал.
412 1869335
>>69332
Надеюсь на обратное. Хочу верить в людей.
413 1869339
>>69329

>И, естественно, ещё сильно зависит от того, как обработчик соединений реализован. Он может тупо много не тянуть.


Это самое главное. Для этого и хочу тесты провести. Нашел одну из лучших утилит для тестирования сокетов и вебсокетов. Но блин, не смог собрать на ядре 5.8, ее не обновляли уже 3 года. Вот я писал уже >>69179

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

Можешь что то посоветовать, литературу, ссылки, краткий алгоритм как изучать системное программирование на линуксе? Думаю форкнуть проект и ковыряться чтобы понять как устроен. Опыт программирования есть, но на высокоуровневых языках. Трудостей не боюсь, самообучаться умею, но так как область для меня новая и если можно так выразиться олдскульная (средний возраст тех кто пишет на си под линукс думаю больше 40 лет), то пока не понял как составить план обучения.
414 1869353
>>69186
Ну собственно решить ее можно вообще с 0 знаний, тупо a x 100 + b x 10 + c и гонять цифирки между ними, и считать количество перестановок, только нахуя? Дрочево уровня делить на бумаге в столбик.
415 1869354
>>69339
На си такие утилиты писать то ещё удовольствие.

Смотря что ты хочешь оттестировать вообще. Я игрался для себя, тестировал, сколько соединений можно держать. Я точные цифры не помню, довольно быстро начинаются проблемы с ограничениями ОС, но они же легко снимаются.

Реально проще тестировать с nodejs или python-asyncio, или go, вместе с докером, чтобы много виртуальных хостов создать с разными адресами.

На Си вообще не стоит в это лезть, если только вот совсем-совсем не нужно именно на Си. Потому что там начинаются нюансы, что либо треды, которые тормозные, либо всякие sselect/kqueue, либо какие-нибудь специфичные внешние либы вроде libevent. Скорее всего будет последнее, иначе ты рухнешь очень рано, но сюрприз, другие платформы тоже построены на этих библиотеках и благодаря этому работают очень быстро.

Поэтому, если ты не пишешь свой nginx, работаешь с сетью, то реально, не лезь в Си, не нужно. Он не для этого. Он для байтоёбства, а не для обслуживания системных вызовов ОС. Посмотри на Go, если хочется низкого уровня, на nodejs/asyncio, если хочется высокого уровня.
416 1869377
>>69354
Ты наверное не совсем понял. Утилитой tcpkali я хочу протестировать как раз ноду, go, и другие языки. Так как собрать ее не получается, решил углубиться в си. Все равно рано или поздно придется начинать. Более верхнеуровневые языки и платформы я использую, они мне понятны, пришло время опуститься ниже. И как раз появилась интересная задача. Писать свой load tester с нуля я не буду. Да и не за чем. Это будет сложнее чем разобраться с tcpkali. Ее писали опытные телекомщики. Сам я так не напишу. А вот посмотреть их решения могу. Думаю это принесет пользу.
417 1869381
>>69353
Эталонное решение должно выглядеть как рекурентное соотношение, а реализация соответственно как рекурсивная фукнция. Тупо в лоб можно конечно решить, но это не инженерный подход.
418 1869389
>>69381
В нормальном программировании никто рекурсиями не пользуется.
419 1869391
Поясните, пожалуйста, за перспективы С/С++ в научно-технических приложениях. Сам я - НИИшник-металлофизик, на работе пользуюсь Пайтоном, вольфрамовской Математикой и различными МКЭ-системами, но вот решил вкатиться в что-то более низкоуровневое. Больше тяготею к С, так как он проще, а у меня и так есть чем ебать мозги помимо программирования, но не хотелось бы заскочить в поезд, который уже никуда не идет (поэтому Фортран и не рассматриваю). В общем, какие я пока что вижу варианты варианты:
1) С
2) С++
3) не ебать мозги совсем, ознакомиться с Cython и дальше изучать Матлаб.

Продублирую в соседний тред.
420 1869397
>>69389
Уроки учи школьник. В некоторых языках нет циклов, только рекурсия. Комбинаторные алгоритмы эталонно решаются исключительно рекурсией. Такова их природа. Они рекурсивны. И только если возникает необходимость, рекурсивное решение оптимизуют каким либо образом.
421 1869403
>>69397

>В некоторых языках


Вот и пиздуй в треды таких """"языков"""", че ты тут забыл?
422 1869404
>>69391
Под эти задачи С просто не подходит
В С++ будешь катиться минимум года два, но оно того может стоит. Будучи икспертом в крестах, можно выйти на некст лвл хай лвл программирования даже относительно питона и вмазаться лиспохаскельными биндами. Но ты по-хорошему должен решить, нужно ли оно тебе вообще и достаточно ли ты биг достаточно ли брейн
Cython и матлаб вариант, если ты уже присмотрел какие-то вакансии, вник в них и собираешься сесть в офис на следующие N лет

https://www.youtube.com/watch?v=8X69_42Mj-g
423 1869414
>>69403
Тебя забыл спросить, уёбок. Ты тут не у себя дома чтобы командовать. Брысь нахой.
424 1869418
>>69381

>Эталонное решение должно


Кому должно? Откуда ты это высрал? Нахуй путешествуй.
425 1869420
>>69404

>Под эти задачи С просто не подходит


Под какие именно? По численным методам книги есть, на рисерчгейтах мужики пишут, что С/С++/Фортран - стандартная троица более низкоуровневых языков для физики, один написал, что у них в универе твердотельщики переходят с Фортрана на С.

>Cython и матлаб вариант, если ты уже присмотрел какие-то вакансии, вник в них и собираешься сесть в офис на следующие N лет


Тащемта, я нацеливаюсь на академ-карьеру, даже в случае эмиграции. Просто погромирование мне особо и не интересно, тот же Пайтон я использую в основном для анализа экспериментов и постройки графиков (может еще вкачусь в машинное обучение, тоже сейчас используется в науке и технике).
426 1869424
>>69397
Тогда почему я при рекурсивном решении ловлю stack overflow, если это так нативно должно быть?
427 1869432
>>69418
Дебил, такие задачи решает раздел математики перечислительная комбинаторика. Решений подобных задач существует уже масса. Почти все они сводятся к рекурсии. Хотя, кому я это объясняю...
428 1869435
>>69424
Потому что ты долбаеб быдло-кодерок
429 1869437
>>69435
Но я ж закодил академическое рекурсивное решение. Как так?
430 1869441
>>69381
Эту задачу в принципе можно решить на бумажке, на бумажке подобрать какое-нибудь решение. Скорее всего и предполагалось, что на бумаге решать будут.

А в целом не понятно, что они называют перестановкой мешков.

Всего существует две пары симметричных решений
(2, 7, 8, 1, 5, 6, 3, 9, 4)
(3, 5, 8, 1, 7, 4, 2, 9, 6)
(4, 3, 9, 1, 5, 6, 7, 8, 2)
(6, 2, 9, 1, 7, 4, 5, 8, 3)
, полный перебор это 362880 вариантов (9!), даже желания в такой ситуации нет заморачиваться на более умные варианты.
431 1869447
>>69441
"умный" вариант в таких задачках обычно сводиться к тому что можно доказать положение пары чисел, ну например у тебя всегда 1 на одном месте, потому что произведения дают не больше двух сотен, это уже 8! - 40 тысяч вариантов, так что да, умничать вообще не тянет.
432 1869448
Как убрать дублирующиеся опции в приложений с командной строкой? Вот в Линуксе вводишь повторяющийся патерн из опций он выбирает только оригинальный вариант и один. Неужели мне нужно писать сортировочную функцию, искать дубликаты и удалять из строки?
433 1869449
>>66315
Непонятно как измеряется тяжесть перестановок.
Например самый левый мешок тащить на место самого дальнего явно тяжелее, чем поменять любые две соседние пары мешков, однако же по кривому тексту задачи выходит не так.
434 1869451
>>69448
Нехуя не понял покажи пример на практике
435 1869454
>>69447
Ну вот о том и речь, что дольше заморачиваться и уродовать код, чем перебрать.

Вот если на бумажке решать, то очевидно, что 5 не может быть последней цифрой в числе, может быть только второй в двухразрядном или трёхразрядном.

Очевидно, что 1 может быть только старшим или средним разрядом трёхзначного числа.

Очевидно, что трёхразрядное число чётное.

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

Но на компьютере каждое такое ограничение надо отдельно кодировать, что уже глуповато смотрится.

Рекурсивное решение в принципе может работать быстро, потому что можно автоматом отсекать огромные ненужные ветви, в принципе было бы оправдано, если бы задача была не 9!, а 16! например.

Но морально тяжело придумывать что-то умное, когда в лоб работает за доли секунды. Ну будет работать не 0.1 секунды, а 0.001, какая разница?
436 1869458
>>69451
Короче в Линуксе когда вводишь прогу ls и кучу опции типа -lslslllslsllaallRSss лишние опции отбрасываются остаются только -lsaRS вот я думаю как мне убрать дублирующиеся опции?
437 1869470
>>69458
Ну можешь писать структу или ассоциативный массив какой-нибудь

Options options = {recursive: false, colored: false}

for (int i = 0;argv...) {
switch argv[i
case "r"
options.recursive = true
case "c"
options.colored = true
}
438 1869473
>>69454
Тут программистский интерес только если написать решатель таких задач, который сам будет выводить и доказывать такие ограничения.
439 1869479
>>69391

> не ебать мозги совсем


this
440 1869558
>>69441

>что они называют перестановкой мешков.


Я думаю что одновременно можно только два числа менять местами,
тут не нужен полный перебор, от начальной комбинации надо идти, и найти такую к которой ведет меньшее число шагов.
441 1869614
>>69448
getopt/getopt_long в помощь наверное, если тебе это нужно
442 1869671
>>52726
Потому что в си есть хоть какая-то модульность (можно использовать библиотеку скомпилированную другим компилятором) и её можно приклеить к любому другому языку в отличие от C++, для C++ ты все библиотеки должен собирать сам
443 1869686
>>69671
Какую то чушь порешь.
444 1869713
>>69671
Какой отборный бред, аж проняло.
extern "C"
445 1869718
>>69671
С написан на С++
446 1869721
>>69713
>>69686
В С есть стандартизованый ABI, а в С++ нет. Ты не то что в другом языке, ты в самом С++ библиотеку скомпилированную другим компилятором не прилинкуешь.
447 1869723
>>69397

> В некоторых языках нет циклов, только рекурсия.


Такими языками никто не пользуется
448 1869739
>>69721
Я понимаю о чём ты говоришь, но ты несёшь какую-то дичь.
Именно что сишный объектный код легко линкуется со всем чем можно. Соответственно, функцию, написанную на Си, легко вызвать отовсюду.

Вызвать С++ функцию из Си ты скорее всего не сможешь. Во всяком случае без правки руками промежуточного asm и ручного name mangling. Еслм очень захотеть, то можно, но дорого и неуниверсально. Я бы смог, но не вижу в этом смысла - гораздо проще объявить функцию как extern "C" и тогда ты без проблем сможешь вызвать её из Си.
449 1869741
>>69739

>гораздо проще объявить функцию как extern "C" и тогда ты без проблем сможешь вызвать её из Си.



Угу. Но там один такой жЫрный нюанс. Я эксперементировал с линковой С и С++ и обнаружил что если к Си проекту линковать библиотеку, где используются статические классы с конструкторами, то эти конструкторы не вызываются. Если С++ библиотека использует статические объекты с конструкторами, то эти объекты не будут проинициализированы. И с большой вероятностью программа упадёт при вызове функций из этой библиотеки.
450 1869746
>>68409
Пошел ты нахуй, ЖСор, я ANSI C продюссер.
451 1869747
>>69193
Из JS/Smoothie-треда.
452 1869748
>>69081
Не, подожди, лучше так:
int suction = (int) 1488;
453 1869749
>>69748
Та сука, ебанная макака, сожрала все звезды блядь!
454 1869756
>>69741
Тут ты прав. Но с одним но - этот подводный камень довольно известный. И фиксится тем, что нужно файл где имеется main() функция собрать С++ компилятором.
455 1869782
>>69721
В стандарте C нет ABI, что ты несешь? Ну ка слинкуй виндовую DLL с линуксовым .so
456 1869787
>>69437
Оцени расход стека в своей задаче, академик. Сравни с размером стека в своей системе.
457 1869789
>>69458
Чем мешают?
458 1869790
>>69458
Звучит как bad practice, лучше падать с ошибкой, ведь скорее всего это опечатка типа rm rf
459 1869800
>>69441
Естественно на бумаге, это из журнала 1938 года.
Прикол в том, что меняя местами первые же два мешка (7 и 2) ты получаешь как бы подсказку к дальнейшим действиям, т.к. произведение - 156 похоже на число в центре.

>>69449
Никак, это ты себе надумал уже.

>>69186
Это задача на перебор всех вариантов (мутаций), классика программирования. Ну, если решать брутфорсов, а по-другому и не надо, если у тебя есть компьютер.
Я решил не сам, к сожалению, спиздив на форуме часть кода для перебора всех вариантов. На моём руйзене за 0.26 секунды перебирает.
460 1869809
>>69800

>Никак


Кек, математикошизики как всегда обломались о реальность с тяжелыми мешками.
461 1869851
>>69809

Шизик это товарищ из этого поста: >>69449, которому понадобилось измерять некую "тяжесть перестановок", хотя об этом никто не просил. Сказано просто наименьшее число перестановок, и всё.
462 1869854
>>69851
Какой же ты аутист, любо дорого смотреть.
463 1870084
>>69809
Сукапиздец. Да ты же чернорабочий от программирования.
464 1870147
>>66315
На крестах решается где то строк в десять, т.к. есть std::next_permutation искаропки.
465 1870184
>>69723

>Кукарек, кококо, кудах-кудах

466 1870197
>>70184
Весь тред борщём зальешь.
467 1870304
>>70147
Вот сука, опять си у крестов соснули!
469 1870608
>>70450
Ссаное зумерье, не видело магнитофонов и не слышало диалап-модемов.
470 1870625
>>70608

Как что то хорошее. Ждать по минуте загрузку страницы, по 5-10 минут 1 трек в мп3 хуевого качества. Месяц качать 1 исоху и то если у какого провайдера халявные тарифы с халявными часами есть.

Спектрумофаги тоже при малейшей возможности допаивали 128к + бетадиск и забывали про мафон как про страшный сон, а то и вовсе выкидывали к хуям свой спек ради самой сраной 286 списанной с пожелтевшим пластиком и в чужих засохших соплях.
471 1870627
>>70625

>по минуте загрузку страницы


Это кокие ты там при диалапе страницы по минуте загружал?
472 1870649
>>70625

>Месяц качать 1 исоху


Что еще спизданешь. Я качал за месяц несколько исох для дримкаста. Со скоростью вообще не проблма, проблема была в цене за время соединения.

Но возвращаясь к видео. Что особенного в загрузке через звук? Тогда все компьютеры писали и читали со звуковых носителей, да и интернет тоже через диалап звуком. Восхищаться таким будет только тупорылое зумерье без мозгов.
Единственное особенное, что у этого хуя есть доступ к писалке винила. Вот лучше бы покахзал этот станок, чем банальную хуету.
473 1870665
>>70649

>Тогда все компьютеры писали и читали со звуковых носителей, да и интернет тоже через диалап звуком. Восхищаться таким будет только тупорылое зумерье без мозгов.


Я помню по радио передавали звуком игори и программы, я вот этим до сих пор восхищаюсь.
474 1870702
>>70665
У тебя очень слабы видимо познания в низком уровне. Даже со своими я не вижу ничего охуенного, а только кучу гемороя, наихуевшейшую скорость и ощущение облома, если кто то пернул в эфир во время передачи.

В этой хуйне нет ничего сложного вообще, даже матана никакого ненужно.
475 1870708
>>70702
>>70665
>>70649
А вот чего меня действительно завораживает это представление, как во времена люди пердолились с соснолькой.
Как писали утилиты для собственных нужд на ходу и ебали ОС в режиме реального времени.

А с другой стороны ... ну нахуй такое.
476 1870710
>>70702
Вообще то нужен, частотная модуляция же.
477 1870718
>>70710
Что бы что? Передатчик перерисовать с книжки и сделать?
Тебе не разработать новый принцип с нуля нужен, а воспроизвести под себя, 99% конструкторских формул в электронике ни содержат ничего за рамками школьной программы.
478 1870721
>>70718
>>70710
Хотя ок. Я радейки не строил сам, может херь несу. Считал импульсные источники питания и всякую силовую ебань.

Да, формулы бывают жирные охуительно, но там ничего сложнее деления\умножения.
479 1870963
>>70710
Какая модуляция, там же не эфирная радиопередача, несущие не нужны.
480 1871222
>>52710 (OP)
Есть у кого опыт самостоятельного написания сетевого стека языка? В языке который я хочу использовать, из сетевого стека только socket api. Хочу навернуть поверх что нибудь чтобы можно было удобно писать для веба. Как пример посмотрел сорцы пакета /net в Golang. Код на Go вроде легко читается и сорцы с комментариями. Литературу бы по реализации сетевых протоколов. Кто нибудь знает такую? Хз как гуглить
481 1871229
>>70963
В смысле? Вроде речь как раз шла про передачу в радиоэфире.
482 1871233
>>71222

> сетевые протоколы


> над сокетами для веба


Выбери что-то одно.
483 1871244
>>70963

>там же не эфирная радиопередача


А кокая?
484 1871321
>>71233
Wat? По твоему веб работает не на сетевых протоколах? Сетевые протоколы для веба не на сокетах строятся? Опять кукареки лезут туда в чем ничего не понимают.
485 1871466
>>71222

>Литературу бы по реализации сетевых протоколов. Кто нибудь знает такую?



https://tools.ietf.org/rfc/index
486 1871469
>>71466
Неистово двачую, реально лучший сайт когда хочешь без смузи и ебли в жoпу почитать как работает какой-то smtp/socks/etc протокол.
487 1871471
>>71321

>Опять кукареки лезут туда в чем ничего не понимают.


Кукарек тебя делал.
Вы, пидоры, своими поделками поверх HTTP уже весь Интернет засрали.
488 1871480
>>71222

>В языке который я хочу использовать, из сетевого стека только socket api.


>>71471

>поверх HTTP


>HTTP


Какой нахой http, только сокеты есть, пшел вон идиот.
489 1871491
>>71321
По-моему ты не хочешь что-то писать, а хочешь поговорить о том, чтобы что-то написать. Тонны материалов по этому поводу и реализаций протоколов на разных языках. Бери конкретный протокол и разбирайся с ним.

Спецификации есть, разборы того, как писать есть.

В принципе для самообразования можно.
490 1871494
>>71480
Хочет писать для WEBа, но не поверх HTTP.
Ты даже не понимаешь чего ты хочешь.
Тебе наверняка первый ответил дядя, который копался в заголовках IP и TCP. Ты этого не осознал и начал на него наезжать. Ты точно не быдло?

Короче, пиздуй читать что такое HTTP - https://tools.ietf.org/html/rfc2616
и что такое HTTPS - https://tools.ietf.org/html/rfc2660
что такое TLS - https://tools.ietf.org/html/rfc8446

И пару дней не пиши сюда, пока все не забудут какой ты идиот.
491 1871496
>>71494
Он хотел ссылок на что-то разжёванное по разным протоколам каким-нибудь. Ну есть там ещё для доменных имён, всякие socks5 и что-нибудь ещё, что с веб связано, но не http при этом.

Но я думаю так, если чел хочет потрепаться, то он пишет на двач или ещё куда. Если хочет именно делать, он пишет на гугл или аналоги. Всё просто.

Когда что-то конкретно не понятно, тогда другая история.

Материалов реально как грязи, там сначала надо понять, как интернет вообще работает, какого рода протоколы для чего используются.
492 1871527
Сап, аноны, вопрос про юникс-программирование. Есть character device устройство в системе (в /dev лежит), устройство представляет собой кусок памяти с информационными полями - статусы, полезная инфа и проч.
Анон, как постоянно считывать эти быстро обновляемые данные? Тупо вызывать read() для этого файлового дескриптора? Или есть в ОС какие-то следящие механизмы что-ли kpoll? Что требуется от драйвера? В нем реализованы функции чтения, записи, aio_read/write, seek.
493 1871542
>>71494
Нахуй мне твой текстовый уебищный http? Только долбоебы поверх http делают протоколы. MQTT, websocket - намного более продвинутые, более легковесные и производительные, и легче в реализации.
494 1871554
>>71527
Устройство должно сигналить для poll/select, когда в нем меняется содержимое. Скорее всего, это не сделано, остаётся перечитывать.
495 1871591
>>71527
Либо делать polling через select/poll/epoll, если в char dev в структуре file_operations имеется обработчик для poll. Либо через сигналы делать и SIGIO, опять же если в char dev в той же структуре есть обработчик для fasync. Но с сигналами заебешься.
496 1871649
>>71554
>>71527
Большое спасибо, это ценная информация для меня
497 1871767
>>71542

>Только долбоебы поверх http делают протоколы. MQTT, websocket - намного более продвинутые,


websocket работает поверх HTTP
498 1871803
>>71767

>websocket работает поверх HTTP


Чиво блядь? Может у долбоебов и так конечно.

WebSocket — протокол связи поверх TCP-соединения
https://ru.wikipedia.org/wiki/WebSocket
499 1871831
>>71803
Ты читал свою статью дальше содержания?
500 1871843
>>71831
В принципе он прав, WebSocket это не http, он мимикрирует под http, принимается вебсервером как http, то потом включается в действие опция upgrade и протокол подменяется.

Классический http работает по схеме запрос-ответ, другого не предусматривает, а вебсокеты двунаправленные, и с дополнительными субпротоколами ещё. При этом какие-то специфичные фишки классического http в вебсокетах не доступны.

Можно это назвать расширением HTTP (по аналогии с HTTP2), можно назвать другим протоколом. Правильнее всё-таки другим протоколом называть.

Есть масса либ, которые реализуют вебсокеты, но не поддерживают ничего другого из http. В nginx приходится немного пританцовывать, чтобы проносить вебсокеты дальше.

Но спор ни о чём на самом деле.
501 1871847
>>71843
Вопрос не в том как называется, а как работает. TCP бинарный протокол, HTTP текстовый. В примерах видно что данные передаются каким то текстом типа base64, то есть +оверхед по размеру +оверхед по упаковке распаковке. Есть ли там чисто бинарная передача?
502 1871852
>>71847
Хватит хуйню городить. По вебсокетам можно передавать бинарные данные. Нормальные люди так и делают. Вебсокеты не про текст, а про транспорт.
503 1871854
>>71852
Я и емейлом могу бинарные данные через base64 передавать, что сказать то хотел?
504 1871883
>>71847
Как ты передашь данные в двоичном формате без кодирования и декодирования?
1590825260805.png20 Кб, 410x452
505 1871887
>>71883
А я тебе о чем говорю?
506 1871935
>>71887
По хттп происходит хендшейк, который включает соответствующую фичу браузера, дальше он не используется.
Это как ты ембеддишь swf в хтмл и дальше работает отдельный плагин, другая технология, встроенная в браузер.
507 1871958
>>71887
Ну так хули ты говоришь про оверхед на декодирование? Его же в любом случае не избежать.
508 1872693
Снова здравствуй уважаемый анон.
Подскажи почему мне FIFO не создать?
https://it.wikireading.ru/14107
509 1872713
>>72693
Все большую и большую популярность в России и во всем мире завоевывает Linux — UNIX-подобная операционная система для IBM-совместимых персональных компьютеров.
Какого года книга?
510 1872731
>>72713
2006 года.
511 1872732
>>72713
mknode отменили ?
512 1872901
>>72693
Может стоит глянуть в errno?
513 1872928
>>72901
разбираюсь как им пользоваться :)
514 1872963
>>72901
в книге инфа идет последовательно и errn'a на данный момент нет
515 1873047
>>72963
Выведи его значение в тот же самый printf и смотри в интернет что означает код ошибки.

Загляни вот сюда - https://man7.org/linux/man-pages/man3/errno.3.html
516 1873055
>>73047
спасибо, с помощью ерна определил not permitted. Перенес свой файл в другой каталог - все заработало, как оказалось у меня в расшареной папке фифо не создается.
517 1873107
>>73055
Молодец. Без иронии говорю. Именно так и должен решить проблему настоящий инженер. И объяснить другим. И без срачей.
Другим наука.
Тред утонул или удален.
Это копия, сохраненная 24 апреля 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски