Сохранен 506
https://2ch.hk/pr/res/1634080.html

C Programming Language #55 /clang/

 Аноним OP 16/03/20 Пнд 00:37:16 #1 №1634080 
C Propaganda.jpg
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь 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/n2385.pdf
- man/Dash/zealdocs

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

- Очевидный 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. [email protected] "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 помогает читать сложные сишные декларации.

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

- №52: http://arhivach.ng/thread/529928/
- №53: http://arhivach.ng/thread/529929/
- №54: http://arhivach.ng/thread/535256/ >>1610764 (OP)
Loading...
Аноним 16/03/20 Пнд 04:09:51 #2 №1634117 
Вкатился, возможно с платиной. Собственно, сабж: https://godbolt.org/z/e8Zjvw

Где я должен делать проверку? В foo или bar? Или в обеих? Вообще нужны ли эти проверки, если есть аннотации? Дискасс.
Аноним 16/03/20 Пнд 11:20:25 #3 №1634184 
>>1634117
> возможно с платиной
Да. Проверяют возвращаемые значения, в данном случае - результат malloc(). Многие проверяют и при использовании, но по мне так для аргументов достаточно assert() вкатить (и то нахуй не нужно), если это не внешняя функция, которая реализует интерфейс модуля. Вот для внешней надо проверять все. Алсо, обработать ошибку выделения памяти правильно очень сложно, и в каком-нибудь консолеговне проще всего сделать обертку уровня if (!malloc()) exit() и не думоть.
Аноним 16/03/20 Пнд 11:22:24 #4 №1634185 
>>1634117
>>1634184
Ой, ты именно про аргументы. Ладно, про аргументы я тоже ответил.
Аноним 16/03/20 Пнд 11:49:33 #5 №1634198 
Где почитать как быстро и ненавязчиво писать тесты для отдельных функций?
Аноним 16/03/20 Пнд 20:57:00 #6 №1634576 
>>1634198
у мамы своей спроси
Аноним 16/03/20 Пнд 21:38:33 #7 №1634602 
>>1634576
шутки за 100, хмм
Аноним 16/03/20 Пнд 22:32:43 #8 №1634624 
>>1634198
В книжках у тестеров что то такое попадалось.
Функция получает что-то на вход и выдает выход
Надо поделить все множество возможных входов на уникальные классы.
Например, ты пишешь parseFloat(const char*). 3.0 и 4.0 будут в одном уникальном классе, 3.0, -3.0, 3e-1, Inf, zhopa - в разных.
Значит надо проверять такие ситуации, как:
null, пустая строка, строка с правильным числом, строка с неправильным числом. Решить к чему относится строка из двух чисел. Решить к чему относится строка, начинающаяся с числа, но заканчивающаяся мусором.
Сами категории тоже надо подразделять.
Правильные числа - проверять целые числа, вещественные числа, отрицательные числа, научную запись, NaN, Inf и т.д. Решить что будет если в начале два плюса, если после числа пробелы, если после плюса пробел и т.д.
Неправильные числа - проверять что будет если подать очень длинное число, что будет если подать перед числом плюс и минус, или два минуса
Аноним 16/03/20 Пнд 22:37:22 #9 №1634629 
>>1634624
Забыл дописать - когда у тебя будут уникальные классы, надо проверять граничные случаи, например тебе не надо проверять все положительные, а только граничные - 0.0, 1.0, 1.175494e-38, 3.402823e+38...
Аноним 17/03/20 Втр 06:24:24 #10 №1634725 
>>1634624
Это понятно, да, но как тесты оформлять? Писать программу, влючать в неё .с файл, который хотим проверить, и там вызывать функции с заранее определённым входом и ожидать от них определённого выхода?
Аноним 17/03/20 Втр 07:02:34 #11 №1634728 
>>1634198
Обычно используют готовые фреймворки для тестирования, наверняка под си что-то есть.
Аноним 17/03/20 Втр 07:21:05 #12 №1634732 
>>1634728
Может и есть, но мне хочется tests first approach опробовать, как в tdd. Просто на маленьких учебных задачках. Валгринд для этого разворачивать как-то несуразно.
Аноним 17/03/20 Втр 10:13:22 #13 №1634777 
>>1634725
Можно просто почти как в питоне:
#ifdef TEST
int main(void) { ...}
#endif
И потом cc -DTEST file.c Для либ очень даже норм.
Аноним 17/03/20 Втр 10:52:34 #14 №1634795 
>>1634777
Мне не хотелось бы держать это в одном файле, если честно. На мой взгляд так будет некрасиво. Наверное, поступлю как написал выше. Сделаю отдельный .с, в который тупо инклудом буду брать программу, и проводить тесты.
Аноним 17/03/20 Втр 11:54:46 #15 №1634830 
>>1634732
Не валгринд разворачивать, а использовать фреймворки
https://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C
Например cmocka (выбрал от балды, сам выбирай)

https://lwn.net/Articles/558106/

Пишешь c- файл с тестами, и отдельно собираешь бинарник, в котором указаны твои нужные c-файлы, и файл с тестами.
Аноним 17/03/20 Втр 18:25:21 #16 №1635263 
Анон, хотел бы ты женщину-программиста со знанием языка Си?

https://www.youtube.com/watch?v=T8Yqaol_A5Y

Или лучше С++?
Аноним 17/03/20 Втр 22:57:58 #17 №1635508 
Да как это говно установить то блять?
Аноним 18/03/20 Срд 11:49:07 #18 №1635804 
>>1635263
Дашу Емакс не хочу...
Аноним 19/03/20 Чтв 21:34:52 #19 №1637424 
Вопрос такой: сколько времени займёт изучение данного языка в среднем?
Аноним 20/03/20 Птн 00:47:59 #20 №1637594 
>>1637424
месяц, дальше забываешь про дроч языка и достигаешь просветления через прикладнуху (юниксовые проги с продвинутым функционалом, всякие байтоебские кодировщики пишешь), иногда "повышая квалификацю" годным чтивом про хорошие практики
Аноним 20/03/20 Птн 07:20:59 #21 №1637669 
>>1634080 (OP)
У кого есть время, и нефиг делать - помогите зафиксить uTox для XP!
https://github.com/username1565/uTox_winXP
А то хуле он конпелируется, но не пашет? Понять не могу.
Разрабы отказались от поддержки Windows XP,
поэтому приходится извращаться со прекомпилированными бинарниками,
заменяя ноды при помощи JavaScript: https://github.com/username1565/uTox_winXP/releases
Можно было бы декомпилировать эти бинарники и получить рабочий исходник,
но я Си не знаю, просто форкнул проект, добавил либы,
и описал процесс компиляции, под Windows XP, вот здесь: https://github.com/username1565/uTox_winXP/commit/cd23deef631183178d113cbac2dd1812f547fd85
А теперь люди жалуются, что бинарник не пашет, а я в душЕ не ебу, чё он не пашет, блядь.
Аноним 21/03/20 Суб 02:25:22 #22 №1638858 
Untitled.png
у меня переполняется значение, измнения типа данных на long, long long, unsigned long и т.д. не помогает почему-то. Что делать? Как сделать так чтобы он верный результат давал?
Аноним 21/03/20 Суб 02:27:36 #23 №1638859 
>>1638858
чтобы в минус не уходил короче говоря.
Аноним 21/03/20 Суб 02:40:11 #24 №1638861 
>>1638858
>>1638859
мне кажется что надо в визуалке компилятор настраивать...
Аноним 21/03/20 Суб 03:44:48 #25 №1638867 
>>1638858
Ну ты же печатаешь d. Чтобы напечатать long, надо писать "%ld"
Аноним 21/03/20 Суб 12:06:43 #26 №1638982 
>>1638867
Только у него и так лонг по умолчанию, нужен lld.
Аноним 21/03/20 Суб 12:49:04 #27 №1639020 
>>1634080 (OP)
Анон, можно ли как-то хранить имена типов данных в переменной?

К примеру, в функцию приходит void-указатель на какое-либо значение (может быть вещественное число, целое и т.д.).

Для того, чтобы из void получить значение мне необходимо совершить приведение типов, в случае с целыми числами это (int )(void ptr)

Вопрос: а можно ли хранить имя типа в переменной, для того, чтобы писать:
(type_name )(void ptr)?
Аноним 21/03/20 Суб 12:51:27 #28 №1639024 
>>1639020
Сейчас вот задумался, что это немного противоречит архитектуре языка программирования, хех. Ведь, по сути, речь идет о хранении ключевых слов в переменной.
Аноним 21/03/20 Суб 13:00:02 #29 №1639029 
MinGW как виндовая версия GCC работает хорошо?
Аноним 21/03/20 Суб 13:43:22 #30 №1639054 
>>1639020
Воздержись от void* без крайней необходимости.
Язык тебе дал перегрузки функций fun(int), fun(float)

Еще можно передавать тип вторым параметром
enum { INT_TYPE, FLOAT_TYPE }
fun(void_ptr, INT_TYPE)

В C++ можно было бы на шаблонах что то нагородить fun<int>(ptr), fun<float>(ptr)
>>1639024
Это нормально, в более высокоуровневых языках есть рефлексия, но она всегда требует большого оверхеда.
Аноним 21/03/20 Суб 13:44:14 #31 №1639055 
>>1639029
По моему скромному опыту MSYS2 удобнее.
sageАноним 21/03/20 Суб 13:54:05 #32 №1639060 
>>1639054
> Язык тебе дал перегрузки функций fun(int), fun(float)
Не дал.
Аноним 21/03/20 Суб 14:00:46 #33 №1639070 
>>1639060
Вот это я тупанул.
Аноним 21/03/20 Суб 14:06:30 #34 №1639073 
>>1639060
Погуглил, в 2011 году добавили какую-то шляпу _Generic
Возможно с ней можно что-то такое делать.
https://stackoverflow.com/questions/479207/how-to-achieve-function-overloading-in-c
Аноним 21/03/20 Суб 14:25:18 #35 №1639104 
>>1638867
>>1638982
спасибо большое, щас попробую
Аноним 21/03/20 Суб 14:31:19 #36 №1639108 
>>1638867
>>1638982
спасибо вам огромное, работает. люблю вас, анчоусы.
Аноним 21/03/20 Суб 14:42:32 #37 №1639126 
Untitled.png
>>1638982
>>1638867
всё норм, но в консоле попрежнему результат некорректно отображается. помогите, молю.

https://pastebin.com/94FcGuU5
Аноним 21/03/20 Суб 15:11:45 #38 №1639178 
>>1639126
Ну она через return идёт, там вроде автоматические преобразование любых типов к обычному int со знаком идёт. Я конечно не про, но я бы просто в принт это сделал и всё.
Аноним 21/03/20 Суб 15:36:40 #39 №1639207 
>>1639178
Двачую
https://en.wikipedia.org/wiki/Exit_status
Windows uses 32-bit unsigned integers as exit codes, although the command interpreter treats them as signed
В линуксе тоже вроде код возврата 32 битный, более того в некоторых частях системы он вообще 1 байтный.
Аноним 21/03/20 Суб 15:44:04 #40 №1639218 
>>1639207
>>1639178
Спасибо, больше анчоусы. Понял. Вопросов больше нет.
Аноним 21/03/20 Суб 15:44:43 #41 №1639219 
Как же хочется поскорее научиться писать драйвера...
Аноним 21/03/20 Суб 16:36:31 #42 №1639317 
>>1635804
фу.
Аноним 21/03/20 Суб 16:38:53 #43 №1639321 
>>1639055
Так в неё же мингв и ставится, не?
sageАноним 21/03/20 Суб 19:04:45 #44 №1639441 
>>1639321
Есть msys+mingw32, а есть msys2, где много всякого, в том числе mingw-w64. Фактически msys - это окружение (и инсталлятор), компилятор вообще можно отдельно ставить, если ./configure не интересует.
Аноним 21/03/20 Суб 20:18:07 #45 №1639510 
image.png
Screenshot20200321200727.png
Делаю учебную залачку из праты.

Есть бинарное дерево, в каждой ноде лежит имя животного в массиве, и лист с их видами. Каждая ячейка листа тоже массив. Хочу вывест на экран содержимое ячейки.

У листа есть опция перебора всех ячеек и применения функции к ним. Хочу вывести имя пета рядом с видом для этого пишу функцию, которая принимает содержимое ноды дерева, делает функцию для печати содержимого ячейки листа и перебирает лист. vscode на такое жалуется (пишет, что ожидал ;), а gcc спокойно компилирует и это работает.

Я правильно понимаю, что это какое-то расширение от gcc и так делать не надо? И как делать тогда надо, чтобы нужное число строк печатать для любого списка в ячейке?
Аноним 21/03/20 Суб 20:31:55 #46 №1639525 
>>1639510
>это какое-то расширение от gcc
Да.
Не объявлять функцию вложенную в другую функцию.
Аноним 21/03/20 Суб 20:45:31 #47 №1639541 
>>1639525
А как тогда печатать для каждого вида животного его имя? Имя нам известно один раз, в ноде дерева, потом мы передаём управление листу, чтобы он сделал
void showPetKind(ListItem kind)
{
printf("%s\n", kind.petkind);
}
над каждой ячейкой. Как передать ему ещё и и имя? Или менять функцию
void TraverseList(const List plist, void (pfun)(ListItem item));
чтобы она вместо void (pfun)(ListItem item) принимала void (pfun)(ListItem item, char *petname)?
Аноним 22/03/20 Вск 20:32:27 #48 №1640210 
Доброго времени суток. Что аноны могут посоветовать по англоязычной литературе, чтобы в кратчайшие сроки въехать в C, если уже имеется достаточный опыт работы с C++?
Хотелось бы книгу, которая была бы ориентирована не на совсем зеленых, но и не была слишком техническим материалом (как The C Programming Language). Подумываю взять Дейтелов. Что скажете, нормально или слишком много базы?
Аноним 22/03/20 Вск 22:46:07 #49 №1640328 
>>1639541
Тащемта можно объявить функцию внутри функции, но определять вложенную функцию нельзя. Это значит, что ты можешь написать прототип функции внутри другой функции, но определение обязан писать вне функций.
Аноним 22/03/20 Вск 22:52:18 #50 №1640332 
>>1640210
>если уже имеется достаточный опыт работы с C++?
По моему проще загуглить на stackoverflow разницу между c и c++
Аноним 23/03/20 Пнд 00:43:43 #51 №1640390 
Зачем в си побитовые операторы?
sageАноним 23/03/20 Пнд 00:45:02 #52 №1640392 
>>1640390
Чтобы манипулировать битами.
Аноним 23/03/20 Пнд 00:45:22 #53 №1640393 
>>1640392
А зачем? какое практическое преминение?
Аноним 23/03/20 Пнд 00:46:03 #54 №1640394 
>>1640392
Аноним 23/03/20 Пнд 00:46:34 #55 №1640395 
>>1640393
Любое. Манипуляция битами тьюринг полная.
Аноним 23/03/20 Пнд 00:47:58 #56 №1640397 
>>1640395
Зачем ты на си пишешь?
Аноним 23/03/20 Пнд 00:49:43 #57 №1640398 
>>1640397
Поясни.
Аноним 23/03/20 Пнд 00:52:24 #58 №1640399 
>>1640398
Ну с какой целью? Ты же сидишь в СИ треде значит учишь его или уже владеешь им и пишешь на нём что-то.
Аноним 23/03/20 Пнд 00:54:54 #59 №1640401 
>>1640399
Не понимаю вопроса. У С должна быть какая-то особенная цель? Или ты сидишь в программаче и недоумеваешь, зачем люди программы пишут?
Аноним 23/03/20 Пнд 01:06:47 #60 №1640406 
что нужно чтобы уметь писать драйвера? си освоил, что ещё, аноны?
Аноним 23/03/20 Пнд 02:12:37 #61 №1640426 
Освоил побитовые операции в си, ну понял как это работает устроено. Аноны, молю поясните мне ньюфане на пальцах ну где примерно это можно применять на практие? ну интересно пиздец. Душные мудаки которые будут нарочит односложно и неопределённо отвечать не пишите мне. Я знаю здесь анон был хороший который мне задачи помогал решать который мне алгоритм переполнения хороший показал. МОЛЮ ОТЗОВИСЬ
Аноним 23/03/20 Пнд 02:26:37 #62 №1640428 
>>1640426
>побитовые операции в си
Побитовые операции везде одинаковы и вообще это математика
>где примерно это можно применять на практике
Битовые поля и матрицы используются в логике приложения ради перформанса
Кроме этого только в кодировке
>Душные мудаки
Ты сам душный долбаеб неосилятор плачущий на мылочах вместо чтения полторых статей
Аноним 23/03/20 Пнд 02:27:53 #63 №1640429 
>>1640428
спасибо за ответ,понял. вот так бы сразу.
Аноним 23/03/20 Пнд 03:00:14 #64 №1640432 
>>1640426
Мигать светодиодами на чипах.
Да везде блджад. В хэшах, в наборах которые сеты, в crc32, в проверках четности, в псевдорандоме, во всяких быстрых делениях, округлениях, извлечении корней.
Вообще вопрос уровня где используется вычитание.
Аноним 23/03/20 Пнд 03:04:04 #65 №1640433 
>>1640432
Спасибо тебе тоже, анчоус за ответ, у тебя более разврнутый чем у предыдущего анона.

Алсо
>Мигать светодиодами на чипах.
да когда-нибудь я научусь писать драйвера и программировать микроконтроллеры как же я буду отрываться и эксперементировать. спасибо, анчоус ещё раз.
Аноним 23/03/20 Пнд 03:07:04 #66 №1640434 
>>1640432
Мне очень понравилось в ручную это просчитывать если честно побитовые операции. Я даже себя проверил по всем пунктам. Это то чего я ожидал от программирования. Помню когда в веб 2 года назад вкатывался искренне охуевал и думал что это за гавно унылое. А тут прикольно люблю когда всё так разобрано до винтика прозрачно и понятно, низкуровневость это охуено, если помечтать уже то может быть когда-нибудь я вкачу своё ньюфажное ебало и в ассемблеры
Аноним 23/03/20 Пнд 04:02:24 #67 №1640441 
>>1640434
Есть крутая книжка Алгоритмические трюки лоя программистов. Конечно сейчас процессоры с набором инструкций поьогаче и компиляторы стали поумнее, поэтому она менее актуальна, но там про это.
Аноним 23/03/20 Пнд 11:10:25 #68 №1640544 
>>1640434

https://bitbucket.org/CPMADevs/cnq3/src/master/code/
Аноним 23/03/20 Пнд 12:02:21 #69 №1640570 
>>1640328
Понятно, что можно объявить, вопрос не в этом. Вопрос, как получить желаемое поведение без применения nested functions? Потому что с ними очень удобно в две строки это получилось >>1639510, так как гцц разрешает.
Аноним 23/03/20 Пнд 13:45:43 #70 №1640656 
>>1640544
что это?

>>1640441
спасибо возьму на заметку
Аноним 23/03/20 Пнд 13:50:16 #71 №1640663 
>>1640434
>>1640426
Это чтоли до сих пор тот вкатышь который здесь с января срёт своими идиотскими вопросами и просит проверить задачи из кернигана? Когда ты уже отсюда съебёшь то.
Аноним 23/03/20 Пнд 13:50:45 #72 №1640666 
>>1640656

Кастомизированные сорцы Quake 3 (причесали структуру, добавили +- современные GAPI) от создателей CPMA.

На С.

Аноним 23/03/20 Пнд 13:53:14 #73 №1640668 
>>1640666
я ничего не понял из того что ты мне сказал, извини. мне такое ещё рано
Аноним 23/03/20 Пнд 14:13:09 #74 №1640683 
>>1640570
Тогда так >>1639541 и ещё передавать petname.
Аноним 23/03/20 Пнд 16:32:02 #75 №1640771 
>>1637594
>достигаешь просветления через прикладнуху (юниксовые проги с продвинутым функционалом, всякие байтоебские кодировщики пишешь),
Откуда всё это брать? Читал Дейтеллов последние главы типы данных (списки, стек), препроцессор. работа с памятью, goto - на всё это по несколько страничек и конец. Как детектив на самом интересном месте обрывается.
Аноним 23/03/20 Пнд 16:34:10 #76 №1640774 
не получается извлечь данные
#include<stdio.h>
#include<json-c/json.h>

int main(int argc, char argv) {
FILE fp;
char buffer[1024];
struct json_object
parsed_json;
struct json_object depth;
struct json_object
azimuth;
struct json_object *inclination;

fp = fopen("test2.json","r");
fread(buffer, 1024, 1, fp);
fclose(fp);

parsed_json = json_tokener_parse(buffer);

json_object_object_get_ex(parsed_json, "depth", &depth);
json_object_object_get_ex(parsed_json, "azimuth", &azimuth);
json_object_object_get_ex(parsed_json, "inclination", &inclination);
printf("depth: %10.19f\n", json_object_get_double(depth));
printf("azimuth: %10.19f\n", json_object_get_double(azimuth));
printf("inclination: %10.19f\n", json_object_get_double(inclination));
}
сам json файл:
[
{
"depth": 0.6095999999999999,
"azimuth": 4.60560973674798,
"inclination": 0
}
]
выводит:
depth: 0.0000000000000000000
azimuth: 0.0000000000000000000
inclination: 0.0000000000000000000

что делаю не так?
Аноним 23/03/20 Пнд 17:19:17 #77 №1640814 
>>1640774
>get_double
>printf("%f")
Аноним 23/03/20 Пнд 17:21:10 #78 №1640817 
>>1640814
Хотя не, я не прав.
Ну проверяй errno, хуле.
Аноним 23/03/20 Пнд 17:56:12 #79 №1640843 
>>1640774
Ну очевидно же, что у тебя массив объектов, а работаешь ты с ним как с одним объектом. Воткни после json_tokener_parse:
parsed_json = json_object_array_get_idx(parsed_json, 0);
Аноним 23/03/20 Пнд 18:06:17 #80 №1640854 
>>1640843
большое спасибо, помогло
Аноним 23/03/20 Пнд 18:06:42 #81 №1640855 
>>1640843
и нет, мне не было очевидно)
Аноним 24/03/20 Втр 16:50:27 #82 №1641665 
Анончик, который тут про побитовые спрашивает, задачками грузит, про эмбеддед мечтает и тому подобное. Я с тебя, конечно, люто проигрываю, но добра тебе, и не кринжуй сильно, когда вспомнишь свои высеры. Когда-нибудь ты обязательно станешь на голову выше уже трудоустроенных, но не рефлексирующих по труъшным наукам быдлокодеров. Главное, уважай математику и вообще все абстрактное, это сложнее и почетнее, чем может показаться. Не проебись. А asm и прочее - это да, с этим надо наебаться как минимум в молодости, даже если монетизацию байтоебства не осилишь в будущем. Без этого, как без велосипеда в детстве, будешь в некотором смысле несчастным человеком.
мимо узнал про двач спустя год с небольшим после вката по K&R
Аноним 24/03/20 Втр 17:06:49 #83 №1641674 
>>1641665
>математику
Говно без задач
Аноним 24/03/20 Втр 17:21:51 #84 №1641700 
>>1641674
>пук
Я ж не говорю про классический матан по Зоричу. Взять того же Кнута Concrete mathematics, ахуэнно жи... Чувак, ни одна фундаментальная книга по алгоритмам (без которой ты нихуя серьезного сам не осилишь, как кодер) не доступна без математического бэкграунда, во многих таких книгах это даже прилагается первой главой или в дополнении, но там сумбурно, а в деле становления Кармаком вообще спешка ни к чему, и так заебаться успеешь раз семьдесят за годы просветления, стало быть, нехуй нагонять сумбур, а лучше взять книжулю отдельно, забыть про далекий конец пути, сбросить напряжение и получать удовольствие от процесса. Кто этого не понимает, тот проебанное поколения, и я не про возраст, а в принципе. Заебали ЧСВ мудаки, которые своим куриным мозгом пытаются оценить ценность того, что лишь осилив и заценишь. Это иной уровень существования, это как рассказывать червяку, в чем прикол виртуозной езды на мотоцикле. Обнял, анон.
Аноним 24/03/20 Втр 17:34:43 #85 №1641724 
>>1641700
>книга по алгоритмам
Это говно только кукаретики и вкатыши читают. Потом бегуют со своим мохнатым О пока их нахуй от рабочего кода не пошлют.
>классический матан
Сорта говн
Аноним 24/03/20 Втр 19:48:21 #86 №1641868 
>>1641724
ну я же говорю
>это как рассказывать червяку, в чем прикол виртуозной езды на мотоцикле
sageАноним 24/03/20 Втр 20:28:21 #87 №1641910 
Гротендик.jpg
>>1641700
>Я ж не говорю про классический матан по Зоричу
Иди на хуй со своей второй культурой, обрыган.
Аноним 24/03/20 Втр 21:25:55 #88 №1641992 
>>1641868
>виртуозной езды на мотоцикле
Чегобля?
Аноним 24/03/20 Втр 22:25:24 #89 №1642055 
Пиздец, в ситреде пиздеть в сторону биго нотации это просто беспрецедентный пиздец. Спасибо школе 21 за это
Аноним 24/03/20 Втр 22:26:25 #90 №1642058 
В этом треде спрашивать про makefiles? Нашёл вот такой совет на стаке:
использовать для простого создания директорий
$(info $(shell mkdir -p $(DIRS)))
вместо
$(shell mkdir -p $(DIRS))
https://stackoverflow.com/questions/1950926/create-directories-using-make-file#comment89152187_45048948
потому что вывод mkdir, согласно постеру, вторая будет ошибки прямо в мейкфайл записывать. Проверил это, убрав -p, так что она всегда генерировала mkdir: cannot create directory : File exists.

Так вот, большой разницы между $(info $(shell и $(shell я не обнаружил, info только пустую строку добавляет, а ошибка и так и так выводится в терминал. Сама info вроде рандомные строчки читать не предлагает (или в мейкфайлах своя инфо?). О чём он вообще?
Аноним 25/03/20 Срд 00:33:42 #91 №1642179 
Решил только что первую задачу из k&r с байтовыми операциями. Пол дня над ней бился хотя понимал как все эти операторы работают. Непонятно было просто как манипулировать ноликом и единичкой но таки я сделал и программа прошла все тесты. Шикарно, только сильнее убедился что си это то что мне нужно.
Аноним 25/03/20 Срд 03:09:01 #92 №1642210 
>>1642058
all:

$(shell echo hello:)
....$(shell echo echo you)
....$(shell echo echo are)
....$(shell echo echo infected)

corona: hello


там где точки - табы. как думаеш што делает?
will be pasted into the Makefile, leading to syntax errors at best, означает что шелл без инфо это кодогенерация.
Аноним 25/03/20 Срд 03:39:14 #93 №1642217 
>>1642210
Понял, разобрался, спасибо.
Аноним 25/03/20 Срд 05:08:49 #94 №1642233 
>>1642210
И ещё вопрос, как заставить $(info ...) на пустой строке не печатать лайнбрейк? Тот же
$(info $(shell mkdir -p $(DIRS)))
делает пустую строку. Как и, судя по моим экспериментам, любой
$(info )
Это как-то чинится? Можно ли отправить вывод в /дев/нулл?
Аноним 25/03/20 Срд 15:58:02 #95 №1642521 
2020-03-25-155703724x402scrot.png
двач, выполняю пикрил с числами, естесна получаю по ебалу нули.
как с этим бороться?
Аноним 25/03/20 Срд 16:05:20 #96 №1642528 
>>1642521
Попробуй выводить значения, а не их адреса =)
Аноним 25/03/20 Срд 16:09:50 #97 №1642534 
>>1642521
sin(i) по идее почти ноль
Аноним 25/03/20 Срд 16:12:36 #98 №1642537 
>>1642528
бля, я ебанат. ладно.
только теперь минусовые значения появились. че с ними делать?
>>1642534
~0.00003 на калькуляторе
Аноним 25/03/20 Срд 16:14:17 #99 №1642538 
>>1642537
>~0.00003 на калькуляторе
Ты калькулятору в каких единицах i давал?
Аноним 25/03/20 Срд 16:15:40 #100 №1642541 
trigonometr.jpg
>>1642537
>только теперь минусовые значения появились
это нормально.
Аноним 25/03/20 Срд 16:16:36 #101 №1642542 
>>1642538
вот это:
\sin\left(0.002094395102393333\right)
на этом сайте:
https://www.desmos.com/scientific

Аноним 25/03/20 Срд 16:19:17 #102 №1642543 
>>1642538
снова обосрался. давал радианы, а полосочку забыл передвинуть с градусов
Аноним 25/03/20 Срд 20:59:19 #103 №1642765 
>>1642528
выстрел в ногу защитан

// мимокрокодил
Аноним 26/03/20 Чтв 01:48:29 #104 №1642880 
Не понимаю как происходит унарное отрицание.

int x = 20;
return ~x;

даёт результат -21. Я не понимаю почему.

20 в двоиной это 10100, я ожидаю результат 01011(11 в десятичной), а получаю -21 что в двоичной равно -10101. Со знаками то понятно, непонятно почему нули с единицами не меняются так как ожидается.

Почему так?
Аноним 26/03/20 Чтв 02:09:58 #105 №1642881 
>>1642880
Ты не можешь просто не учитывать ведущие нули. Поэтому у тебя не 10100, а 000...010100.(с учетом размера int) И 11 в десятичной ты никак не получишь
Ну а разница в 1 из за представления в дополнительном двоичном коде (two complement). -21 выглядит не так как ты написал. Проверь на 1 = b00000001, -1 = b11111110
Аноним 26/03/20 Чтв 02:12:29 #106 №1642882 
>>1642881
ну так напиши мне подробрно как выглядит 21 на самом деле и как происходят эти вычисления все.
Аноним 26/03/20 Чтв 02:22:07 #107 №1642883 
1585178526959.jpg
>>1642882
Ой мне лень сейчас уже, вот продли правую табличку вручную и все поймешь. Я и так в прошлом посте опечатался. Короче -(x) в двоичном будет (~x)+1. Алсо попробуй на беззнаковых.
Аноним 26/03/20 Чтв 02:23:27 #108 №1642884 
>>1642883
Спасибо попытаюсь понять
Аноним 26/03/20 Чтв 03:56:18 #109 №1642894 
>>1642883
Автору таблички надо по мордасам набить за пропорциональный шрифт.
sageАноним 26/03/20 Чтв 06:17:27 #110 №1642907 
image.png
image.png
image.png
Это что за ошибка такая? Что-то не так с либами?

Первые два это Cmake и Make.

Третий пик другим способом компиляция и она работает. Что за хуита?

sageАноним 26/03/20 Чтв 06:33:33 #111 №1642909 
>>1642907
Я все понял, сори :)
sageАноним 26/03/20 Чтв 08:32:40 #112 №1642921 
image.png
Что по идее должно быстрее работать?
Аноним 26/03/20 Чтв 08:43:53 #113 №1642923 
>>1642921

Ты не туда оптимизируешь.

https://www.youtube.com/watch?v=rX0ItVEVjHc
Аноним 26/03/20 Чтв 12:20:24 #114 №1643015 
>>1642921
У тебя c++ выбран, не?
Аноним 26/03/20 Чтв 12:48:54 #115 №1643028 
>>1642921
Видно же по асму, что вариант с четырьмя интами.
Аноним 26/03/20 Чтв 12:50:06 #116 №1643032 
>>1643028
На втором месте вариант со структурой по значению, наверное, т.к. нет операций с памятью.
Аноним 26/03/20 Чтв 13:01:37 #117 №1643036 
>>1643032

Посос будет разве только только при кешмиссе.

И да, если уж бенчить асм-высер хуеты, то бенчить проход по массивам и прочим структурам данным
Аноним 26/03/20 Чтв 17:25:29 #118 №1643247 
>>1642880
короче смотри нужно не в двоичной системе считать, а в типе int

в int 32 твоё число это
00000000 00000000 00000000 00010100 теперь мы делаем отрицание

11111111 11111111 11111111 11101011 и получаем такое число.

Если у тебя тип unsigned без знака то это будет равно в десятичном 4294967275

Если у тебя signed который по умолчанию со знаком то это надо высчитать вот так
4 294 967 275 - 2 147 483 647 = 2 147 483 628
2 147 483 648 - 2 147 483 628 + 1 = 21
Ну и так как было отрицание то плюсовой бит меняем на минусово и получаем -21.

На конце цифры выделил специально чтобы диапазоны понимал почему получилось 21 а не 20.
Потому что 0 это положительное. а в отрицательном 0 нет, поэтому в отрицательном больше на 1, чем в положительном.

А на 1 прибавляется потому что 0 в реверсе это будет -1, а 1 в реверсе это будет -2. ну ты короче надеюсь ты понел.
Аноним 26/03/20 Чтв 17:33:39 #119 №1643255 
>>1643247
Всё из-за старшего бита. Он кодирует положительное или же отрицательное число.
Аноним 26/03/20 Чтв 17:35:12 #120 №1643256 
>>1643255
старший бит, сдохни фошист ёбаный, гавна в штаны анонам накладываешь гнида
Аноним 26/03/20 Чтв 17:38:06 #121 №1643258 
9ncCVga[1].png
Анон, скомпилил C# .net standard либу через CoreRT, путь к либе указан как
#define PathToLibrary "..\\NativeLibrary\\bin\\x64\\release\\netstandard2.0\\win-x64\\publish\\NativeLibrary.dll"

DLL Export Viewer(пик1) видит функцию в либе без проблем.
В main.C :
https://pastebin.com/u41ytwDY
Line1 - не выводится, т.е файл найден
Line2 - После LoadLibrary в handle NULL
Line3 - В ErrorCode 126
Если не ошибаюсь Error Code 126 = Модуль не найден, хотя Line1 его находит.
Как решить эту траблу, ебусь уже 25ый день.

Аноним 26/03/20 Чтв 17:40:41 #122 №1643261 
>>1643258
UPD: Либа Shared
dotnet publish /p:NativeLib=Shared -r win-x64 -c release
Пример - тут
https://github.com/dotnet/corert/tree/master/samples/NativeLibrary
Аноним 26/03/20 Чтв 17:41:20 #123 №1643262 
>>1643255
Ну да, ты правильно вот сказал метко и коротко, объяснил бы ему раз такой талант имеешь. Если старший бит 0 число положительное, если 1 то отрицательное.
Аноним 26/03/20 Чтв 19:16:21 #124 №1643367 
>>1643015
Тот же выхлоп будет, если и си взять.

>>1643028
Ну там есть lea и 4 разных регистра. В третьей функции же все в один регистр считается из памяти, плюс сдвиг по таблице он быстрее считается, так что хуй знает!
Аноним 26/03/20 Чтв 19:35:07 #125 №1643383 
>>1642921
Второй вариант. Будет работать на практике так же как и первый, просто потому что если развернуть код вызова этих функций и убрать фолдинг констант, который ты бенчмаркаешь, блядь от он будет ==.

>>1643367
> В третьей функции же все в один регистр считается из памяти, плюс сдвиг по таблице он быстрее считается, так что хуй знает!
Зато ты можешь ирл огресть хуеву тонну индирекций (которых офк никогда не будет в твоём хэловорде на 1кб), и твой третий вариант будет сосать хуй. Нет, дети, если у вас кол-во оперативки > кэша то так делать не надо.
Аноним 26/03/20 Чтв 20:32:40 #126 №1643448 
>>1643256
Пшёл нахуй, порватка. Какая связь вообще между старшим битом и фошистами, ещё и ёбанными? Хуле смерти желаешь, сам фошист что-ли? Гугли старший бит, гугли, сука, вилкой бытраблять гугли: https://ru.wikipedia.org/wiki/Старший_бит
Аноним 26/03/20 Чтв 21:42:37 #127 №1643535 
>>1643448
классический айтишник в юмор не может нихуя.
Аноним 26/03/20 Чтв 22:10:17 #128 №1643553 
>>1643535
>айтишник
Выбрось нахуй это слово из своего вокабуляра, если хочешь чтобы тебя люди серьезно воспринимали.
Аноним 26/03/20 Чтв 23:21:36 #129 №1643605 
>>1643553
маня, успокойся. я сам айти пидор о чём очень сильно жалею, но увы уже много трудов въебал в этот чан с гавном под названием АЙТИ. и мне поздно переквалицифроваться. как же меня бесят мои коллеги душные мудаки, никакого юмора, всё сразу в штыки, слово не то его использовать низя, вот ты классикал айти выблядок. Сука, я мог бы работать с тётями сраками в офисе и слушать про их детей и мужей, да где угодно, хоть с гречневыми пидорахами, но только в этом чане с гавном под названием айти с заносчивыми и душными мудаками которые за нетакое слово уже ебут тебе мозг.
Аноним 26/03/20 Чтв 23:55:08 #130 №1643620 
>>1643605
>хоть с гречневыми пидорахами
Тебе кто-то мешает релокейтнуться на Украину?

>но только в этом чане с гавном под названием айти с заносчивыми и душными мудаками которые за нетакое слово уже ебут тебе мозг
Специфика байтойобов, на самом деле. Ещё подобным страдают бэкэндеры, попробуй потусоваться с челиками из других областей, ахуеешь от разнообразия айтишников в природе.
Аноним 27/03/20 Птн 00:00:58 #131 №1643626 
>>1643605
Нытик аутист, да еще и либераха.
Аноним 27/03/20 Птн 00:02:28 #132 №1643629 
>>1643620
Всё наоборот же, фронты-питухи с их маняметодичками
Аноним 27/03/20 Птн 07:14:18 #133 №1643678 
Читаю черные книги игровых движков, закончил часть про движок Вульфа. Понимаю, что никогда не смогу даже попытаться сделать свой аналог даже с современными возможностями.
Аноним 27/03/20 Птн 09:02:22 #134 №1643706 
Современные рендерные системы уже все за тебя делают, только нужные флаги врубить, каждый флаг минус 5 процентов гпу
Аноним 27/03/20 Птн 12:29:21 #135 №1643809 
>>1643553
Этот айтишник сгорел, несите нового.
Аноним 28/03/20 Суб 06:52:57 #136 №1644342 
>>1643678
>Понимаю, что никогда не смогу даже попытаться сделать свой аналог даже с современными возможностями.
Ну и лох.
Аноним 28/03/20 Суб 12:57:22 #137 №1644476 
>>1643678
С современными возможностями как раз сложнее делать вещи типа вульфа, потому что видеокарты пошли другим путем и его методы слишком противоестественны. Это как писать самомодифицирующийся код на ассемблере сегодня, а лет 30 назад это было нормой.
Аноним 28/03/20 Суб 13:25:49 #138 №1644484 
JohnRomero-JasonScottinterview(6951215353)(cropped).jpg
>>1643678
погуглил как выглядят разработчики вольфенштейна
проиграл
Аноним 28/03/20 Суб 21:04:58 #139 №1644864 
>>1644476
>С современными возможностями как раз сложнее делать вещи типа вульфа,
А чё тебе мешает делать ручной софтверный рендеринг? В sdl2 можно тупо ебать байтики текстуры. Потом одной функцией копировать текстуру на экран, вуаля.
Аноним 28/03/20 Суб 22:40:09 #140 №1644962 
>>1644864
Думоть надо. Рейкастинг писать. Как работает рендер на основе BSP - вообше не вкурил. И один хрен потребуется i7 девятого поколения и 1080, чтобы добиться 30 кадров.
Мимо
Аноним 28/03/20 Суб 23:21:04 #141 №1644993 
>>1644864
Ну такое себе. Хотя бы в шейдере тогда надо делать.
Аноним 29/03/20 Вск 01:20:13 #142 №1645027 
>>1642055
Чаю
Дико корежит от этих школ с зумерками-программистами из пабликов вконтакте. Опошляют и поганят все и вся вокруг себя.
Аноним 29/03/20 Вск 10:57:13 #143 №1645124 
Есть ли смысл компилировать под всякие MMX и более новые процы, а не ставить i586 и не париться? Оптимизирует ли компилятор? Или все равно придется руками дрочить ассемблерные вставки? В игровых движках вроде как SSE вполне себе используется.
Аноним 29/03/20 Вск 11:52:14 #144 №1645174 
>>1645124
Возьми gcc.godbolt.org и посмотри на примере каких-нибудь скалярных произведений. Если хочется что-то самому добавить то используй не вставки, а интринсики.
Аноним 29/03/20 Вск 13:50:18 #145 №1645340 
>>1645124
Есть, компилятор оптимизирует по возможности, вставки не придется дрочить.
Аноним 29/03/20 Вск 14:00:39 #146 №1645347 
>>1645124
В идеале надо определить черту, начиная с каких процов клиенты тебе не интересны. Ну или делать отдельно сборку для MMX и для i586, возможно вынеся нужные функции в либу.
Аноним 29/03/20 Вск 18:58:19 #147 №1645663 
Capture.PNG
не пoнимаю услoвия задачи. пoмoгите пoжалуйста.
Аноним 29/03/20 Вск 19:10:25 #148 №1645673 
>>1645663
11011001 -(3)-> 00111011
Аноним 29/03/20 Вск 19:14:12 #149 №1645676 
>>1645673
oткуда oдна единица взялась не пoнял?
Аноним 29/03/20 Вск 19:14:24 #150 №1645677 
>>1645673
Написал бы нормальными цифрами, там всё равно просят инт.
Аноним 29/03/20 Вск 19:15:44 #151 №1645678 
>>1645677
да нет пусть в двoичнoм пишет, так удoбнее мне, я тoлькo всё равнo нихуя задания не пoнял.
Аноним 29/03/20 Вск 19:21:49 #152 №1645683 
>>1645676
Она прокрутилась насквозь
abcdefgh -(5)->defghabc
Аноним 29/03/20 Вск 19:22:48 #153 №1645685 
>>1645683
а пoнял, всё спасибo бoльшoе.
Аноним 29/03/20 Вск 19:58:25 #154 №1645740 
>>1645683
x = x >> n | x << (sizeof(x) * 8 - n);

решил.
Аноним 29/03/20 Вск 21:19:13 #155 №1645820 
Пацаны, видали?!
Effective C: An Introduction to Professional C Programming
https://nostarch.com/Effective_C
Наконец свежак по чистому Си!

Кстати, а Столярова тут рекомендуют?
Аноним 29/03/20 Вск 21:34:08 #156 №1645832 
>>1645820
По описанию неплохо. Кто-то уже читал?
Аноним 29/03/20 Вск 22:02:49 #157 №1645852 
>>1645832
>Кто-то уже читал?
Зочем? Мы все уже знаем
Аноним 30/03/20 Пнд 00:38:58 #158 №1645934 
>>1645663
Ты опять выходишь на связь? Найди уже в интернете русскую версию
Аноним 30/03/20 Пнд 02:59:29 #159 №1645963 
>>1645673
Но это строка, а в задаче сказано integer.
Аноним 30/03/20 Пнд 03:27:42 #160 №1645968 
>>1634080 (OP)
Подскажите пожалуйста...
Как можно обратимо, закодировать массив байт в масив 7-ми битных значений, и наоборот - декодировать в байты?
Аноним 30/03/20 Пнд 03:37:01 #161 №1645972 
>>1645968
>SevenBits = byte & 127; //даёт 7 последних бит.
>FirstBit = byte >> 7; //даёт старший бит.
А дальше, что хочешь там, то и делаешь с ними. Можешь выебать их шлангом, потому что CLang.
Аноним 30/03/20 Пнд 03:40:08 #162 №1645974 
>>1645972
Так а... С массивом-то как ёпты, бля? А если у него ещё и произвольная длина?
Аноним 30/03/20 Пнд 03:48:12 #163 №1645977 
>>1645963
Жирно.
Аноним 30/03/20 Пнд 03:50:04 #164 №1645978 
>>1645968
Ты спрашиваешь, как можно закодировать 8 бит в 7, чтобы оно потом обратно в 8 бит раскодировалось?
Аноним 30/03/20 Пнд 04:09:11 #165 №1645983 
>>1645978
Не совсем так.
Пусть есть массив байт:
[10101010, 01010101, 00000000, 11111111]
надо получить массив, вроде:
[1010101, 0010101, 01000000, 0011111, 111] или типа того,
а потом раскодировать обратно.

Основная задача - представить байтовый массив в виде строки,
состоящей исключительно из символов 7-ми битного ASCII,
а для этого, надо получить массив этих 7-ми битных значений.
Но сделать это надо так, чтобы потом из него, из этого массива,
было возможным получить назад эти байты, ебучие.
Причём в виде - первозданном, а не непохеренном всякими кракозбликами,
наподобие https://ru.wikipedia.org/wiki/Заменяющий_символ
Аноним 30/03/20 Пнд 04:15:09 #166 №1645986 
>>1645983
Это все равно не будет работать, без какого нибудь base64
Аноним 30/03/20 Пнд 06:30:35 #167 №1646013 
>>1645986
Ну почему же? Каждый ASCII-символ можно представить 7-ю битами, согласно таблице ASCII:
https://ru.wikipedia.org/wiki/ASCII#ASCII_Table
>>1645988
Вот, нашёл какой-то код на JavaScript, для разрезания байтового массива на произвольное количество бит.
https://stackoverflow.com/a/8133543
Но там биты в виде строк, а надо чтобы числа были.
Может поможет как-то намалякать годноту, а то я уже заебался... Хз.
Аноним 30/03/20 Пнд 06:32:03 #168 №1646014 
>>1646013
Дебажу расшифровку, не очкуй.
Аноним 30/03/20 Пнд 06:34:29 #169 №1646015 
>>1645968
boost::transform_width

Обычно используется для кодирования в base64, но и под случай пойдет https://stackoverflow.com/questions/7053538/how-do-i-encode-a-string-to-base64-using-only-boost
Аноним 30/03/20 Пнд 07:52:25 #170 №1646026 
>>1646013
https://ideone.com/gbo25F
Котороче, так и не смог понять, как хорошо задать размер второму массиву. Реквестирую помощь анона в этом вопросе. В остальном работает, хоть и коряво.
Аноним 30/03/20 Пнд 08:38:41 #171 №1646030 
>>1646026
Слышь, пехотинец, ты так забегался со своими калашами на море,
что аж немного рамсы попутал и затёр не по теме ваще, да ещё и не по масти.
За такое, даже в пехоте пёрышком чикают, в ты чё ваще не курсах?
Реквест изначальный же, был о том, как массивы байтовые передёрнуть,
и этот вот >>1646015, вроде что-то знает.
Только вот на JavaScript эту хреновину не пришпандорить -
слишком сложный синтаксис, и пунктуация, да.
Аноним 30/03/20 Пнд 09:34:03 #172 №1646035 
>>1646030
Чиво? Был массив восьмибитных чаров, стал массив восьмибитных чаров, где первый бит ничего не значит и всегда 0. То есть значения семибитные.
Аноним 30/03/20 Пнд 10:01:36 #173 №1646039 
>>1646013
>Но там биты в виде строк, а надо чтобы числа были.
Так быть не может. Числа все фиксированной длины, не меньше 8 бит, так что тебе придется вместе с числом хранить его настоящий размер в битах. Для строк такое не нужно, потому что строки могут быть любой длины и уже включают в себя размер.
Аноним 30/03/20 Пнд 10:05:40 #174 №1646040 
>>1646039
Есть мнение, что он не понимает, что такое разбиение.
Аноним 30/03/20 Пнд 12:29:07 #175 №1646098 
>>1646040
>Чиво? Был массив восьмибитных чаров, стал массив восьмибитных чаров,
>где первый бит ничего не значит и всегда 0. То есть значения семибитные.
Хм, ну я же просил массив с int, или byte, а не char'ы.
Да, я вижу - семибитные коды у них, но как их оттуда вытащить в массив?
И вообще, я же хочу на JavaScript этот алго,
а у тебя там вот такое вот:
>buffer |= *foo;

>Есть мнение, что он не понимает, что такое разбиение.
Слышь ты, умник?! Хуле тут понимать-то, а? Про понятия решил мне растереть, да?
Берётся короче еблет и разбивается в мясо, по-бырому - вот и всё разбиение.
Аноним 30/03/20 Пнд 13:24:41 #176 №1646140 
>>1646013
Потому что у него нигде не сказано что на входе только ascii символы
Если на входе только ascii символы то там вообще ничего делать не надо
for(int i =0; i<size; i++) out=inp&0x7f;
А если резать по обычному то там может получиться такое
11111110 00000011 11111111 -> 1111111 00000000 11111111... т.е. NULL-байт в поток
Аноним 30/03/20 Пнд 13:36:26 #177 №1646148 
Аnyaны, а насколько через Си удобно работать с PostrgeSQL? Или лучше для этого выбрать скриптовый язык?
Аноним 30/03/20 Пнд 13:38:17 #178 №1646149 
>>1645934
я и русскую имею, тoже ничегo там не пoнял.
Аноним 30/03/20 Пнд 13:51:52 #179 №1646154 
>>1646140
Вообще-то, было сказано, что на входе - байты, это массив байт, со значениями от 0 до 255 (8 бит).
На выходе же - должны бы быть тоже массив, тоже байты, но имеющие значение от 0 до 127.
И их должно бы быть чутка побольше.
Я не знаю как в Си, и это вопрос скорее по алгоритмам, вцелом,
и я решил задать его в треде по Си,
так как считаю, что вы больше разбираетесь в этих вот битовых операторах,
и прочих низкоуровневых операциях.

Тот факт, что массиве из байт - может быть нулевой байт,
в JavaScript, вовсе не значит что это конец строки.
Я вот, просто для прикола, открыл консоль браузера (клавиша F12),
и вписал туда это:
>console.log('NULL_BYTE1:\0NULL_BYTE2:\0NULL_BYTE3:\0);
и вижу длинную строчку.

Короче, надо бы как-то наварганить, обратимый алгоритм,
получения именно байт причём произвольной, заданной битности.
В данном случае - битность 7, значит массив содержит 7-ми битные значения, или 6-ти битные, 1 битные...
Как в вон том JavaScript'e, только цифрами байты в массиве, и обратимо чтобы.
Аноним 30/03/20 Пнд 14:04:16 #180 №1646157 
1511774489276.png
>>1646154
А причем тут javascript если это тред по C?
А вообще задача элементарная, вот накидал неоптимизированный вариант, для последнего байта проверку надо отдельно делать чтобы не вылезать за границу массива но мне лень.
Аноним 30/03/20 Пнд 17:09:00 #181 №1646277 
>>1646098
>Хм, ну я же просил массив с int, или byte, а не char'ы.
char это и есть байт, потому что состоит из восьми бит.

>Да, я вижу - семибитные коды у них, но как их оттуда вытащить в массив?
Они уже в массиве ciphered. Я же даже напечатал его для тебя между раскодированными текстами.

>И вообще, я же хочу на JavaScript этот алго,
А он умеет работать с отдельными битами?

>а у тебя там вот такое вот:
>>buffer |= *foo;
это и есть работа с битами. Или ты планируешь получить биты, не зная ничего бит?

>вот и всё разбиение
Ну ты и фантазёр, конечно.
Аноним 30/03/20 Пнд 17:10:11 #182 №1646279 
>>1646140
>А если резать по обычному то там может получиться такое
>11111110 00000011 11111111 -> 1111111 00000000 11111111... т.е. NULL-байт в поток
Это ничего страшного, если работать с этим как с массивом, то ты знаешь его размер, а эти байты вполне нормально расшифровываются.
Аноним 30/03/20 Пнд 18:05:12 #183 №1646323 
>>1646277
>char это и есть байт, потому что состоит из восьми бит.

Вывод верный, но объяснение неправильное. В стандарте нет гарнтии, что сhar состоит из восьми бит. В нём не менее восьми бит. Так же, гарантируется, что размер char-a - один байт, вернее, формально, что sizeof возращает 1 на char и всех его квалифицированных вариантах.
Аноним 30/03/20 Пнд 18:15:20 #184 №1646334 
>>1645820
Видал, но как-то дорохо... Добавил в закладки, скачаю через пару месяцев.
Аноним 30/03/20 Пнд 18:16:35 #185 №1646337 
>>1646323
>В стандарте нет гарнтии, что сhar состоит из восьми бит.
Дело в том, что для того кода нет разницы, какой конкретно формат будет из восьми бит. Я просто ответил, что в том коде char — это байт фактически.
Аноним 30/03/20 Пнд 18:49:49 #186 №1646359 
>>1646279
Это нестрашно, если ты работаешь и с тем и с тем сам, но если это передается где-то по сети, оно может случайно пройти через какой нибудь прокси сервер, который посчитает что это 0-terminated строка. Маловероятно, конечно, но base64 именно для того и придумали.
Аноним 30/03/20 Пнд 18:56:20 #187 №1646367 
Аноны. Помогите мне пожалуйста. Нужно сделать лабу по системному программированию под linux на Си.
Вроде бы написал (хотя я пока только из одного текстового файла читаю, который щадаю в самом коде а не во время вызова исполняемого кода, но это я потом легко исправлю).
Условие и код здесь по ссылке ideone.com/h3ed25
Скорее всего я где-то облажался, но нк понимаю где, объясните как исправить, анончики. Надеюсь на вас.
Аноним 30/03/20 Пнд 18:59:16 #188 №1646369 
Есть ли в си что-нибудь встроенное для работы с ssh? Или у плюсов?
Аноним 30/03/20 Пнд 19:14:45 #189 №1646384 
>>1646367
Ну ты форкнуть-то форкнул, но почему у тебя оба процесса одним и тем же занимаются?
Аноним 30/03/20 Пнд 19:16:39 #190 №1646387 
>>1646367
Делать за тебя я, конечно, не буду, хотя это быстрее, чем писать этот пост. Но код производит впечатление, что ты решаешь задачу методом тыка. После fork() у тебя запущены две одинаковые программы, но запущены не сначала, а с этого места. И каждая программа изнутри должна узнать, какая она из двух. Про это тебе должен был рассказать return форка, но тебе на него, почему-то, похуй. На самом деле, все просто, но иногда с концептуально новой идеей надо переспать. Именно поэтому весьма хуево запускать хвосты по учебе и компенсировать регулярность занятий интенсивностью за день до дедлайна. Документация в помощь, анон.
Аноним 30/03/20 Пнд 19:18:35 #191 №1646389 
>>1634080 (OP)
Это пони-тред? Расскажите, надо ли добавлять .git/ в .gitignore? Оно вроде так уже автомагически работает, но я нигде не могу найти, где это в документации написано.
Аноним 30/03/20 Пнд 19:19:02 #192 №1646391 
>>1646367
Ээээ блядь, да у тебя и char указатель, ну в пизду. Я вон вообще про двач узнал спустя год с небольшим, как в Сишку вкатился. Нехуй на форуме делать с такими элементарными вопросами.
Аноним 30/03/20 Пнд 19:25:19 #193 №1646399 
Screenshot from 2020-03-30 19-24-27.png
>>1646367
Тестировать, конечно, не буду. Разбирайся.
Аноним 30/03/20 Пнд 19:27:52 #194 №1646402 
»1646384
Вот я тоже как раз подумал что дело в этом. Проблема в том что я не знаю как сделать так чтобы процессы занимались разными задачами в одной программе.
»1646387
>Но код производит впечатление, что ты решаешь задачу методом тыка.
Именно это я в общем-то и делаю.
>Именно поэтому весьма хуево запускать хвосты по учебе и компенсировать регулярность занятий интенсивностью за день до дедлайна.
На лекциях лектор нам вообще ничего не объяснял про системные вызовы. >Документация в помощь, анон.
Да читал я документацию по fork и все равно не понял как сделать так чтобы разные процессы решали разные задачи а не одну и ту же вместе.
Аноним 30/03/20 Пнд 19:28:42 #195 №1646403 
>>1646402
Разметку проебал
>>1646384
Вот я тоже как раз подумал что дело в этом. Проблема в том что я не знаю как сделать так чтобы процессы занимались разными задачами в одной программе.
>>1646387
>Но код производит впечатление, что ты решаешь задачу методом тыка.
Именно это я в общем-то и делаю.
>Именно поэтому весьма хуево запускать хвосты по учебе и компенсировать регулярность занятий интенсивностью за день до дедлайна.
На лекциях лектор нам вообще ничего не объяснял про системные вызовы. >Документация в помощь, анон.
Да читал я документацию по fork и все равно не понял как сделать так чтобы разные процессы решали разные задачи а не одну и ту же вместе.
Аноним 30/03/20 Пнд 19:29:03 #196 №1646404 
>>1646402
И че, так и не понял, что первая программа получается pid второй, а вторая - 0?
Аноним 30/03/20 Пнд 19:29:33 #197 №1646405 
>>1646403
>Вот я тоже как раз подумал что дело в этом. Проблема в том что я не знаю как сделать так чтобы процессы занимались разными задачами в одной программе.
Читай. Это довольно просто.
Аноним 30/03/20 Пнд 19:32:32 #198 №1646407 
>>1646391
Функция read вторым элементом принимает указатель, на буфер. В данром случае чтение побайтовое, поэтому я объявил указател на char, а не char. За жоементарные ошибки мне и самому неловко, но лаба горит.
>>1646399
Спасибо, анон.
Аноним 30/03/20 Пнд 19:36:01 #199 №1646409 
>>1646407
>элементарные ошибки
лол, системное программирование без умения в указатели
Аноним 30/03/20 Пнд 19:39:18 #200 №1646414 
>>1646409
Я тебе уже объяснил почему там указатель.
Аноним 30/03/20 Пнд 19:40:43 #201 №1646415 
>>1646414
Спасибо. Осталось объяснить, куда он указывает, и почему ниже у тебя указатель на указатель.
Аноним 30/03/20 Пнд 19:53:08 #202 №1646436 
>>1646415
Ты прав, это была моя ошибка.
Аноним 31/03/20 Втр 18:15:26 #203 №1647363 
Capture.PNG
реальнo ли не испoльзoвать двoетoчие в этoм выражении? мне прoстo не нужнo else, т.к. если услoвие не выпoлняется тo не нужнo ничегo делать.
Аноним 31/03/20 Втр 18:31:57 #204 №1647377 
>>1647363
(cond) ? s += 32 переписываем как (cond) ? s += 32 * cond
Аноним 31/03/20 Втр 18:32:56 #205 №1647379 
>>1647377
>(cond) ? s += 32 переписываем как (cond) ? s += 32 cond

fix
(cond) ? s += 32 переписываем как s += 32 (cond)
Аноним 31/03/20 Втр 18:32:58 #206 №1647380 
>>1647363
s += (...) ? 32 : 0;
Аноним 31/03/20 Втр 18:35:09 #207 №1647385 
>>1647363
Нет. Тернарный оператор на то и тернарный, что ему нужно 3 операнда.
Аноним 31/03/20 Втр 18:37:30 #208 №1647392 
Capture.PNG
>>1647380
>>1647379
>>1647363

Аноним 31/03/20 Втр 18:38:50 #209 №1647395 
>>1647392
Не уверен сходу, что умножение быстрее сравнения.
Аноним 31/03/20 Втр 18:41:55 #210 №1647399 
>>1647395
сравнение это брэнч, его надо предсказывать всегда, а с умножением линейный код, на гпу в шедерах используется такая техника убирание брэнчей нопремер

>>1647392
блет надо было += а не *=
Аноним 31/03/20 Втр 18:47:09 #211 №1647404 
>>1647399
>на гпу в шедерах используется такая техника
Потому что умножение, это то, что гпу делает хорошо. Как на тракторе быстрее через поле грязи проехать, а на легковушке в объезд.
Аноним 31/03/20 Втр 18:47:39 #212 №1647407 
>>1647385
спасибo пoнял.
Аноним 31/03/20 Втр 19:36:51 #213 №1647455 
>>1647385
А чтo рекoмендуешь в такoм случае испoльзoвать в качестве заглушки? прoстo задача из k&r требует именнo такoй метoд.
Аноним 31/03/20 Втр 19:57:33 #214 №1647471 
>>1647455
Ты даун? Тебе уже 3 варианта расписали.
Аноним 31/03/20 Втр 20:20:20 #215 №1647498 
image.png
image.png
image.png
Нужна помощь не по к&р.

Пытаюсь перехватить руками дескрипторы процесса. форкаюсь, забираю стдаут, экзеклю это, и раскрашиваю аутпут. Чайлл обрабатывается следующей функцией.
Как видите принты до экзека никуда не приходят, а вот вывод эха нормально обрабатывается.
НО!
Если до вызова dup2() добавить ещё один принт, то он выведется (нераскрашенным, что естественно), и каким-то образом повлияет на остальные два принта, что их нормально перехватит и раскрасит.

Я подумал, что дело во времени, что родитель не успевает создать буфер и всё это, но добавление в чайда sleep() ничего не меняет.

Объясните, пожалуйста.
https://ideone.com/OcqfBO
Аноним 31/03/20 Втр 20:28:39 #216 №1647504 
>>1647498
ЯННП, но для начала я не вижу у тебя fflush(stdout), а это основная причина "не выводится".
Аноним 31/03/20 Втр 20:29:31 #217 №1647506 
>>1647504
Куда его? В чайлда?
Аноним 31/03/20 Втр 20:39:30 #218 №1647517 
image.png
>>1647504
Нет, в чайлда не помогло, ни в одну из этих позиций (в родителя тоже).

А что не понятно? Это, я так понял, стандартный метод по перехвату дескрипторов, если я что-то странное написал, давай поясню.
Аноним 31/03/20 Втр 20:42:48 #219 №1647522 
>>1647506
Чайлд пишет в стдаут, он буферизируется (не попадает в файловый дескриптор), ты запускаешь эхо, он пишет в файловый дескриптор. Тем временем ты читаешь из файлового дескриптора. Где нужно сбросить буфер, чтобы операции вывода в файловый дескриптор попали в правильном порядке? Правильно, перед тем, как ты будешь писать напрямую в дескриптор, т.е., прямо перед execv.
Аноним 31/03/20 Втр 20:57:15 #220 №1647535 
Screenshot20200331205058.png
>>1647522
Спасибо, анон, за помошь и объяснение. Я думал, что dup2() заменяет stdout и того уже нет, так что писать можно только в переданный пайп.
Аноним 31/03/20 Втр 22:41:47 #221 №1647638 
>>1647471
дауны, вы. мне нужно такое выражение (условие) ? 1 вариант : 2 вариант. а не ваша хуита переделанная.
Аноним 31/03/20 Втр 22:42:46 #222 №1647639 
Что значит спецификатор %6d в printf? что делает шестёрка?
Аноним 31/03/20 Втр 22:45:41 #223 №1647643 
изображение.png
>>1647639

Аноним 31/03/20 Втр 22:46:29 #224 №1647644 
>>1647643
Не пoнял.
Аноним 31/03/20 Втр 22:53:06 #225 №1647651 
>>1647643
Это d6 а не 6d
Аноним 31/03/20 Втр 22:57:37 #226 №1647656 
Capture.PNG
>>1647651
этo из книги k&r я взял
Аноним 31/03/20 Втр 23:00:30 #227 №1647662 
>>1647656
этo выравнивнивание врoде. типа oтступ слева на 6 симвoлoв.
нутыпoнел
Аноним 31/03/20 Втр 23:04:19 #228 №1647668 
изображение.png
>>1647656
Взял бы и сам проверил, хули ты как маленький.
Аноним 31/03/20 Втр 23:05:41 #229 №1647671 
>>1647668
да лень. вы тут сразу oтвечаете. а так самoму кoпаться нужнo и время тратить.
Аноним 31/03/20 Втр 23:15:14 #230 №1647686 
https://github.com/ilovetostudyit/de-library/blob/master/ft_memmove.c

что происходит в 27-й строчке, зачем это?
Аноним 31/03/20 Втр 23:16:59 #231 №1647690 
>>1647686
уйди пожалуйста
Аноним 31/03/20 Втр 23:55:07 #232 №1647724 
>>1647686
> что происходит в 27-й строчке
Undefined behavior. Да, если следовать стандарту, на сишке нельзя написать стандартную либу для сишки. Живи с этим.
Аноним 01/04/20 Срд 00:10:13 #233 №1647732 
>>1647686
В смысле зачем? Ты минус от плюса не отличаешь?
Аноним 01/04/20 Срд 07:50:32 #234 №1647810 
Простите за глупый вопрос, но сколько файловых дескрипторов должно быть у программы? Я вот сделал простейшую
printf("%d\n", getpid());
sleep(40);
и у неё зачем-то 60 файловых дескрипторов. Откуда?
Аноним 01/04/20 Срд 10:25:41 #235 №1647838 
>>1647724
>Undefined behavior.

С чего ты взял?

Перечитай ещё раз стандарт. Для char'а есть куча исключений: любой валидный указатель кастится в валидный указатель на char. Более того, к области памяти можно обращатьcя не только по её эффективному типу, но и по указателю на char.
Аноним 01/04/20 Срд 10:27:25 #236 №1647839 
>>1647838
Плюс, сравнение указателей гарантированно даёт предсказуемый результат, если это указатели на части одного массива.
Аноним 01/04/20 Срд 11:20:56 #237 №1647855 
>>1647839
Вот только это не части одного массива.
Аноним 01/04/20 Срд 12:08:02 #238 №1647870 
>>1647724
А в чём заключается неопределенность? Адресное пространство процесса же сквозное, так что сравнивать адреса можно.
Аноним 01/04/20 Срд 12:56:45 #239 №1647886 
>>1647838
>>1647870
https://stackoverflow.com/questions/4023320/how-to-implement-memmove-in-standard-c-without-an-intermediate-copy
Аноним 01/04/20 Срд 17:49:46 #240 №1648112 
Capture.PNG
анoны, пoясните за эту функцию из книжки мoлю. oна у меня oшибку бьёт, т.к. там индекс же вo время вычисления станoвится дрoбью десятичнoй.
Аноним 01/04/20 Срд 17:55:53 #241 №1648115 
>>1648112
Нет, он округляется вниз к целому типу.
Аноним 01/04/20 Срд 17:56:39 #242 №1648116 
>>1648115
а да я уже дoдумал, чтo там же тип int, хм. тoгда надo пoдумать пoчему функция не рабoтает.
Аноним 01/04/20 Срд 18:03:34 #243 №1648118 
>>1648116
Мб high-1 ?
Аноним 01/04/20 Срд 18:04:06 #244 №1648120 
>>1648118
Т.е. high=mid-1
Аноним 01/04/20 Срд 18:05:29 #245 №1648121 
>>1648120
там нет такoй стрoчки.
Аноним 01/04/20 Срд 18:06:54 #246 №1648122 
1585753614317.png
>>1648121
Аноним 01/04/20 Срд 18:08:31 #247 №1648123 
>>1648122
АХУЕТЬ В КНИГИ КЕРНИНГАНА И РИТЧИ OПЕЧАТКА.
Аноним 01/04/20 Срд 18:09:27 #248 №1648124 
>>1648122
всё равнo функция не рабoтает.
Аноним 01/04/20 Срд 21:23:06 #249 №1648243 
>>1648112
ошибка в v[mid] не извлекается элемент из списка поэтому и ошибка. а почему я не знаю. попробую разобраться
Аноним 01/04/20 Срд 21:41:20 #250 №1648252 
>>1637424
Я 8 месяцев уже учу и вообще ещё мало что выучил. Чому я такой тупой?
Аноним 01/04/20 Срд 21:44:35 #251 №1648254 
>>1648252
По какой книге ты его учишь?
Аноним 01/04/20 Срд 21:50:19 #252 №1648260 
>>1648254
Прата. Язык Си, лекции и упражнения
Аноним 01/04/20 Срд 21:51:25 #253 №1648261 
>>1648260
Сколько в книге страниц и на какой странице ты сейчас? Я по k&r с 10-го января где-то учусь, в данный момент на 53 странице где-то.
Аноним 01/04/20 Срд 21:54:04 #254 №1648263 
>>1648261
На 309-й, 960
Аноним 01/04/20 Срд 21:55:36 #255 №1648264 
>>1648263
Ну это нормально, книга техническая сложная с задачами и длинная.
Аноним 01/04/20 Срд 23:33:01 #256 №1648313 
GTK гуи нормально под виндой будет работать?
Аноним 02/04/20 Чтв 00:03:25 #257 №1648324 
>>1648313
Да, но глаза будут вытекать.
Аноним 02/04/20 Чтв 01:48:01 #258 №1648356 
>>1648324
что посоветуешь для окон для си? какой гуи?
Аноним 02/04/20 Чтв 01:48:20 #259 №1648357 
>>1648356
win api
Аноним 02/04/20 Чтв 02:35:59 #260 №1648372 
>>1648356
https://github.com/Immediate-Mode-UI/Nuklear
Аноним 02/04/20 Чтв 02:46:25 #261 №1648373 
>>1648356
>>1648313
WinApi используй. Самое лучшее будет.
Аноним 02/04/20 Чтв 04:28:01 #262 №1648383 
>>1647810
Могли бы и сказать, что среда запуска может накидать за щеку дескрипторов. Это электрон шрифты всякие навтыкал, и ручек к разделяемой памяти.
Аноним 02/04/20 Чтв 13:16:58 #263 №1648476 
>>1645968
>Как можно обратимо, закодировать массив байт в масив 7-ми битных значений, и наоборот - декодировать в байты?
>>1645972
>SevenBits = byte & 127; //даёт 7 последних бит.
>FirstBit = byte >> 7; //даёт старший бит.
>>1645974
>Так а... С массивом-то как ёпты, бля? А если у него ещё и произвольная длина?
>>1645978
>Ты спрашиваешь, как можно закодировать 8 бит в 7, чтобы оно потом обратно в 8 бит раскодировалось?
>>1645983
>многабукафф
>>1645986
>Ложь, пиздёж и провокация.
>>1646013
>Вот этого, гляжу, не объебёшь.
>>1646014
>Дебажу расшифровку, не очкуй.
>>1646015
>Неведомая шняга, на JS не катит.
>>1646035
Да, твоя тема - нормас на си пахает.
>>1646026
Код, вроде рабочий, но из-за буфера с большим int и операции '|=' портировать на JS - не получилось.
>>1646039
Схулей размер ещё бит хранить, Ы?
>>1646140
Там на входе - байты.
>>1646157
Подобную последовательность битовых операций, примерно, я и реквестировал здесь.
>>1646277
Мне надо было семибитные числа в массиве, а не восьмибитные. Да, в JavaScript тоже есть bitwise operators.
Только числа там ограниченное значение имеют, поэтому твой буфер не сработал.
>>1646279
Хотя JavaScript'у и пофиг на нулли, но всё-же да, спецсимволы лучше убрать нафиг.
>>1646323
Да, ведь байт от 0 до 127 - это тоже восьмибайтный байт, но зато - он может быть представлен одним ASCII-символом.

В общем, смарите, как я рубасы запилил: >>1648469 → (архивач: https://arhivach.ng/thread/546415/#1648469 )
Это совершенно новый, инновационный стандарт в IT-индустрии.
Можете юзать, кароч, и гонять, ксорить и конвертить эти ваши - байты. Бесплатно и без СМС. Код открытый. Добра, всем.
Аноним 02/04/20 Чтв 13:43:08 #264 №1648493 
>>1648476
Рубасы! Рубасы! Да это же новый стандарт в сфере мультипарадигмального императивного метапрограммирования:
Вот код: https://jsfiddle.net/bxLj7h61/1/
Аноним 02/04/20 Чтв 18:47:28 #265 №1648661 
1
Аноним 02/04/20 Чтв 19:03:33 #266 №1648675 
>>1648372
> nuklear
Это не UI, это высер, пригодный, чтобы в игорях настройки в рантайме подправлять.

Аноним 02/04/20 Чтв 20:01:54 #267 №1648711 
>>1648476
>байт от 0 до 127 - это тоже восьмибайтный байт
Двач на острие науки.
Аноним 03/04/20 Птн 03:15:09 #268 №1648967 
>>1648675
Какой эталонный шизодебил, нафантазировал себе бреда и купается в нем. По любому пердоля линуксоидная, они как раз такие обычно, туппппые как баррраны и такие же упертые необучаемые.
Аноним 03/04/20 Птн 03:48:34 #269 №1648981 
>>1648711
>Хэххэх, восьмибитный, конечно же.
Аноним 03/04/20 Птн 08:18:09 #270 №1649058 
Сколько бит в байте, пацаны?
Аноним 03/04/20 Птн 08:19:54 #271 №1649059 
>>1649058
https://en.wikipedia.org/wiki/Byte
Аноним 03/04/20 Птн 10:58:17 #272 №1649129 
>>1648476
>0 до 127 - это тоже восьмибайтный байт, но зато - он может быть представлен одним ASCII-символом.
Если не нужна кирилица.
Аноним 03/04/20 Птн 11:05:11 #273 №1649132 
>>1648981
>>1648981
Семибитный. 127 это 7 битов.
Аноним 03/04/20 Птн 19:59:10 #274 №1649519 
>>1649132
>Байтом он быть не перестаёт, а байт - это 8 бит.
>>1649129
>Если не нужна кирилица.
Там RUBase128, кириллица используется чтобы сделать символы печатными, как в base64.
Удивительным образом, вся кириллица с латинницей плюс цифры - впихивается в 128 символов.
Таблица символов ASCII же, содержит в себе спецсимволы,
которые не дают строке отображаться, из-за чего строка не может быть скопирована, после кодирования.
Например, вот этот самый NULL-байт посреди строчки - дико выбешивает, так как означает конец строки.
C RUBase128 всей этой хуйни нет, но там нужна конвертация из 8-ми битных байт в 7-ми битные,
над чем пришлось ебать как подзаморочиться.
А RUBase256 вообще кодирует все 256 байт, безо всяких выебонов,
только вот длина данных чуть больше в самих этих байтах, просто по причине того,
что символы берутся из Unicode, и кодируются более чем одним байтом, ну и пофиг.
Аноним 03/04/20 Птн 20:18:01 #275 №1649543 
1281842075890.jpg
>>1634080 (OP)
Зачем нужен с, если есть с++?
Аноним 03/04/20 Птн 20:24:50 #276 №1649552 
>>1649543
с++ разворачивается в довольно непредсказуемые портянки машинного кода
это может быть черезчур для какого нибудь микроконтроллера
Аноним 03/04/20 Птн 22:45:22 #277 №1649632 
>>1649543
Чтобы компилятор для с++ на ассемблере не писать.
Аноним 04/04/20 Суб 01:12:25 #278 №1649679 
>>1649543
>Зачем нужен с, если есть с++?

Потому что не всем нравится feature creep язык программирования
Аноним 04/04/20 Суб 03:07:26 #279 №1649705 
>>1649543
Поддерживать легаси, например ядро линукса.
Аноним 04/04/20 Суб 03:08:32 #280 №1649706 
>>1649552
Под микроконтролле пишут даже на питоне, а на крестах и подавно. Сишка нахуй не нужна.
Аноним 04/04/20 Суб 09:00:12 #281 №1649755 
>>1649706
Это уже не микро значит.
Аноним 04/04/20 Суб 09:58:45 #282 №1649776 
>>1649543
Современный C написан на С++ ради 10% производительности на максимально низких (для высокоуровневых языков) системных программ
Аноним 04/04/20 Суб 11:44:43 #283 №1649831 
>>1649543
Для него легче написать компилятор
Аноним 04/04/20 Суб 13:24:36 #284 №1649934 
>>1649755
>ваше микро не микро, яскозал

https://micropython.org/
>Python for microcontrollers

Аноним 04/04/20 Суб 13:27:02 #285 №1649937 
image.png
>>1649934
Аноним 04/04/20 Суб 13:38:06 #286 №1649947 
S00404-13213789.jpg
Объясните, почему
> pt = &ar1[0]
можно, а
> pt = ar1
нельзя
Аноним 04/04/20 Суб 14:21:02 #287 №1650010 
>>1649543
Во-первых, чтобы поддерживать проекты, которым уже по хуй знает сколько лет.
Во-вторых, чтобы учить нюфагов. В плюсах куча высокоуровенных фич (ссылки, RAII, наследование, смартпоинтеры, стдлиб где уже есть все структуры данных и тд), которые скрывают происходящее под ними, а чтобы писать быстрый код нужно понимать, как там всё байтойобится прд капотом.
Аноним 04/04/20 Суб 14:37:26 #288 №1650026 
1581342751933.jpg
>>1649934
>16k of RAM
>микро
Аноним 04/04/20 Суб 15:14:44 #289 №1650051 
>>1650026
STM32F103C8Tx, до 20КБ.
Стоимость простой платки на нём 100р., стоимость чипа меньше.
Аноним 04/04/20 Суб 16:27:05 #290 №1650096 
>>1650051
Только нахуй такой кастрированый питон нужен
Аноним 04/04/20 Суб 16:29:42 #291 №1650099 
Стикер
>>1650051
>все 16к уйдут на запуск самого пистона
>памяти на собственно приложение не останется
Аноним 04/04/20 Суб 18:42:03 #292 №1650180 
1504709015199897798[1].jpg
>>1650099
Почему он так жрет память? В С скобочек больше и точка с запятой на каждой части команды. Наоборот же лишние знаки должны больше заполнить памяти.
Аноним 04/04/20 Суб 19:20:09 #293 №1650203 
>>1649706
>Под микроконтролле пишут даже на питоне
Для быстрого прототипирования, в основном. Серьезное никто ничего не пишет, потому, что все интерпретаторы скриптовой хуйни сильно урезанные и скорости проца нехватает.
>крестах
На микроконтроллерах свои особые кресты с костылями. Это не не совсем кресты, а скорее си с классами. Тк основные крестовые фичи либо не работают, либо нахуй не нужны из-за нехватки ресурсов. А байтоёбствовать удобнее на сишечке на которой написаны большинство библиотек.
Аноним 04/04/20 Суб 21:03:03 #294 №1650261 
Можно использовать WinApi на чистой сишечке или придётся окунуться в кресты?
Аноним 04/04/20 Суб 21:04:22 #295 №1650263 
>>1650261

да
Аноним 04/04/20 Суб 21:12:15 #296 №1650271 
>>1650261
Чистый именно под си и заточен. Пердоль та еще.
Аноним 04/04/20 Суб 22:27:40 #297 №1650305 
>>1650099
>>1650096
Я не ебу вообще, я против питуна на МК, просто этот ебанутый >>1650026 пост помпезно имплаит, что Cortex-M3-grade-чипы не МК.
Аноним 04/04/20 Суб 23:39:52 #298 №1650335 
>>1650305
Не парься братиш, тут половина треда не видела программируемые микрочи в жизни, не говоря уже о промышленном БМ. Так, детки из школы 21 в перерыве между перерывами попукивают свое важное мнение
Аноним 04/04/20 Суб 23:41:55 #299 №1650338 
>>1650305
Тебе бы формальную логику подучить.
Аноним 05/04/20 Вск 02:44:05 #300 №1650401 
>>1650338
Начни с выражения своих мыслей. Простейшая практика, никаких наук учить не надо, но творит чудеса, сразу выявляя даунов, у которых мыслей нет, но думают что есть.
Аноним 05/04/20 Вск 15:17:36 #301 №1650703 
Как передать continue из вложенного цикла в цикл выше? И возможно ли это вообще
Аноним 05/04/20 Вск 15:23:29 #302 №1650718 
>>1634080 (OP)
>Brian Kernighan, Dennis Ritchie "The C Programming Language"
Откуда взять входной поток для заданий из первой главы?
Аноним 05/04/20 Вск 15:25:23 #303 №1650722 
>>1650718
С клавиатуры вводи.
Аноним 05/04/20 Вск 15:30:03 #304 №1650730 
>>1650703
Никак. Continue переходит к следующей итерации ТЕКУЩЕГО цикла. Тебе нужен break и флаг. Во вложеном цикле выставляешь флаг, делаешь break, во внешнем цикле проверяешь флаг и делаешь continue, потом сбросить флаг не забудь.
Аноним 05/04/20 Вск 15:47:03 #305 №1650748 
>>1650703
for(...) {
 for(...) {
for(...) {
  if(...) goto cnt;
  }
 }
 cnt:;
}
Аноним 05/04/20 Вск 15:50:03 #306 №1650753 
>>1650703
йеп, можно

способ 1: goto
способ 2: с помощью флажка to_continue
Аноним 05/04/20 Вск 15:59:13 #307 №1650763 
>>1650703
KISS
void inner_loop(...) {
...
for(...) {
if(...) return;
}
...
}
...
for (...) inner_loop(...);
Аноним 05/04/20 Вск 17:53:43 #308 №1650961 
>>1650203
Не понимаю, то ли я гений (не может быть), то ли дебилов массово в пробирках штампуют. Си с классами это тоже кресты, потому что в сях классов нет. Как можно не понимать очевидного, при том что тут и других вариантов даже нет. И даже без классов кресты это кресты, потому что в любой момент если захочешь классы будут. В этом и достоинтсво, что много есть, но ничего не навязано, можно сделать как в примитивном си, так и сложные вещи, а можно что-то среднее, да как угодно. А убогая сишка в которой кроме ограничений нет ничего, это ненужный нигде мусор. Очевидно же, ведь ограничения это недостаток, а не достоинств ство.
Аноним 05/04/20 Вск 18:01:35 #309 №1650974 
>>1647643
количество символов перед запятой
Аноним 05/04/20 Вск 18:58:08 #310 №1651063 
>>1650961
>с классами это тоже кресты
Нет.
sageАноним 05/04/20 Вск 20:00:01 #311 №1651140 
Пишу свою стандартную СИ библиотеку, есть пожелания?
Аноним 05/04/20 Вск 20:13:33 #312 №1651154 
>>1651140
Найти себе тян
sageАноним 05/04/20 Вск 21:47:55 #313 №1651287 
>>1651154
Пошел нахуй хохол
Аноним 06/04/20 Пнд 00:17:42 #314 №1651421 
>>1650961

Проблема в том, что семантику Сишечки можно объять разумом, а сематика Си++ - это блядь просто огромное море лютого пиздеца, там нету правил, там нету даже правил с исключениями, там исключения из исключений исключений из правил. На каждый чих, на каждую блядскую фичу создано по сематической сущности, абсолютно бессистемно, в постоянной погоне за модой. Поэтому, ты можешь комфортно работать только в небольшом подножестве языка. И не надо мне, блядь, говорить про то, что мол, кококо, нормальному чуваку норм. На руках тоже можно ходить повседневно, но не факт что это признак большого ума.
Аноним 06/04/20 Пнд 01:41:07 #315 №1651457 
>>1651421
И? Это плохо? Каждый работает в том подмножестве, которое ему по уму. Тупой работает в области си, поумнее работает с классами, еще умнее работает с шаблонными библиотеками и так далее. Или еще лучше, начинающий как вначале, но со временем умнеет , охватывая больше, но этот процесс неограничен, учиться можно всю жизнь, настолько язык глубок. Это же буквально рай для умного человека. Да и в целом, язык, охватывающий всё для всех и каждого, это же буквально бог, божественный язык.

Так что ненравится? То, что ты не осиливаешь ВСЁ И СРАЗУ? Что нельзя написать "я знаю в совершенстве". Что от этого у тебя комплекс и боль от осознания собственного несовершенства? И поэтому ГОВНО НИГУЖНА УБЕРИТЕ ОТ МЕНЯ! Так? Так. Поздравляю, классический дебил. И даже если бы сбежишь от си плюс плюс, так что он перестанет тебе напоминать что дебил, тебе все равно об этом напомнят, я например, или другие люди. В мине все равно везде естб не дебилы и при виде такого тупого тебя они молчать не будут. От себя не убежишь.
Аноним 06/04/20 Пнд 02:43:12 #316 №1651468 
>>1651457
>поумнее работает с классами
И получается ебаный пиздец с логикой и иерархиями.
Мимо не любитель ООП
Аноним 06/04/20 Пнд 03:12:56 #317 №1651473 
>>1650961
> Не понимаю, то ли я гений
>>1651457
> И? Это плохо? Каждый работает в том подмножестве, которое ему по уму. Тупой работает в области си, поумнее работает с классами, еще умнее работает с шаблонными библиотеками и так далее. Или еще лучше, начинающий как вначале, но со временем умнеет , охватывая больше, но этот процесс неограничен, учиться можно всю жизнь, настолько язык глубок. Это же буквально рай для умного человека. Да и в целом, язык, охватывающий всё для всех и каждого, это же буквально бог, божественный язык.
Вот это шизоид, вот это да! Для офигенных любителей языков и выразительности есть хаскель и теория типа tapl, но судя по твоей бредятине ты до такого не дорос. C++ постоянно накачивают разного качества фичами, тебе говорят, что для написания выразительного (и производительного) кода нужно себя сильно ограничивать в использовании языковых конструкций. И это не из-за какого-то там "ума", большинство хороших кодерков смогут прикрутить к проекту любую фичу из языка.
И учить всю жизнь можно cs, а не какой-то отдельный язык.
Аноним 06/04/20 Пнд 03:49:02 #318 №1651485 
>>1651473
>C++ постоянно накачивают разного качества фичами, тебе говорят, что для
Классическая безмозглая модная шлюха блондтнка.
1) Гонится за последней модой
2) Главное для ней - чужое мнение

Мань, куда ты лезешь, программирование не для такого сброда. Язык это инструмент, его используют как нужно конкретному мастеру для его задач. Не существует никакой моды и что там другие говорят себе в зеркало тоже их личное дело. Мастер использует то, что ему удобно для его дела. Своя голова, самостоятельное мышление. Тупым шлюхам не понять.
Аноним 06/04/20 Пнд 03:53:52 #319 №1651487 
>>1651485
>Мастер использует то, что ему удобно для его дела. Своя голова, самостоятельное мышление. Тупым шлюхам не понять.
Покажи свой гит?
Аноним 06/04/20 Пнд 06:06:09 #320 №1651506 
1468159196920.png
>>1651487
Аноним 06/04/20 Пнд 06:16:46 #321 №1651510 
>>1649543
Это разные языки. /тхред
Развели тут хуйни на полсотни постов
Аноним 06/04/20 Пнд 09:04:48 #322 №1651565 
Как следить за очисткой ресурсов на си (без эксепшенов) ? Goto? Do-while цикл? Проще конечно разделить функцию на подпрограммы, но не всегда есть возможность.
Аноним 06/04/20 Пнд 09:08:50 #323 №1651567 
>>1651457
> Тупой работает в области си, поумнее работает с классами, еще умнее работает с шаблонными библиотеками и так далее.
Толстота.

мимо сеньор
Аноним 06/04/20 Пнд 11:43:20 #324 №1651663 
>>1651485
Ты только что выдрал отдельный тезис из моего поста и зачем-то попытался подкрепить его продолжение своими убогими аналогиями. Зачем я только отвечал тебе...
Вот, цитируя полностью:
>> для написания выразительного (и производительного) кода нужно себя сильно ограничивать в использовании языковых конструкций.
У тебя видимо вообще никакого опыта разработки нет.
Аноним 06/04/20 Пнд 12:05:36 #325 №1651695 
>>1651485
>Тупым шлюхам не понять.
А теперь я доведу до тебя небольшое противоречие, выходящее из твоих прошлых постов, которые отлично проглядываются в треде. Комитет так же остановил эволюцию стандарта С, как и твой ебнутый "мастер", не пользующийся какой-то "модой". Плюсовые фичи в С не пролезли. Для реализации ООП, шаблонов, исключений можно использовать макросы (которые иногда и в кресты приходится тащить, хотя страуструп очень сильно старался), программистам в отрасли этого хватает. Тогда, собственно, не совсем понятны твои претензии к С как к языку.
Аноним 06/04/20 Пнд 12:12:24 #326 №1651704 
Помогите пожалуйста написать код правильно или пофиксить готовый. Спасибо.
Задание:написать программу, которая считывает английский текст из файла и выводит его на экран, заменив прописной каждую первую букву слов, начинающихся с гласной буквы.

using System;
using System.IO;


class Program
{
static void Main()
{
string path = @"D:\text.txt";
try
{
using (StreamReader sr = new StreamReader(path))
{

string str = sr.ReadToEnd();

string alf = "aeiou";
string[] split = str.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

for (int i = 0; i < split.Length; i++)
for (int j = 0; j < alf.Length; j++)
if (split.StartsWith(alf[j].ToString(), StringComparison.InvariantCultureIgnoreCase))
{

Console.WriteLine(split);
break;
}

}
}
catch (Exception e)
{
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
Console.ReadKey();
}
Console.ReadKey();
}
}
Аноним 06/04/20 Пнд 12:14:52 #327 №1651708 
>>1651704
Ты тредом промахнулся.
Аноним 06/04/20 Пнд 12:16:46 #328 №1651710 
>>1651708
А куда писать, направь будь добр
Аноним 06/04/20 Пнд 12:18:10 #329 №1651711 
>>1651708
Нашел, уже не нужно, спасибо.
Аноним 06/04/20 Пнд 13:06:49 #330 №1651734 
in english.PNG
in russian.PNG
Анчoусы, пoясните чтo хoтят в этoй задачи. Я не пoнимаю услoвия.
Аноним 06/04/20 Пнд 13:12:47 #331 №1651736 
>>1651734
Ну дайте пример чтo дoлжнo пoстoпить в прoграмму и чтo дoлжнo выйдти из неё.
Аноним 06/04/20 Пнд 13:17:42 #332 №1651742 
>>1651734
В строке "za-d" - обозначает диапазон и должна превратиться в строку "zabcd"
Аноним 06/04/20 Пнд 13:19:09 #333 №1651743 
>>1651742
а пoнял. спасибo. а этo пременимo тoлькo к алфавиту или ещё и цифры нужнo сделать? или тoлькo алфавит?
Аноним 06/04/20 Пнд 13:21:45 #334 №1651746 
>>1651743
В задании есть пример с цифрами
Аноним 06/04/20 Пнд 13:46:12 #335 №1651753 
>>1651695
>Для реализации ООП, шаблонов, исключений можно использовать макросы
Проорал на весь дом.
Аноним 06/04/20 Пнд 13:54:17 #336 №1651757 
>>1651695
Можно не нести шизобред, если нужно ООП, шаблоны, исключения, берешь и используешь их, а если не нужны не используешь. С++ позволяет всё, делай что хочешь как хочешь без ограничений.

С же это поледка для компашки шизиков разработчиков ядра линукс. Примерно как Git, только гит оказался полезным и за пределами шизокружка, а си нет, ведь уже есть то же самое, но с плюсами.
Аноним 06/04/20 Пнд 13:56:37 #337 №1651758 
>>1651757
Я вот пишу только на питоне, там всё есть.
Аноним 06/04/20 Пнд 13:58:14 #338 №1651761 
Пиздец, мне одному в последний год стало мерзко даже читать хуйню что тут пишут, но я все равно сюда захожу и ахуеваю с того что у этих студентишек в головах?
Аноним 06/04/20 Пнд 13:59:56 #339 №1651765 
>>1651761
Так ты не корми, и их не будет.
Аноним 06/04/20 Пнд 14:03:23 #340 №1651767 
>>1649543
>Зачем нужен с
Чтобы были уязвимости с переполнением буффера, очевидно, это выгодно мировой закулисе.
Аноним 06/04/20 Пнд 14:12:54 #341 №1651770 
>>1651746
спасибo пoнял.

>>1651761
я здесь с 10-гo января где-тo. захoтел научиться писать на с++. сперва выучил oбщие oснoвы пoгрoмирoвания на базе питoн. пoтoм пришёл сюда и начал k&r книгу делать. щас на 56-й странице в данный мoмент. терпи, книгу прoйду и уйду из треда в с++ страуструпа делать
Аноним 06/04/20 Пнд 14:15:44 #342 №1651774 
>>1651770
Чё? Я не про ньюфагов которые задают шизовопросы уровня анон почему це це или что такое баит, а про шидерьмо вроде поста через один наверх от того на который ты ответил
Аноним 06/04/20 Пнд 14:17:10 #343 №1651776 
>>1651774
А пoнял ты прo питoниста тoгo. Думал прoстo чтo вас ньюфани заебали.
Аноним 06/04/20 Пнд 15:07:12 #344 №1651814 
>>1651753
>>1651757
Скажи мне, гений, что произойдет/ты будешь делать если у тебя в обработчике сигнала внутри многопоточного сетевого софта развалится, например, тобою обожаемый оператор new?
Аноним 06/04/20 Пнд 15:43:42 #345 №1651841 
>>1651814
Я, хотя бы, смогу локализовать место ошибки, пока ты разматываешь дефайны...
Аноним 06/04/20 Пнд 15:52:20 #346 №1651853 
>>1651814
А если у тебя там развалится malloc?
Аноним 06/04/20 Пнд 15:53:24 #347 №1651859 
>>1651841
Ты не увиливай, а четко мне укажи каким инструментом языка ты эту ситуацию "локализуешь" и в какой подпрограмме/функции какого процесса.
А еще я не знаю про какие дефайны ты там говорил, попробуй примерно указать конструкцию, которую они оборачивают в коде.
Аноним 06/04/20 Пнд 15:55:14 #348 №1651860 
>>1651859
>А еще я не знаю про какие дефайны ты там говорил,
>Для реализации ООП, шаблонов, исключений можно использовать макросы
>не увиливай
Ясно.
Аноним 06/04/20 Пнд 15:55:54 #349 №1651862 
>>1651859
Какую "ситуацию"? Что такое "развалится оператор new?" Плашка памяти выпадет из слота?
Аноним 06/04/20 Пнд 15:59:43 #350 №1651866 
как бoлее лучше эти скoбки ставить-тo

int main(void) {
return 0;
}

или

int main(void)
{
return 0;
}

в книге k&r первый вариант демoнстрируют пoстoяннo
Аноним 06/04/20 Пнд 16:04:10 #351 №1651870 
>>1651866
В наше время первое.
Аноним 06/04/20 Пнд 16:04:37 #352 №1651872 
>>1651866
Это книга, а у тебя экран. Много бумаги сэкономишь, если лишнюю строку не добавишь?
Аноним 06/04/20 Пнд 16:07:36 #353 №1651874 
>>1651862
Оператор new не справился с задачей и выдал std::bad_alloc. В обработчике обработать ошибочную ситуацию невозможно (как всегда, хехе).

Дефайны мне тут никакие не приплетай, они здесь не нужны. Про аллокаторы можешь меня тоже не спрашивать, я тебе могу хоть mmap в оператор завернуть, это не имеет разницы.
Аноним 06/04/20 Пнд 16:19:29 #354 №1651885 
>>1651874
>Дефайны мне тут никакие не приплетай
>сам приплетает
>Для реализации ООП, шаблонов, исключений можно использовать макросы
Понятно.
Аноним 06/04/20 Пнд 16:34:44 #355 №1651894 
>>1651885
Еще раз, товарищ зеленый, здесь нет никаких ооп и шаблонов, никаких дефайнов и языка Си. Я поставил вам вопрос:
>>в обработчике сигнала внутри многопоточного сетевого софта присутствовал оператор new, он выдал std::bad_alloc
Вопрос стоит только в рамках языка C++. Мне очень, очень интересно, как бы вы средствами языка локализовали и обработали эту ошибку.
Аноним 06/04/20 Пнд 18:45:36 #356 №1652014 
>>1651814
>здесь нет языка Си
Зачем тогда срешь в треде си. Срут не от большого ума, катись обратно откуда вылез, даун.
Аноним 06/04/20 Пнд 19:11:52 #357 №1652031 
>>1652014
Ты не мне такой вопрос задавай, а шизику, который решил здесь устроить очень содержательное сравнение крестов и сей. Условие я дописал к посту чтобы он окончательно обосрался и больше ничего сюда не писал. И, как ожидалось, его уже давно не видно.
Завершение процесса или передача управления из обрабочика сигнала - вопрос общий для двух языков. Просто реализация исключений (в т.ч. в виде C-макросов или C++) не позволяет им выбрасываться из обработчика сигнала.
Аноним 06/04/20 Пнд 19:14:59 #358 №1652034 
>>1651894
>товарищ зеленый
Тут только ты
>здесь нет никаких ооп и шаблонов, никаких дефайнов
Вот же >>1651695
>Для реализации ООП, шаблонов, исключений можно использовать макросы
>Вопрос стоит только в рамках языка C++
Ты ошибся тредом.
>Мне очень, очень интересно, как бы вы средствами языка локализовали
Никто тебе не писал что "только средствами языка". Просто когда я уже найду место, где программа упала, ты все еще будешь разматывать макросы и пытаться понять в какой же строчке это произошло.
>И, как ожидалось, его уже давно не видно.
Потому что у меня есть чем развлечься вечером и без твоей тупости.
Аноним 06/04/20 Пнд 21:03:07 #359 №1652120 
>>1652034
>>никто не писал "только средствами языка"
Я тебе прямо такой вопрос задал дважды. Ты ничего не можешь ответить.
Аноним 06/04/20 Пнд 23:11:30 #360 №1652279 
>>1651874
А как обработать возврат NULL malloc'ом? И так и так падаем.
sageАноним 06/04/20 Пнд 23:18:08 #361 №1652289 DELETED
Ненавижу хохлов, че делать?
Аноним 07/04/20 Втр 00:26:59 #362 №1652336 
>>1652279
>А как обработать возврат NULL malloc'ом? И так и так падаем.

Самое простое - крашнуть прогу. Если не крашнуть самому - могут начаться злодейства.
Если чуть поумнее, то можно созранить состояние проги, не используя дополнительного выделения памяти (и опять же крашнуться после).
Если у тебя какой-то хитрый алгоритм, который адаптивно жрёт дохуя памяти, можешь это просто использовать как сигнал пойти по пути меньшего пожирания этой самой памяти
.
Не обрабатывать ошибки выделения памяти (да и ошибки вообще) - признак долбоёба.
Аноним 07/04/20 Втр 00:41:59 #363 №1652342 
>>1652336
Правильно, но я указывал что эта злодейская ошибка случилась с malloc (new) внутри обработчика сигнала.
>>1652279
Была бы данная ошибка внутри обычной процедуры - можно было бы откатить все действия процедуры назад и вернуться с кодом ошибки. Но она произошла не в процедуре, а в другом контексте. Из этого выходит что эксепшен нельзя выкинуть из обработчика, он не попадет ни в один catch и терминирует программу. Ну и получается нам нужно (в условиях текущего стандарта c++) эксепшен ловить на месте и лезть в древние posix_c siglongjmp/setcontext чтобы сменить контекст вручную. Или лезть в boost.asio, где уже разработали нужные оберточки, с тем же успехом прикручиваются нужные интерфейсы в виде библиотек к сям.

И вот как-то так выходит, что еще надо на data layout обратить внимание, с сишным api поработать, какую-то часть стандартной библиотеки переписать, поработать с легаси. И так в некоторых проектах проектах мы просто приходим к си, где язык дополняют либы и container_of.
Аноним 07/04/20 Втр 10:31:21 #364 №1652417 
>>1652342
Пердолепроблемы.
Аноним 07/04/20 Втр 13:33:10 #365 №1652513 
>>1652417
Мнение студента с опытом из laba1, laba2
Аноним 07/04/20 Втр 14:02:55 #366 №1652531 
>>1651565
Бамп.
Аноним 07/04/20 Втр 16:01:52 #367 №1652599 
>>1634080 (OP)
Подскажите, какая разница между языками D и C? Вот прям пример на одном, пример на другом. Везде одни словеса пространные, и я ничего не понимаю. Это если вообще найти возможно - назвали же ёпанавашу 1 буквой.
Аноним 07/04/20 Втр 17:07:18 #368 №1652701 
>>1651565
А зачем эксепшены? Делаешь cleanup процедуры, чистые данные помечаешь как NULL.
Аноним 07/04/20 Втр 17:19:38 #369 №1652720 
>>1652599
https://rosettacode.org/wiki/Sorting_algorithms/Bubble_sort#C
https://rosettacode.org/wiki/Sorting_algorithms/Bubble_sort#D
https://rosettacode.org/wiki/Sorting_algorithms/Bubble_sort#E
Но D какбе мертвый язык.
Аноним 08/04/20 Срд 00:53:36 #370 №1653137 
Что можно почитать про создание парсеров?
Аноним 08/04/20 Срд 01:39:01 #371 №1653166 
>>1653137
https://2ch.hk/vn/res/366830.html
Тут спрашивай.
Аноним 08/04/20 Срд 11:11:02 #372 №1653266 
Screenshot1.png
лаб1
Значение некорректно из-за преобразования char в float, но когда я пробую получать в float значение пишет что определенно слишком типов, как мне получить нужное значение в клавиатуры чтобы функция работала корректно?
Аноним 08/04/20 Срд 11:46:36 #373 №1653281 
>>1653266
getchar() получает символы, при чём по одному. Число 546 — это 3 символа, например. Тебе, видимо, хочется функцию scanf().
Аноним 08/04/20 Срд 12:02:51 #374 №1653290 
Screenshot2.png
>>1653281
Я уже пытался ее прикрутить, но так и не понял как ее правильно прикрутить, покажи пожалуйста
Аноним 08/04/20 Срд 12:05:49 #375 №1653293 
>>1653290
scanf("%f", &c);
Аноним 08/04/20 Срд 12:12:18 #376 №1653301 
Screenshot3.png
>>1653293
"&" я так понимаю это ссылка на участок в памяти где хранится переменная или что это? Почему без нее не работает и как это правильно использовать? В примере я ничего подобного не видел
Таки работает, большое спасибо, если бы не ты, я бы долго пердолился
Аноним 08/04/20 Срд 12:17:17 #377 №1653303 
>>1653301
>В примере я ничего подобного не видел
Потому что char str1[20] означает, что str1
>это ссылка на участок в памяти где хранится
массив из 20 чаров.
>как это правильно использовать?
Пока просто запомни, что в сканфе нужно писать &. Почему и как потом разберёшься.
Аноним 08/04/20 Срд 12:23:56 #378 №1653316 
>>1653303
>Пока просто запомни, что в сканфе нужно писать &. Почему и как потом разберёшься.
Ок, так и сделаю
Аноним 08/04/20 Срд 17:30:57 #379 №1653540 
>>1653303

>Пока просто запомни, что в сканфе нужно писать &. Почему и как потом разберёшься.

Байтобляди in a nutshell

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

Хорошо, что Rust и прочие языки ведут свое победное шествие и отправят вас на свалку истории
Аноним 08/04/20 Срд 18:08:55 #380 №1653573 
image.png
Я, конечно, дебил, но все же - откуда эти ворнинги? Что не так?
Бля, Шарп слишком сложный, продолжаю прототипировать на Си
Аноним 08/04/20 Срд 18:13:01 #381 №1653577 
>>1653573
Ну там же четко написано - ты не указал тип в 15 строке.
Аноним 08/04/20 Срд 18:15:47 #382 №1653580 
>>1653577
Все. Совсем в шары долблюсь. Забыл указать возвращаемый тип. Спасибо.
Аноним 08/04/20 Срд 22:35:32 #383 №1653777 
>>1653573
>childrens
эээээ бля в проге без английского никуда...
Аноним 08/04/20 Срд 23:10:21 #384 №1653812 
>>1653777
Да кого вообще волнует название переменных в очередном мертворожденном прототипе проекта, который я никогда не доведу до конца, так как программист как из говна пуля?
Аноним 09/04/20 Чтв 11:32:40 #385 №1653985 
>>1653812
Ну это просто такой показатель знания тобой языка и твоего отношения к программированию. Нормальный человек так не напишет.
Аноним 09/04/20 Чтв 11:42:09 #386 №1653989 
>>1653985
Вроде нигде не заявлял, что знаю язык уровнем выше чем "читаю технический текст". В голове всплыло children вместо child - использую.
Аноним 09/04/20 Чтв 12:30:24 #387 №1654007 
>>1653985
Всегда пишу childs, замечательно отношусь к программированию, на пиндосов похуй.
Аноним 10/04/20 Птн 22:34:35 #388 №1655108 
Почему чтобы скомпилировать программу под разные платформы нужно заниматься какой-то херней, а не нажать две кнопки?
Допустим есть программа hello world SDL2. Сам SDL кроссплатформенный, есть костыль-компилятор mingw с прослойкой для запуска этого дела под шиндовс, но для его работы все равно нужен отдельный пакет специально заточенный под mingw. Разве там не те же исходные тексты что и под линупс? Почему он не может взять include просто из линукса?

Отличие для меня лишь в том что в линуксе libSDL2 будет установлен в пакете, а в шиндовс эта DLL будет лежать в папке с программой, остальную совместимость должен обеспечить mingw. Не?
В чем сложность?

полный нубас
Аноним 11/04/20 Суб 00:44:11 #389 №1655214 
>>1655108
> Разве там не те же исходные тексты что и под линупс
Берешь те же тексты, mingw, configure, make, все дела, но это долго. А готовый пакет ты распаковал куда-нибудь, cc mygovnokod.c -Lmysdl2path -Imysdl2path -lSDL2 и все. Или даже без -L/I, если положишь в правильные директории.
Аноним 11/04/20 Суб 01:55:14 #390 №1655245 
>>1655108
SDL это библиотека, библиотека это тоже программа, программы распространяются в бинарниках, а не исходном коде. Бинарники разные на разных системах, и не только windows, они и на каждом линуксе разные. В пакете находятся бинарники, поэтому пакеты везде разные, не только относящиеся к mingw.
>совместимость должен обеспечить mingw. Не?
Не. Разные системы разные, совместимости нет нигде, это прорагандистские бредни для идиотов. Точнее, есть только в windows обратная совместимость (старые программы работают на новых виндах), но не наоборот. На других системах кроме винды и такого нет, там вообще полное отсутствие совместимости.
Аноним 11/04/20 Суб 02:28:55 #391 №1655262 
>>1655214
Я знаю что в линуксе все пакетами и я хочу в два клика собрать и под винду и под линукс из линукса. Под линукс он собирает естественно нормально, но для cygwin нужен какой-то свой пакет т.к. он не видит инклуды которые есть в системе.

Короче я все понял. В пакетах специфичных для cygwin идут dll и *.a файлы.

Я просто хотел чтобы как в python pip install все загружалось и подсасывалось само, а не я голову ебал как это слинковать:
>i686-w64-mingw32-gcc -I"./SDL2-2.0.12/i686-w64-mingw32/include/" -w -Wl,-subsystem,windows concept.c -L"./SDL2-2.0.12/i686-w64-mingw32/lib/" -lmingw32 -lSDL2main -lSDL2
Аноним 11/04/20 Суб 02:32:19 #392 №1655265 
>>1655262
Таскай все эти .dll с собой в одной папке, а компилятору пусть скажет cmake.
Аноним 11/04/20 Суб 03:42:52 #393 №1655301 
>>1655262
>Я просто хотел чтобы как в python pip
Питон и пхп это веб-скрипты, они не имеют платформы и вообще не программы, а скрипты. А на си пишутся программы, а программа это такая штука, которая под платформу написана. Отсюда натуральный вывод: мультиплатформенных программ не существует, что означает, любому хуесосу с кукареками про "мультиплатформенность" в треде языка си нужно пиздовать нахуй отсюда. Не туда зашел, петушок.
Аноним 11/04/20 Суб 03:44:36 #394 №1655303 
>>1655301
>Питон и пхп это веб-скрипты, они не имеют платформы и вообще не программы, а скрипты.
К чему имеет биндинги (qt, sdl2) оно подсасывает само.
Аноним 11/04/20 Суб 03:51:04 #395 №1655306 
>>1655303
Твой набор слов не имеет смысла, бредятина. Не понимаешь разницу между программой и скриптом и мелешь чушь как результат. Иди нахуй, сначала обучись элементарной компьютерной грамотности, а потом приходи. Здесь тред си, а не обучения чайников основам компьютерной грамотности.
Аноним 11/04/20 Суб 04:28:58 #396 №1655314 
>>1655306
>Твой набор слов не имеет смысла, бредятина.
Это ты даун. В питон если сделать pip install мне не надо отдельно качать SDL чтобы pySDL2 заработал.

До того как я начал разбираться речь шла о дистрибуции и инфраструктуре, а не чем отличается скрипты от программ. Не знаю почему ты сагрился и тяфкать начал.

>а программа это такая штука, которая под платформу написана. Отсюда натуральный вывод: мультиплатформенных программ не существует
Говорилось очевидно про сам исходный код и ты это знаешь, токсик. Через какие костыли оно будет собираться мне не важно. Мне важно чтобы все пакеты нужные для этого были доступны в два клика, как это сделано в менеджере пакетов для cygwin например.
Даже в арче есть костыли чтобы это не искать в отличии от debian'а. Я сетовал на то что даже в python с pip install есть такой функционал и он качает в том числе бинарники, не надо искать ничего, могли бы в рамках mingw реализовать подобное.
Аноним 11/04/20 Суб 07:32:40 #397 №1655347 
>>1655314
Терминальный необучаемый дебил, как и ожидалось от веб-макаки. Нельзя лезть в алгебру не зная арифметики. В школе не зря учат последовательно, снизу вверх. Но как только кончается школа, дебилы радостно лезут сразу в дебри, не понимая элементарных основ, ведь больше нет няньки в лице государственной принудительной системы образования, а сами за себя сообразить своими куцыми мозгами не могут.
Аноним 11/04/20 Суб 11:16:05 #398 №1655417 
yarlyk[1].jpg
Указатели - это перемененные которые являются "ярлыками" для других переменных? Зачем они нужны?
Аноним 11/04/20 Суб 11:30:14 #399 №1655426 
>>1655417
А вот, например, надо в функцию передать строку или структуру. Можно конечно всю строку в стек запихнуть (нет), а можно просто указатель передать на начало строки.
Аноним 11/04/20 Суб 12:31:42 #400 №1655499 
>>1655301
Си это как раз переносимый язык
Аноним 11/04/20 Суб 19:22:02 #401 №1655945 
Ананасы, сколько времени понадобится, что Си был заменен более современными системными языками программирования (как тот же Раст)? 10-20 лет?
Я люблю Си, но мир же не будет вечно жрать говно от эксплоитов, которые существуют только благодаря тому, что Си еще не умер (ну и легаси код крестов без RAII). Ваши прогнозы?

мимо разраб драйверов на богоподобный линукс
Аноним 11/04/20 Суб 19:47:33 #402 №1655960 
>>1655945
> системными языками программирования
> rust
Хех.
Аноним 11/04/20 Суб 20:13:39 #403 №1655988 
>>1655960
А в чем проблема? Он быстрый как кресты, на нем уже ядро ОС написали и пишут дрова, включая дрова на уже существующие ОС. Если не системный, то какой? На нем легко можно байтоёбить.
Аноним 12/04/20 Вск 00:36:18 #404 №1656131 
[CODE]
window_caption[150] = "";
program_name = "Test";
program_version = "0.0";
FPS = 150;
snprintf(window_caption, sizeof(window_caption), "%s v%s", program_name, program_version);
snprintf(window_caption, sizeof(window_caption), "%s; FPS: %u", window_caption, fps_current);
[/CODE]
Хочу сложить строку caption = caption + "text"
Почему во втором snprintf у меня не выводится %s, только FPS: %u? snprintf не работает сама в себя? (linux)
Аноним 12/04/20 Вск 01:36:53 #405 №1656144 
>>1655945
Ага, Лайнус так и побежал побежал переписывать Линукс на раст.
Боюсь что ждать минимум лет 50, скорее всего не на твоём веку.
Аноним 12/04/20 Вск 01:38:23 #406 №1656145 
>>1655988
> Он быстрый как кресты, на нем уже ядро ОС написали и пишут дрова
Слышал такое слово в слово про C#.

> А в чем проблема?
В реализации linked list на две страницы.

>>1656131
> snprintf не работает сама в себя
Нет. Первый аргумент объявлен как restrict, значит компилятор имеет полное право подразумевать, что других указателей на window_caption в функцию не передали, и применять соответствующие оптимизации.

> Хочу сложить строку caption = caption + "text"
strcat или n = sprintf(buffer, ...); n = snprintf(buffer + n, ...) (с проверкой ошибок и соответствующим уменьшением размера буфера, разумеется).
sageАноним 12/04/20 Вск 01:39:02 #407 №1656146 
>>1656145
> n = sprintf(buffer, ...)
snprintf разумеется.
Аноним 12/04/20 Вск 03:47:56 #408 №1656169 
>>1656145
> Слышал такое слово в слово про C#.
Щас бы писать ОС и дрова на языке, который исполняется виртуальной машиной, ммм... (да-да, я знаю, что дотнет кор умеет компилиться в нативный код), но во времена появления сишарпа такого не было и такого ты слышать явно не мог, да и этого не происходило вовсе, а на Расте УЖЕ написана ОС и УЖЕ написано неплохое кол-во системных утилит, как для языка, которому лишь 5 лет. Через 15 лет он убьет Си точно, про кресты не могу сказать.

> В реализации linked list на две страницы.
И? Обернут в стандартную либу и все, кого это должно ебать, если у тебя программа в итоге защищена от целого класса атак, причем самых опасных.
Аноним 12/04/20 Вск 03:57:06 #409 №1656171 
>>1655988
Твой раст нужен только на серверах, и то не нужен, ведь там уже есть питон. Мертворожденная поделка.
Аноним 12/04/20 Вск 04:12:28 #410 №1656176 
>>1656171
Он никакой не мой. Но поясни почему, аргументы такие себе. Почему язык, превосходящий другие языки для таких же целей, только старые, не может в перспективе его убить?
Аноним 12/04/20 Вск 04:53:04 #411 №1656188 
>>1656169
>дрова на языке, который исполняется виртуальной машиной, ммм..
Какбэ... Виртуальные драйвера уже в виндовс95 выполнялись (потому что как ты ещё сделаешь многозадачность на одноядерном процессоре) и писали их думаю на сишке.
мимокрестовик
Аноним 12/04/20 Вск 05:08:50 #412 №1656192 
>>1656176
>превосходящий другие языки
На словах пиздунов, а на деле мы имеем Firefox - самое тупое, тормозное, жирнющее говнище из миллиона процессов, которому чтобы отобразить текстовые веб-странички нужен кластер суперкомпьютеров чтобы не тормозить. Вдобавок текущее как шлюха из всех дыр водопадами, просирая бесконечное количество гигабайт памяти. Такая-то скорость, надежность и безопасность, хоть вот прямо щас весь софт на свете переписывай на этом говне, чтобы миру пизда настала.
Аноним 12/04/20 Вск 06:51:53 #413 №1656203 
>>1655988
Покажи мне дрова для винды/линуха на расте.
Аноним 12/04/20 Вск 09:35:08 #414 №1656236 
>>1656192
И тут ты такой показываешь тонкий, красивый, лёгкий, полнофункциональный браузер для современного веба.
Аноним 12/04/20 Вск 11:28:43 #415 №1656303 
>>1656145
>Первый аргумент объявлен как restrict, значит компилятор имеет полное право подразумевать, что других указателей на window_caption в функцию не передали

Спасибо, добавил переменную buffer через которую теперь делаю.
Аноним 12/04/20 Вск 12:07:00 #416 №1656344 
>>1656236
И тут я показал язык, на котором даже его создатели высирают парашу говна, хуже в мире не найти. Теперь подмойся и скройся, выродок.
Аноним 12/04/20 Вск 14:38:19 #417 №1656440 
image.png
>>1656344
>Сталь — плохой сплав, вон какие грузовики гигантские и дорогие приходится из неё делать, чтобы руду возить.
>Покажи лёгкий грузовик, который с такой же задачей справится
>Риии, из стали говно тяжеленное делают и чинить сложно!
Аноним 12/04/20 Вск 15:19:37 #418 №1656465 
>>1656176
>не мой
>, превосходящий другие языки
Дебил не палится.
Аноним 12/04/20 Вск 17:09:23 #419 №1656531 
>>1656465
Почему раст сосет, а Си топ? Ладно там кресты, это реально монстр, там реализованы все возможные парадигмы, можн окак байтоебить, так и писать абстракциями чуть ли не как на петоне (на поздних стандартах офк).
Но Си? В нем же нет ничего. Да, быстрый, но по бенчмаркам раст == си по скорости, но при этом полностью безопасен в плане памяти. Почему никто не может конструктивно ответить. Нечего ответить по существу? Так так и скажите, что сливаетесь.
Аноним 12/04/20 Вск 18:03:39 #420 №1656580 
>>1656531
Ладно братиш ты нас раскрыл, на самом деле мы все данво на расте а тут просто отыгрываем разговор студентов из молодости, давай в раст-тред, там пообщаемся на вопросы твои ответим
sageАноним 12/04/20 Вск 21:24:16 #421 №1656678 
>>1656169
> на Расте УЖЕ написана ОС
На C# УЖЕ написана ОС

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

> И? Обернут в стандартную либу и все
И все, останется только виртуальную машину добавить. А на сишке это две строки, которые даже в отдельную функцию часто не оборачивают.

>>1656176
> язык, превосходящий другие языки
Сишке ты говоришь "зделой", и оно делает да, с UB, если ты не понимаешь, что ты делаешь, и почему. Расту нужно вылизать анус, чтобы он возможно согласился зделоть, и у тебя все равно будут те же самые проблемы, что и в сишке, потому что без ансейфа в расте можно только хелловорлды писать. В результате мы платим больше и за это имеем лишь больше проблем и потенциальные полпроцента прироста производительности из-за лучшего анализа алиасинга, но когда-нибудь потом.
Аноним 12/04/20 Вск 21:52:31 #422 №1656685 
>>1656531
>Почему раст сосет, а Си топ?
1. С Проще освоить.
2. Есть на любой платформе. Качественный компилятор
3. Язык стабильный.
4. Куча справочных материалов.
5. Не нужны обертки чтобы использовать сишные либы.
6. Куча тулзов для профилирования, статического анализа
7. Можно работать за деньги
Аноним 12/04/20 Вск 23:50:38 #423 №1656720 
>>1656580
https://www.redox-os.org/ открывай рот
Аноним 12/04/20 Вск 23:55:12 #424 №1656722 
>>1656678
> На C# УЖЕ написана ОС
Сишарп изначально не позиционировался как системный язык, в отличие от раста.
> И все, останется только виртуальную машину добавить. А на сишке это две строки, которые даже в отдельную функцию часто не оборачивают.
Две строки? Развернуть структуру, написать функции удаления/добавления элемента в список, где опять же могут быть проблемы с памятью.
> Сишке ты говоришь "зделой", и оно делает да, с UB, если ты не понимаешь, что ты делаешь, и почему. Расту нужно вылизать анус, чтобы он возможно согласился зделоть, и у тебя все равно будут те же самые проблемы, что и в сишке, потому что без ансейфа в расте можно только хелловорлды писать. В результате мы платим больше и за это имеем лишь больше проблем и потенциальные полпроцента прироста производительности из-за лучшего анализа алиасинга, но когда-нибудь потом.
даже уязвимый код в ансейфе почти невозможно поиметь, у растовых бинарях мемори лэйаут абсолютно другой, там переполнения блять в ансейфе не работают, максимум могут быть траблы с указателями, и то в адовом говнокоде. При этом при аудите сорцов можно будет сфокусироваться именно на ансейфе, потому что другое просто неуявимо. И шанс проебать баг, тем более критический, сокращается в охуилярд раз
Аноним 12/04/20 Вск 23:58:37 #425 №1656724 
>>1656685
1. И проще прострелить себе ебало, ибо сегфолт и Си - братья навек
2. Дело времени, причем недолгого
3. Стабильный в крашах, мемори ликах, гуляющих указателях, переполнениях, UB? Безусловно
4. И? У раста тоже есть книга и пиздатая документация, не аргумент
5. Дело времени х2, язык молод, но растет как Алёша на астероидах
6. Куда тулзов для статического анализа, а 80% кода на Си имеют дыры, лол
7. Огромное количество компаний, которые занимаются блокчейном, уже перешли на раст, ибо там безопасность превыше всего.
Аноним 13/04/20 Пнд 00:07:43 #426 №1656727 
>>1656724
Угомонись, Раст исправляет какую то одну микроуязвимость, все остальные дыры будут в нем те же
Аноним 13/04/20 Пнд 00:19:50 #427 №1656733 
>>1656727
В мире нет ни одного зарегитрированного случая взлома растового бинаря. А попытки уже были. Его память неуязвима, там только специально можно что-то сделать
sageАноним 13/04/20 Пнд 00:34:41 #428 №1656742 
>>1656733
Вот когда будет сравнимое количество софта на расте - будут и взломы не будет, он умрет раньше. А пока пишут только всякое говно, которое иначе написали бы даже не на си или крестах, а на питоне.
Аноним 13/04/20 Пнд 00:49:52 #429 №1656746 
>>1656742
Количество написанного софта в этом случае не повлияет - проблемы Си были известны с момента рождения этого языка. Если вдруг весь мир перейдет на раст - магическим образом не смогут взломать то, что не взламывается, только если нарочито не плодят бэкдоры
Аноним 13/04/20 Пнд 01:14:34 #430 №1656754 
1586729673321.png
>>1656733
Ой что это у нас тут, буффер оверфлоу в стандартной либе. А я тебе говорил не высовывайся, обосут
Аноним 13/04/20 Пнд 08:05:58 #431 №1656819 
image.png
Допустим, у меня есть вот такая функция. Что ей возвращать при ошибке? Структуру с нулями?
Аноним 13/04/20 Пнд 08:23:53 #432 №1656824 
>>1656724
Растошизики, успокойтесь. Сишку не сместить, вам только если кресты с гейдева какого-нибудь вымещать, но и то не факт.
Аноним 13/04/20 Пнд 08:31:49 #433 №1656827 
>>1656819
Сделать PROCESSENTRY32W* дополнительным аргументом, возвращать int-овый статускод. Алсо, у тебя рот в winapi измазан, вытри.
Аноним 13/04/20 Пнд 08:39:10 #434 №1656829 
>>1656827
>рот в винапи
Я ж в си-треде, а не среди крестоблядей, чего вы так.
Аноним 13/04/20 Пнд 08:40:54 #435 №1656831 
>>1656827
>возвращать int-овый статускод.
А почему именно инт возвращать? По идее хватит и char?
Аноним 13/04/20 Пнд 08:43:17 #436 №1656833 
>>1656831
Ебан, ты? Важные для компиля/системы статус коды в винапи уже завернуты, для себя возвращай чё хочешь и как хочешь
Аноним 13/04/20 Пнд 08:44:27 #437 №1656834 
>>1656833
Да.
Аноним 13/04/20 Пнд 08:46:46 #438 №1656837 
>>1656834
Узнал тебя, чего давно к нам в раст тред не заглядываешь?
Аноним 13/04/20 Пнд 08:52:28 #439 №1656842 
image.png
>>1656837
Ахуеть, ты как это сделал? Я уже полгода-год туда не захаживал.
sageАноним 13/04/20 Пнд 08:57:19 #440 №1656845 
image.png
>>1656833
Так нормально будет? Или быдлокод?
sageАноним 13/04/20 Пнд 10:51:07 #441 №1656879 
image.png
>>1656845
Блять, не то...
Аноним 13/04/20 Пнд 11:17:01 #442 №1656895 
>>1656879
Какую-то хуйню напечатал, не смотрите.
Аноним 13/04/20 Пнд 12:04:54 #443 №1656917 
>>1656754
Где рабочий эксплоит к этому, Маня? Даже если в расте есть какая-то там дыра, из-за мемори лэйаута, который устроен не так, как в сишных бинарях, ты не сможешь это эксплуатировать нормально.
Аноним 13/04/20 Пнд 12:41:20 #444 №1656946 
>>1656746
Хуйню не неси, долбаеб.
Аноним 13/04/20 Пнд 12:57:05 #445 №1656955 
>>1656917
Ебан, вернись уже в свой тред. Ломают и будут ломать твой Раст, как и сишку, пока мы все на х86 сидим
Аноним 13/04/20 Пнд 13:23:12 #446 №1656972 
>>1656955
А на x64 что изменится?
Аноним 13/04/20 Пнд 14:05:31 #447 №1656999 
>>1656955
А на других платформах что? По-моему тот же ARM и RISC-V не имеет никакой разницы в плане эксплуатации программ
мимоанон
Аноним 13/04/20 Пнд 15:28:06 #448 №1657051 
>>1656972
>current state of /pr/
Аноним 13/04/20 Пнд 15:29:39 #449 №1657052 
>>1656917
Если pederust не дает мартышкам срать в память, то это не значит, что выходной бинарь на 100% безопасный
Аноним 13/04/20 Пнд 15:47:18 #450 №1657063 
Как сделать memcpy с char* в WCHAR буфер с сохранением жопы?
Аноним 13/04/20 Пнд 15:56:47 #451 №1657071 
нубас тайм
Есть структура SDL_Surface img = NULL;
Я хочу загрузить в нее изображение.
В обычном варианте это будет выглядеть как:
SDL_Surface img = IMG_Load("../img_path/test.png);
Но я хочу чтобы это делалось через мою функцию вида:
bool loadImageToSurface (SDL_Surface destination, char path)
Т.е. она возвращает 0 если все норм, и 1 если ошибка.
Вопрос, как в нее надо передавать SDL_surface чтобы функция именно с внешей переменной работала? Через & не работает.
Аноним 13/04/20 Пнд 16:19:13 #452 №1657092 
КАК ЖЕ МЕНЯ ЗАЕБАЛА ЕБЛЯ С WCHAR'АМИ ЧТО ЗА ШИЗА
>>1657071
В чём проблема? Вот так сделай.
https://pastebin.com/G6LZ9sS4
Аноним 13/04/20 Пнд 16:28:37 #453 №1657099 
>>1657092
не гори, че ты вообще делаешь?
Аноним 13/04/20 Пнд 16:40:34 #454 №1657110 
>>1656999

На других платформах то же самое - если кекогерцы не кукурузные, значит есть всевозможные Side-channel уязвимости, которые даже на сраном жаваскрипте без эксплойта в нейтив код юзаются.
Аноним 13/04/20 Пнд 17:15:41 #455 №1657134 
>>1656917
>Где рабочий эксплоит к этому, Маня?
С козырей зашел, мое увожение. Нельзя написать эксплоид к расту, если растоговно нигде не используется. Нечего взламывать, понимаешь?

100% безопасность из коробки
если нету unsafe, то безопасно
рабочих эксплоитов нету <<-- Вы находитесь здесь
да, взломали, но ничего серьезного
сами виноваты, надо было нормально писать
sageАноним 13/04/20 Пнд 17:45:20 #456 №1657157 
>>1657110
> на сраном жаваскрипте без эксплойта в нейтив код юзаются
В лабораторных условиях при правильной фазе луны. Но это никак не относится к нинужности раста.
Аноним 13/04/20 Пнд 18:44:35 #457 №1657212 
>>1657157
дебилушка, пока есть уязвимости в железе - хоть на залупе своей пиши - выломают
Аноним 13/04/20 Пнд 19:01:29 #458 №1657219 
недавно обнаружил, что хуева туча версий гсс прошла мимо меня - прочила лог, соорудил модный мейкфайл с пиздатыми санитайзерами. использую для тестов.

нормально или хуйня? https://pastebin.com/v9mXETRv
Аноним 13/04/20 Пнд 19:23:32 #459 №1657234 
>>1657052
говорилось именно про уязвимости памяти, а не в общем. Раст мартышке не даст скомпилить бинарь, где есть переполнение/висячий указатель/двойное освобождения памяти.
Аноним 13/04/20 Пнд 19:25:46 #460 №1657236 
>>1657234
а в расте нет ансейф разве?
Аноним 13/04/20 Пнд 19:26:03 #461 №1657237 
>>1657134
да будет тебе известно есть такое понятие, как proof of concept. Пишут эксплоит, чтобы чисто показать возможность локального/удаленного исполнения кода, дабы показать, что уязвимость не пластмассовая, а найти кого взломать всегда можно.
Я тебе открою секрет, его нет просто потому, что его не смогли написать.
Аноним 13/04/20 Пнд 19:29:44 #462 №1657243 
>>1657236
Есть, но:
а) При тестах на такой род уязвимостей можно смело концентрироваться на местах, где есть ансейф, ибо другие места защищены уж точно
б) В случае проблем с памятью, в виду специфики лэйаута в памяти растовых бинарей, заиметь контроль над исполнением программы почти нереально. Техники взлома, которые работают в Си и крестах, там бесполезны
Аноним 13/04/20 Пнд 19:32:47 #463 №1657245 
>>1657243
а какие сейчас техники взлома в плане передачи управления на произвольный код? стек и память разве исполняемые всё ещё?
Аноним 13/04/20 Пнд 20:05:58 #464 №1657270 
>>1657245
Возвратно-ориентированное программирование, приятного гуглежа. Шеллкод не вхуяривают уже лет как 10, с подключением.
Аноним 13/04/20 Пнд 20:15:50 #465 №1657282 
>>1657270
>Возвратно-ориентированное программирование, приятного гуглежа
и как этому противостоит раст? эта проблема решается на уровне компилятора.
Аноним 13/04/20 Пнд 20:24:37 #466 №1657288 
>>1657282
Лолшто, как тебе компилятор поможет? Ты знаешь что такео возвратно-ориентированное программирование вообще или нет?
В расте ты не моешь писать за пределы буфера и не можешь заебнуть указатели и насрать в кучу. Это никак не связано с тем, что ты сказал.
sageАноним 13/04/20 Пнд 20:39:13 #467 №1657301 
>>1657219
> -Wno-parentheses
> -std=c89
> нормально или хуйня?
Хуйня. А вот прогонять через санитайзеры - это всегда хорошо.

>>1657270
От ROP уже тоже лет 10 как есть защита, а у x86 даже аппаратная защита в виде shadow stack есть.

>>1657288
> Лолшто, как тебе компилятор поможет?
Канарейки, редзоны, привет.
Аноним 13/04/20 Пнд 20:39:33 #468 №1657302 
>>1657288
>Лолшто, как тебе компилятор поможет? Ты знаешь что такео возвратно-ориентированное программирование вообще или нет?
ты чё такой борзый? дыши ровнее.

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

> Это никак не связано с тем, что ты сказал.
в смысле не связанно? ты затираешь возврат на стеке в заранее известны код, где-то у ret. и прыгаешь дальше, выполняя свою задачу чужими руками. тупо гугл даже выдаёт опцию в гцц, например -fcf-protection . а сколько там стек протекторов
Аноним 13/04/20 Пнд 20:41:35 #469 №1657304 
>>1657301
>Хуйня. А вот прогонять через санитайзеры - это всегда хорошо.
не, не хуйня. я хочу максимальную переносимость. и не хочу печатать лишние скобочки.
Аноним 13/04/20 Пнд 20:51:14 #470 №1657310 
просто я сюда захожу пару раз в год и каждый раз вы срётесь про раст. даже интересно стало, о чём можно тереть годами.

или мне так показалось. в общем, мне бы друзей найти, а то я пишу в стол и никому ничего не показываю. мотивации всё меньше.
Аноним 13/04/20 Пнд 21:03:10 #471 №1657322 
>>1657302
> если есть ансейф - то можно. и есть библиотеки, которым ты доверяешь что они безгрешные.
Раст на пути юзать только растовые либы.
> в смысле не связанно? ты затираешь возврат на стеке в заранее известны код, где-то у ret. и прыгаешь дальше, выполняя свою задачу чужими руками. тупо гугл даже выдаёт опцию в гцц, например -fcf-protection . а сколько там стек протекторов
Во-первых, бинари как правило не компилят с этой опцией, особенно если они должны быть быстрыми, так как эта мера имеет сильное влияние на скорость исполнения. Во-вторых, есть модифицированная техника обойти и эту защиту -> https://marcoramilli.com/2016/06/23/from-rop-to-lop-bypassing-control-flow-enforcement/, приятного аппетита и с добрым утром, нашли способ как это обходить еще в 2015-2016. В-третьих, стек протекторы - слабая защита. Если у тебя есть примитив либо на чтение, либо на запась (даже 1 из них сгодится) - ты сливаешь значение протектора и переписываешь его его же значением, чтобы он при возврате не крашнул прогу, либо при примитиве на запись ты записываешь ЗА протектор, сразу перезаписывая сам адрес непосредственно. В-четвертых, на стэке свет клином не сошелся, есть еще куча.
Аноним 13/04/20 Пнд 21:06:22 #472 №1657323 
>>1657322
upd
Санитайзеры юзают не все и они не могут найти все дыры.
sageАноним 13/04/20 Пнд 21:07:37 #473 №1657326 
>>1657304
> я хочу максимальную переносимость
Скажи, сколько твоих хелловорлдов (в штуках) было скомпилировано и запущено на платформах, где нет поддержки C11?
Аноним 13/04/20 Пнд 21:20:59 #474 №1657336 
>>1657322
ну, логично что на всякую гайку найдётся болт. не буду спорить, мне не очень интересно. но хорошо, и да, литературу по взломам я читаю только старую из 00х, чисто в развлекательных целях.

>>1657326
я пишу на старые системы. например спектрум. sdcc вроде есть поддержка, но нет
Compound literals.
Variable-length arrays.

да и смысл в новых стандартах? писал бы на пк - может быть, но тоже вряд ли. просто не вижу смысла.
статик ассерт можно самому написать, фикс-типы самому определить. треды поставляются отдельно. атомики - ничего не могу сказать.
Аноним 13/04/20 Пнд 21:25:23 #475 №1657343 
>>1657336
>я пишу на старые системы
ну то есть, так, чтобы и на пк можно было скомпилировать.
Аноним 14/04/20 Втр 07:44:10 #476 №1657497 
image.png
Объясните мне что за ебола!
Аноним 14/04/20 Втр 09:49:43 #477 №1657543 
>>1657099
>>1657063
Аноним 14/04/20 Втр 10:18:08 #478 №1657586 
image.png
Пизда.
Аноним 14/04/20 Втр 14:26:15 #479 №1657733 
Запилил аналог cheat engine, при записе в память нужного участка - падает все приложение сканируемое. Привелегии отладчика получил. Чо не так?
Аноним 14/04/20 Втр 16:30:38 #480 №1657793 
Что значит "взять стека" и "вернуть в стек"? Аноны, поясните что это такое на компьютере, в книге просот хуяк и ни с того ни с чего про какой-то стек пошла речь без его определения. В интернете гуглил ничего не понял. Молю, помогите. Что такое стэк на компьютере?
Аноним 14/04/20 Втр 18:40:35 #481 №1657888 
>>1657793
Стек это структура данных в которую можно помещать какую-то информацию. Стек работает по принципу первый пришел - последний вышел. Тоесть если ты положишь в стек сначала 1, потом 2, потом 3. Ты вытаскиваться будет сначала 3, потом 2, потом 1. Почитай внимательней, там скорее всего где-то упоминается что именно за стек. Так как есть некоторые нюансы. Алсо если ты читаешь описание алгоритма то там возможно неявно подразумевается что ты создашь стек который и будешь использовать.
Аноним 14/04/20 Втр 18:42:56 #482 №1657891 
>>1657888
а спасибо, я это уже читал.

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

там описание программы, ну да просто не понял откуда они там стэк взяли. всё спасибо, анчоусы.
Аноним 14/04/20 Втр 18:54:37 #483 №1657898 
>>1657891
Еще при запуске программы для нее создается служебная структура-стек которая используется для хранения адресов возврата, аргументов, некоторых переменных. Когда говорят "стек" могут подразумевать ее, но к ней нет прямого разумного способа доступа, поэтому фразочки типа "взять стека" и "вернуть в стек" к ней не применимы. Обычно используется что-то типа "переменная хранится на стеке". А если в него и пишут что-то - то там пишут по адресам.
Аноним 14/04/20 Втр 21:43:07 #484 №1658022 
>>1657497
В винде есть привилегии, требующиеся для разных действий, выполняемых системной, их наличие у процесса зависит от способа запуска и от пользователя, под которым процесс запущен. Но даже если программа запущена из-под админа, некоторые привилегии по умолчанию выключены (возьми Process Explorer или Process Hacker, и в свойствах процесса на вкладке Security увидишь). Код включает SeDebugPrivilege.

>>1657898
> к ней нет прямого разумного способа доступа
_alloca()
Аноним 14/04/20 Втр 21:45:03 #485 №1658025 
>>1657733
> Чо не так?
Что-то не так. Код тащи.
Аноним 15/04/20 Срд 07:22:21 #486 №1658167 
Есть библиотека состоящая из единственного .h файла. Как её заинклудить в несколько моих? Оно ругается: "<название_функции> уже определено в другом объектном файле"
Аноним 15/04/20 Срд 08:50:53 #487 №1658186 

>>1658167
IFNDEF и т д
Аноним 15/04/20 Срд 09:37:04 #488 №1658197 
>>1658186
Хмм, не помогло, #pragma once тоже не помогло.
Заметил только разницу, если инклудить непосредственно в каждый мой файл, линкер вываливает целую кучу конфликтов, похоже все функции какие есть, а если положить в stdafx.h (который везде заинклужен), тогда выводит конфликты только тех функций, которые я реально вызывал, и их зависимые.
Аноним 15/04/20 Срд 09:46:47 #489 №1658203 
1560603288393.png
>>1658197
Вопрос снимается, ха-ха-ха.
Аноним 15/04/20 Срд 18:02:11 #490 №1658572 
Чо там по поводу Столярова, читал кто?
Аноним 15/04/20 Срд 19:42:02 #491 №1658625 
>>1658203
Сделай всем функциям static, все заработает, но без -flto код в бинарнике будет дублироваться. Чтобы не дублировался, нужно использовать нормальные библиотеки, как у людей.

>>1658572
Ну это как TempleOS, только книга.
Аноним 15/04/20 Срд 21:05:32 #492 №1658658 
>>1658572
На глаз очень классно, видно, что мужик шарит.
Мне кажется, большая часть хейта в его сторону исходит от неосиляторов.
ATTENTION! Аноним 16/04/20 Чтв 14:48:57 #493 №1659099 
Стоит задача написать брутфорс расшифровщик с одного алгоритма. Естественно надо писать на многоядерное применение, а еще лучше делать это на видеокартах. Понимания как писать для видеократ такую хуету нет, как и для многоядерного паралельного вычисления. Решил посмотрел как там это все для видеокарт делаетя и офигел. Чето не хочется все это изучать про видеокарты ради одной задачи. Что можете посоветовать где копать? И что такая работа может стоить если заказать на стороне?
Аноним 16/04/20 Чтв 16:11:45 #494 №1659194 
>>1659099
пойти нахуй и прочитать любую книгу о шифровании
Аноним 16/04/20 Чтв 17:18:25 #495 №1659257 
>>1659194
Дебил, ты вопрос читал?
Аноним 16/04/20 Чтв 20:48:43 #496 №1659454 
>>1659099
> Понимания как писать для видеократ такую хуету нет
OpenCL вполне себе похож на сишку.
Аноним 16/04/20 Чтв 22:23:25 #497 №1659535 
>>1659454
Да вот , сижу читаю про CUDA, правда не хотелось бы привязыватьсяся к nvidia только. Надо потом постмотреть по OpenCl.
Ты с OpenCl работал?
Аноним 17/04/20 Птн 10:16:20 #498 №1659766 
Какое же K&R переоцененное говно
Аноним 17/04/20 Птн 12:04:25 #499 №1659889 
>>1659454
>>1659535

Как удачно, как раз хотел задать о них вопрос.

А opencl умер?
Последний релиз в 17 году.

А то хотел локально на радеоне (мак) на нем попробовать оптимизировать вычислительную задачу, что бы потом не парясь запускать в облаке, на чем-то от Nvidia.

А потом смотрю, книги все о нем старые, релизов давно нет.

Сейчас есть альтернативы?
Аноним 17/04/20 Птн 13:07:53 #500 №1659935 
>>1659766
+
Дейтел пизже в разы
Аноним 17/04/20 Птн 14:12:55 #501 №1659986 
Бамп
Аноним 17/04/20 Птн 16:42:58 #502 №1660135 
>>1659889

Вроде HIP выглядит живым и перспективным.
Аноним 17/04/20 Птн 16:55:09 #503 №1660151 
>>1659889
>А opencl умер?
>Последний релиз в 17 году.
это ты на википедии прочитал, пупсик?
Аноним 17/04/20 Птн 16:56:19 #504 №1660153 
>>1660151

Дя
Аноним 17/04/20 Птн 17:19:39 #505 №1660171 
>>1660151

Спс
Но выбор между opencl, hip и cuda (с трансляцией в HIP), все равно стоит.

Байтоебы, помогите выбрать, что перспективнее, если у тебя карточка amd.
ПЕРЕКАТ Аноним OP 17/04/20 Птн 20:24:27 #506 №1660321 
>>1660319 (OP)
>>1660319 (OP)
>>1660319 (OP)
>>1660319 (OP)
>>1660319 (OP)
comments powered by Disqus

Отзывы и предложения