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

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

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

Пожалуйста, пользуйтесь 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. Koch@n "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

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

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

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

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

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

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

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

Где я должен делать проверку? В foo или bar? Или в обеих? Вообще нужны ли эти проверки, если есть аннотации? Дискасс.
3 1634184
>>34117

> возможно с платиной


Да. Проверяют возвращаемые значения, в данном случае - результат malloc(). Многие проверяют и при использовании, но по мне так для аргументов достаточно assert() вкатить (и то нахуй не нужно), если это не внешняя функция, которая реализует интерфейс модуля. Вот для внешней надо проверять все. Алсо, обработать ошибку выделения памяти правильно очень сложно, и в каком-нибудь консолеговне проще всего сделать обертку уровня if (!malloc()) exit() и не думоть.
4 1634185
>>34117
>>34184
Ой, ты именно про аргументы. Ладно, про аргументы я тоже ответил.
5 1634198
Где почитать как быстро и ненавязчиво писать тесты для отдельных функций?
6 1634576
>>34198
у мамы своей спроси
7 1634602
>>34576
шутки за 100, хмм
8 1634624
>>34198
В книжках у тестеров что то такое попадалось.
Функция получает что-то на вход и выдает выход
Надо поделить все множество возможных входов на уникальные классы.
Например, ты пишешь parseFloat(const char*). 3.0 и 4.0 будут в одном уникальном классе, 3.0, -3.0, 3e-1, Inf, zhopa - в разных.
Значит надо проверять такие ситуации, как:
null, пустая строка, строка с правильным числом, строка с неправильным числом. Решить к чему относится строка из двух чисел. Решить к чему относится строка, начинающаяся с числа, но заканчивающаяся мусором.
Сами категории тоже надо подразделять.
Правильные числа - проверять целые числа, вещественные числа, отрицательные числа, научную запись, NaN, Inf и т.д. Решить что будет если в начале два плюса, если после числа пробелы, если после плюса пробел и т.д.
Неправильные числа - проверять что будет если подать очень длинное число, что будет если подать перед числом плюс и минус, или два минуса
9 1634629
>>34624
Забыл дописать - когда у тебя будут уникальные классы, надо проверять граничные случаи, например тебе не надо проверять все положительные, а только граничные - 0.0, 1.0, 1.175494e-38, 3.402823e+38...
10 1634725
>>34624
Это понятно, да, но как тесты оформлять? Писать программу, влючать в неё .с файл, который хотим проверить, и там вызывать функции с заранее определённым входом и ожидать от них определённого выхода?
11 1634728
>>34198
Обычно используют готовые фреймворки для тестирования, наверняка под си что-то есть.
12 1634732
>>34728
Может и есть, но мне хочется tests first approach опробовать, как в tdd. Просто на маленьких учебных задачках. Валгринд для этого разворачивать как-то несуразно.
13 1634777
>>34725
Можно просто почти как в питоне:
#ifdef TEST
int main(void) { ...}
#endif
И потом cc -DTEST file.c Для либ очень даже норм.
14 1634795
>>34777
Мне не хотелось бы держать это в одном файле, если честно. На мой взгляд так будет некрасиво. Наверное, поступлю как написал выше. Сделаю отдельный .с, в который тупо инклудом буду брать программу, и проводить тесты.
15 1634830
>>34732
Не валгринд разворачивать, а использовать фреймворки
https://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C
Например cmocka (выбрал от балды, сам выбирай)

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

Пишешь c- файл с тестами, и отдельно собираешь бинарник, в котором указаны твои нужные c-файлы, и файл с тестами.
16 1635263
Анон, хотел бы ты женщину-программиста со знанием языка Си?

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

Или лучше С++?
17 1635508
Да как это говно установить то блять?
18 1635804
>>35263
Дашу Емакс не хочу...
19 1637424
Вопрос такой: сколько времени займёт изучение данного языка в среднем?
20 1637594
>>37424
месяц, дальше забываешь про дроч языка и достигаешь просветления через прикладнуху (юниксовые проги с продвинутым функционалом, всякие байтоебские кодировщики пишешь), иногда "повышая квалификацю" годным чтивом про хорошие практики
21 1637669
>>34080 (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
А теперь люди жалуются, что бинарник не пашет, а я в душЕ не ебу, чё он не пашет, блядь.
Untitled.png4 Кб, 336x73
22 1638858
у меня переполняется значение, измнения типа данных на long, long long, unsigned long и т.д. не помогает почему-то. Что делать? Как сделать так чтобы он верный результат давал?
23 1638859
>>38858
чтобы в минус не уходил короче говоря.
24 1638861
>>38858
>>38859
мне кажется что надо в визуалке компилятор настраивать...
25 1638867
>>38858
Ну ты же печатаешь d. Чтобы напечатать long, надо писать "%ld"
26 1638982
>>38867
Только у него и так лонг по умолчанию, нужен lld.
27 1639020
>>34080 (OP)
Анон, можно ли как-то хранить имена типов данных в переменной?

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

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

Вопрос: а можно ли хранить имя типа в переменной, для того, чтобы писать:
(type_name )(void ptr)?
28 1639024
>>39020
Сейчас вот задумался, что это немного противоречит архитектуре языка программирования, хех. Ведь, по сути, речь идет о хранении ключевых слов в переменной.
29 1639029
MinGW как виндовая версия GCC работает хорошо?
30 1639054
>>39020
Воздержись от void* без крайней необходимости.
Язык тебе дал перегрузки функций fun(int), fun(float)

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

В C++ можно было бы на шаблонах что то нагородить fun<int>(ptr), fun<float>(ptr)
>>39024
Это нормально, в более высокоуровневых языках есть рефлексия, но она всегда требует большого оверхеда.
31 1639055
>>39029
По моему скромному опыту MSYS2 удобнее.
sage 32 1639060
>>39054

> Язык тебе дал перегрузки функций fun(int), fun(float)


Не дал.
33 1639070
>>39060
Вот это я тупанул.
34 1639073
>>39060
Погуглил, в 2011 году добавили какую-то шляпу _Generic
Возможно с ней можно что-то такое делать.
https://stackoverflow.com/questions/479207/how-to-achieve-function-overloading-in-c
35 1639104
>>38867
>>38982
спасибо большое, щас попробую
36 1639108
>>38867
>>38982
спасибо вам огромное, работает. люблю вас, анчоусы.
Untitled.png13 Кб, 711x220
37 1639126
>>38982
>>38867
всё норм, но в консоле попрежнему результат некорректно отображается. помогите, молю.

https://pastebin.com/94FcGuU5
38 1639178
>>39126
Ну она через return идёт, там вроде автоматические преобразование любых типов к обычному int со знаком идёт. Я конечно не про, но я бы просто в принт это сделал и всё.
39 1639207
>>39178
Двачую
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 байтный.
40 1639218
>>39207
>>39178
Спасибо, больше анчоусы. Понял. Вопросов больше нет.
41 1639219
Как же хочется поскорее научиться писать драйвера...
42 1639317
>>35804
фу.
43 1639321
>>39055
Так в неё же мингв и ставится, не?
sage 44 1639441
>>39321
Есть msys+mingw32, а есть msys2, где много всякого, в том числе mingw-w64. Фактически msys - это окружение (и инсталлятор), компилятор вообще можно отдельно ставить, если ./configure не интересует.
45 1639510
Делаю учебную залачку из праты.

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

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

Я правильно понимаю, что это какое-то расширение от gcc и так делать не надо? И как делать тогда надо, чтобы нужное число строк печатать для любого списка в ячейке?
46 1639525
>>39510

>это какое-то расширение от gcc


Да.
Не объявлять функцию вложенную в другую функцию.
47 1639541
>>39525
А как тогда печатать для каждого вида животного его имя? Имя нам известно один раз, в ноде дерева, потом мы передаём управление листу, чтобы он сделал
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)?
48 1640210
Доброго времени суток. Что аноны могут посоветовать по англоязычной литературе, чтобы в кратчайшие сроки въехать в C, если уже имеется достаточный опыт работы с C++?
Хотелось бы книгу, которая была бы ориентирована не на совсем зеленых, но и не была слишком техническим материалом (как The C Programming Language). Подумываю взять Дейтелов. Что скажете, нормально или слишком много базы?
49 1640328
>>39541
Тащемта можно объявить функцию внутри функции, но определять вложенную функцию нельзя. Это значит, что ты можешь написать прототип функции внутри другой функции, но определение обязан писать вне функций.
50 1640332
>>40210

>если уже имеется достаточный опыт работы с C++?


По моему проще загуглить на stackoverflow разницу между c и c++
51 1640390
Зачем в си побитовые операторы?
sage 52 1640392
>>40390
Чтобы манипулировать битами.
53 1640393
>>40392
А зачем? какое практическое преминение?
54 1640394
55 1640395
>>40393
Любое. Манипуляция битами тьюринг полная.
56 1640397
>>40395
Зачем ты на си пишешь?
57 1640398
>>40397
Поясни.
58 1640399
>>40398
Ну с какой целью? Ты же сидишь в СИ треде значит учишь его или уже владеешь им и пишешь на нём что-то.
59 1640401
>>40399
Не понимаю вопроса. У С должна быть какая-то особенная цель? Или ты сидишь в программаче и недоумеваешь, зачем люди программы пишут?
60 1640406
что нужно чтобы уметь писать драйвера? си освоил, что ещё, аноны?
61 1640426
Освоил побитовые операции в си, ну понял как это работает устроено. Аноны, молю поясните мне ньюфане на пальцах ну где примерно это можно применять на практие? ну интересно пиздец. Душные мудаки которые будут нарочит односложно и неопределённо отвечать не пишите мне. Я знаю здесь анон был хороший который мне задачи помогал решать который мне алгоритм переполнения хороший показал. МОЛЮ ОТЗОВИСЬ
62 1640428
>>40426

>побитовые операции в си


Побитовые операции везде одинаковы и вообще это математика

>где примерно это можно применять на практике


Битовые поля и матрицы используются в логике приложения ради перформанса
Кроме этого только в кодировке

>Душные мудаки


Ты сам душный долбаеб неосилятор плачущий на мылочах вместо чтения полторых статей
63 1640429
>>40428
спасибо за ответ,понял. вот так бы сразу.
64 1640432
>>40426
Мигать светодиодами на чипах.
Да везде блджад. В хэшах, в наборах которые сеты, в crc32, в проверках четности, в псевдорандоме, во всяких быстрых делениях, округлениях, извлечении корней.
Вообще вопрос уровня где используется вычитание.
65 1640433
>>40432
Спасибо тебе тоже, анчоус за ответ, у тебя более разврнутый чем у предыдущего анона.

Алсо

>Мигать светодиодами на чипах.


да когда-нибудь я научусь писать драйвера и программировать микроконтроллеры как же я буду отрываться и эксперементировать. спасибо, анчоус ещё раз.
66 1640434
>>40432
Мне очень понравилось в ручную это просчитывать если честно побитовые операции. Я даже себя проверил по всем пунктам. Это то чего я ожидал от программирования. Помню когда в веб 2 года назад вкатывался искренне охуевал и думал что это за гавно унылое. А тут прикольно люблю когда всё так разобрано до винтика прозрачно и понятно, низкуровневость это охуено, если помечтать уже то может быть когда-нибудь я вкачу своё ньюфажное ебало и в ассемблеры
67 1640441
>>40434
Есть крутая книжка Алгоритмические трюки лоя программистов. Конечно сейчас процессоры с набором инструкций поьогаче и компиляторы стали поумнее, поэтому она менее актуальна, но там про это.
69 1640570
>>40328
Понятно, что можно объявить, вопрос не в этом. Вопрос, как получить желаемое поведение без применения nested functions? Потому что с ними очень удобно в две строки это получилось >>39510, так как гцц разрешает.
70 1640656
>>40544
что это?

>>40441
спасибо возьму на заметку
71 1640663
>>40434
>>40426
Это чтоли до сих пор тот вкатышь который здесь с января срёт своими идиотскими вопросами и просит проверить задачи из кернигана? Когда ты уже отсюда съебёшь то.
72 1640666
>>40656

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

На С.
73 1640668
>>40666
я ничего не понял из того что ты мне сказал, извини. мне такое ещё рано
74 1640683
>>40570
Тогда так >>39541 и ещё передавать petname.
75 1640771
>>37594

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


Откуда всё это брать? Читал Дейтеллов последние главы типы данных (списки, стек), препроцессор. работа с памятью, goto - на всё это по несколько страничек и конец. Как детектив на самом интересном месте обрывается.
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

что делаю не так?
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

что делаю не так?
77 1640814
>>40774

>get_double


>printf("%f")

78 1640817
>>40814
Хотя не, я не прав.
Ну проверяй errno, хуле.
79 1640843
>>40774
Ну очевидно же, что у тебя массив объектов, а работаешь ты с ним как с одним объектом. Воткни после json_tokener_parse:
parsed_json = json_object_array_get_idx(parsed_json, 0);
80 1640854
>>40843
большое спасибо, помогло
81 1640855
>>40843
и нет, мне не было очевидно)
82 1641665
Анончик, который тут про побитовые спрашивает, задачками грузит, про эмбеддед мечтает и тому подобное. Я с тебя, конечно, люто проигрываю, но добра тебе, и не кринжуй сильно, когда вспомнишь свои высеры. Когда-нибудь ты обязательно станешь на голову выше уже трудоустроенных, но не рефлексирующих по труъшным наукам быдлокодеров. Главное, уважай математику и вообще все абстрактное, это сложнее и почетнее, чем может показаться. Не проебись. А asm и прочее - это да, с этим надо наебаться как минимум в молодости, даже если монетизацию байтоебства не осилишь в будущем. Без этого, как без велосипеда в детстве, будешь в некотором смысле несчастным человеком.
мимо узнал про двач спустя год с небольшим после вката по K&R
83 1641674
>>41665

>математику


Говно без задач
84 1641700
>>41674

>пук


Я ж не говорю про классический матан по Зоричу. Взять того же Кнута Concrete mathematics, ахуэнно жи... Чувак, ни одна фундаментальная книга по алгоритмам (без которой ты нихуя серьезного сам не осилишь, как кодер) не доступна без математического бэкграунда, во многих таких книгах это даже прилагается первой главой или в дополнении, но там сумбурно, а в деле становления Кармаком вообще спешка ни к чему, и так заебаться успеешь раз семьдесят за годы просветления, стало быть, нехуй нагонять сумбур, а лучше взять книжулю отдельно, забыть про далекий конец пути, сбросить напряжение и получать удовольствие от процесса. Кто этого не понимает, тот проебанное поколения, и я не про возраст, а в принципе. Заебали ЧСВ мудаки, которые своим куриным мозгом пытаются оценить ценность того, что лишь осилив и заценишь. Это иной уровень существования, это как рассказывать червяку, в чем прикол виртуозной езды на мотоцикле. Обнял, анон.
85 1641724
>>41700

>книга по алгоритмам


Это говно только кукаретики и вкатыши читают. Потом бегуют со своим мохнатым О пока их нахуй от рабочего кода не пошлют.

>классический матан


Сорта говн
86 1641868
>>41724
ну я же говорю

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

Гротендик.jpg23 Кб, 420x280
sage 87 1641910
>>41700

>Я ж не говорю про классический матан по Зоричу


Иди на хуй со своей второй культурой, обрыган.
88 1641992
>>41868

>виртуозной езды на мотоцикле


Чегобля?
89 1642055
Пиздец, в ситреде пиздеть в сторону биго нотации это просто беспрецедентный пиздец. Спасибо школе 21 за это
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 вроде рандомные строчки читать не предлагает (или в мейкфайлах своя инфо?). О чём он вообще?
91 1642179
Решил только что первую задачу из k&r с байтовыми операциями. Пол дня над ней бился хотя понимал как все эти операторы работают. Непонятно было просто как манипулировать ноликом и единичкой но таки я сделал и программа прошла все тесты. Шикарно, только сильнее убедился что си это то что мне нужно.
92 1642210
>>42058
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, означает что шелл без инфо это кодогенерация.
93 1642217
>>42210
Понял, разобрался, спасибо.
94 1642233
>>42210
И ещё вопрос, как заставить $(info ...) на пустой строке не печатать лайнбрейк? Тот же
$(info $(shell mkdir -p $(DIRS)))
делает пустую строку. Как и, судя по моим экспериментам, любой
$(info )
Это как-то чинится? Можно ли отправить вывод в /дев/нулл?
2020-03-25-155703724x402scrot.png37 Кб, 724x402
95 1642521
двач, выполняю пикрил с числами, естесна получаю по ебалу нули.
как с этим бороться?
96 1642528
>>42521
Попробуй выводить значения, а не их адреса =)
97 1642534
>>42521
sin(i) по идее почти ноль
98 1642537
>>42528
бля, я ебанат. ладно.
только теперь минусовые значения появились. че с ними делать?
>>42534
~0.00003 на калькуляторе
99 1642538
>>42537

>~0.00003 на калькуляторе


Ты калькулятору в каких единицах i давал?
trigonometr.jpg56 Кб, 494x460
100 1642541
>>42537

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


это нормально.
101 1642542
>>42538
вот это:
\sin\left(0.002094395102393333\right)
на этом сайте:
https://www.desmos.com/scientific
102 1642543
>>42538
снова обосрался. давал радианы, а полосочку забыл передвинуть с градусов
103 1642765
>>42528
выстрел в ногу защитан

// мимокрокодил
104 1642880
Не понимаю как происходит унарное отрицание.

int x = 20;
return ~x;

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

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

Почему так?
105 1642881
>>42880
Ты не можешь просто не учитывать ведущие нули. Поэтому у тебя не 10100, а 000...010100.(с учетом размера int) И 11 в десятичной ты никак не получишь
Ну а разница в 1 из за представления в дополнительном двоичном коде (two complement). -21 выглядит не так как ты написал. Проверь на 1 = b00000001, -1 = b11111110
106 1642882
>>42881
ну так напиши мне подробрно как выглядит 21 на самом деле и как происходят эти вычисления все.
1585178526959.jpg67 Кб, 960x720
107 1642883
>>42882
Ой мне лень сейчас уже, вот продли правую табличку вручную и все поймешь. Я и так в прошлом посте опечатался. Короче -(x) в двоичном будет (~x)+1. Алсо попробуй на беззнаковых.
108 1642884
>>42883
Спасибо попытаюсь понять
109 1642894
>>42883
Автору таблички надо по мордасам набить за пропорциональный шрифт.
sage 110 1642907
Это что за ошибка такая? Что-то не так с либами?

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

Третий пик другим способом компиляция и она работает. Что за хуита?
sage 111 1642909
>>42907
Я все понял, сори :)
image.png222 Кб, 1920x1080
sage 112 1642921
Что по идее должно быстрее работать?
113 1642923
>>42921

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

https://www.youtube.com/watch?v=rX0ItVEVjHc
114 1643015
>>42921
У тебя c++ выбран, не?
115 1643028
>>42921
Видно же по асму, что вариант с четырьмя интами.
116 1643032
>>43028
На втором месте вариант со структурой по значению, наверное, т.к. нет операций с памятью.
117 1643036
>>43032

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

И да, если уж бенчить асм-высер хуеты, то бенчить проход по массивам и прочим структурам данным
118 1643247
>>42880
короче смотри нужно не в двоичной системе считать, а в типе 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. ну ты короче надеюсь ты понел.
119 1643255
>>43247
Всё из-за старшего бита. Он кодирует положительное или же отрицательное число.
120 1643256
>>43255
старший бит, сдохни фошист ёбаный, гавна в штаны анонам накладываешь гнида
9ncCVga[1].png21 Кб, 1641x161
121 1643258
Анон, скомпилил 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ый день.
122 1643261
>>43258
UPD: Либа Shared
dotnet publish /p:NativeLib=Shared -r win-x64 -c release
Пример - тут
https://github.com/dotnet/corert/tree/master/samples/NativeLibrary
123 1643262
>>43255
Ну да, ты правильно вот сказал метко и коротко, объяснил бы ему раз такой талант имеешь. Если старший бит 0 число положительное, если 1 то отрицательное.
124 1643367
>>43015
Тот же выхлоп будет, если и си взять.

>>43028
Ну там есть lea и 4 разных регистра. В третьей функции же все в один регистр считается из памяти, плюс сдвиг по таблице он быстрее считается, так что хуй знает!
125 1643383
>>42921
Второй вариант. Будет работать на практике так же как и первый, просто потому что если развернуть код вызова этих функций и убрать фолдинг констант, который ты бенчмаркаешь, блядь от он будет ==.

>>43367

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


Зато ты можешь ирл огресть хуеву тонну индирекций (которых офк никогда не будет в твоём хэловорде на 1кб), и твой третий вариант будет сосать хуй. Нет, дети, если у вас кол-во оперативки > кэша то так делать не надо.
126 1643448
>>43256
Пшёл нахуй, порватка. Какая связь вообще между старшим битом и фошистами, ещё и ёбанными? Хуле смерти желаешь, сам фошист что-ли? Гугли старший бит, гугли, сука, вилкой бытраблять гугли: https://ru.wikipedia.org/wiki/Старший_бит
127 1643535
>>43448
классический айтишник в юмор не может нихуя.
128 1643553
>>43535

>айтишник


Выбрось нахуй это слово из своего вокабуляра, если хочешь чтобы тебя люди серьезно воспринимали.
129 1643605
>>43553
маня, успокойся. я сам айти пидор о чём очень сильно жалею, но увы уже много трудов въебал в этот чан с гавном под названием АЙТИ. и мне поздно переквалицифроваться. как же меня бесят мои коллеги душные мудаки, никакого юмора, всё сразу в штыки, слово не то его использовать низя, вот ты классикал айти выблядок. Сука, я мог бы работать с тётями сраками в офисе и слушать про их детей и мужей, да где угодно, хоть с гречневыми пидорахами, но только в этом чане с гавном под названием айти с заносчивыми и душными мудаками которые за нетакое слово уже ебут тебе мозг.
130 1643620
>>43605

>хоть с гречневыми пидорахами


Тебе кто-то мешает релокейтнуться на Украину?

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


Специфика байтойобов, на самом деле. Ещё подобным страдают бэкэндеры, попробуй потусоваться с челиками из других областей, ахуеешь от разнообразия айтишников в природе.
131 1643626
>>43605
Нытик аутист, да еще и либераха.
132 1643629
>>43620
Всё наоборот же, фронты-питухи с их маняметодичками
133 1643678
Читаю черные книги игровых движков, закончил часть про движок Вульфа. Понимаю, что никогда не смогу даже попытаться сделать свой аналог даже с современными возможностями.
134 1643706
Современные рендерные системы уже все за тебя делают, только нужные флаги врубить, каждый флаг минус 5 процентов гпу
135 1643809
>>43553
Этот айтишник сгорел, несите нового.
136 1644342
>>43678

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


Ну и лох.
137 1644476
>>43678
С современными возможностями как раз сложнее делать вещи типа вульфа, потому что видеокарты пошли другим путем и его методы слишком противоестественны. Это как писать самомодифицирующийся код на ассемблере сегодня, а лет 30 назад это было нормой.
JohnRomero-JasonScottinterview(6951215353)(cropped).jpg40 Кб, 459x599
138 1644484
>>43678
погуглил как выглядят разработчики вольфенштейна
проиграл
139 1644864
>>44476

>С современными возможностями как раз сложнее делать вещи типа вульфа,


А чё тебе мешает делать ручной софтверный рендеринг? В sdl2 можно тупо ебать байтики текстуры. Потом одной функцией копировать текстуру на экран, вуаля.
140 1644962
>>44864
Думоть надо. Рейкастинг писать. Как работает рендер на основе BSP - вообше не вкурил. И один хрен потребуется i7 девятого поколения и 1080, чтобы добиться 30 кадров.
Мимо
141 1644993
>>44864
Ну такое себе. Хотя бы в шейдере тогда надо делать.
142 1645027
>>42055
Чаю
Дико корежит от этих школ с зумерками-программистами из пабликов вконтакте. Опошляют и поганят все и вся вокруг себя.
143 1645124
Есть ли смысл компилировать под всякие MMX и более новые процы, а не ставить i586 и не париться? Оптимизирует ли компилятор? Или все равно придется руками дрочить ассемблерные вставки? В игровых движках вроде как SSE вполне себе используется.
144 1645174
>>45124
Возьми gcc.godbolt.org и посмотри на примере каких-нибудь скалярных произведений. Если хочется что-то самому добавить то используй не вставки, а интринсики.
145 1645340
>>45124
Есть, компилятор оптимизирует по возможности, вставки не придется дрочить.
146 1645347
>>45124
В идеале надо определить черту, начиная с каких процов клиенты тебе не интересны. Ну или делать отдельно сборку для MMX и для i586, возможно вынеся нужные функции в либу.
Capture.PNG10 Кб, 798x69
147 1645663
не пoнимаю услoвия задачи. пoмoгите пoжалуйста.
148 1645673
>>45663
11011001 -(3)-> 00111011
149 1645676
>>45673
oткуда oдна единица взялась не пoнял?
150 1645677
>>45673
Написал бы нормальными цифрами, там всё равно просят инт.
151 1645678
>>45677
да нет пусть в двoичнoм пишет, так удoбнее мне, я тoлькo всё равнo нихуя задания не пoнял.
152 1645683
>>45676
Она прокрутилась насквозь
abcdefgh -(5)->defghabc
153 1645685
>>45683
а пoнял, всё спасибo бoльшoе.
154 1645740
>>45683
x = x >> n | x << (sizeof(x) * 8 - n);

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

Кстати, а Столярова тут рекомендуют?
156 1645832
>>45820
По описанию неплохо. Кто-то уже читал?
157 1645852
>>45832

>Кто-то уже читал?


Зочем? Мы все уже знаем
158 1645934
>>45663
Ты опять выходишь на связь? Найди уже в интернете русскую версию
159 1645963
>>45673
Но это строка, а в задаче сказано integer.
160 1645968
>>34080 (OP)
Подскажите пожалуйста...
Как можно обратимо, закодировать массив байт в масив 7-ми битных значений, и наоборот - декодировать в байты?
161 1645972
>>45968

>SevenBits = byte & 127; //даёт 7 последних бит.


>FirstBit = byte >> 7; //даёт старший бит.


А дальше, что хочешь там, то и делаешь с ними. Можешь выебать их шлангом, потому что CLang.
162 1645974
>>45972
Так а... С массивом-то как ёпты, бля? А если у него ещё и произвольная длина?
163 1645977
>>45963
Жирно.
164 1645978
>>45968
Ты спрашиваешь, как можно закодировать 8 бит в 7, чтобы оно потом обратно в 8 бит раскодировалось?
165 1645983
>>45978
Не совсем так.
Пусть есть массив байт:
[10101010, 01010101, 00000000, 11111111]
надо получить массив, вроде:
[1010101, 0010101, 01000000, 0011111, 111] или типа того,
а потом раскодировать обратно.

Основная задача - представить байтовый массив в виде строки,
состоящей исключительно из символов 7-ми битного ASCII,
а для этого, надо получить массив этих 7-ми битных значений.
Но сделать это надо так, чтобы потом из него, из этого массива,
было возможным получить назад эти байты, ебучие.
Причём в виде - первозданном, а не непохеренном всякими кракозбликами,
наподобие https://ru.wikipedia.org/wiki/Заменяющий_символ
166 1645986
>>45983
Это все равно не будет работать, без какого нибудь base64
167 1646013
>>45986
Ну почему же? Каждый ASCII-символ можно представить 7-ю битами, согласно таблице ASCII:
https://ru.wikipedia.org/wiki/ASCII#ASCII_Table

>>1645988


Вот, нашёл какой-то код на JavaScript, для разрезания байтового массива на произвольное количество бит.
https://stackoverflow.com/a/8133543
Но там биты в виде строк, а надо чтобы числа были.
Может поможет как-то намалякать годноту, а то я уже заебался... Хз.
168 1646014
>>46013
Дебажу расшифровку, не очкуй.
169 1646015
>>45968
boost::transform_width

Обычно используется для кодирования в base64, но и под случай пойдет https://stackoverflow.com/questions/7053538/how-do-i-encode-a-string-to-base64-using-only-boost
170 1646026
>>46013
https://ideone.com/gbo25F
Котороче, так и не смог понять, как хорошо задать размер второму массиву. Реквестирую помощь анона в этом вопросе. В остальном работает, хоть и коряво.
171 1646030
>>46026
Слышь, пехотинец, ты так забегался со своими калашами на море,
что аж немного рамсы попутал и затёр не по теме ваще, да ещё и не по масти.
За такое, даже в пехоте пёрышком чикают, в ты чё ваще не курсах?
Реквест изначальный же, был о том, как массивы байтовые передёрнуть,
и этот вот >>46015, вроде что-то знает.
Только вот на JavaScript эту хреновину не пришпандорить -
слишком сложный синтаксис, и пунктуация, да.
172 1646035
>>46030
Чиво? Был массив восьмибитных чаров, стал массив восьмибитных чаров, где первый бит ничего не значит и всегда 0. То есть значения семибитные.
173 1646039
>>46013

>Но там биты в виде строк, а надо чтобы числа были.


Так быть не может. Числа все фиксированной длины, не меньше 8 бит, так что тебе придется вместе с числом хранить его настоящий размер в битах. Для строк такое не нужно, потому что строки могут быть любой длины и уже включают в себя размер.
174 1646040
>>46039
Есть мнение, что он не понимает, что такое разбиение.
175 1646098
>>46040

>Чиво? Был массив восьмибитных чаров, стал массив восьмибитных чаров,


>где первый бит ничего не значит и всегда 0. То есть значения семибитные.


Хм, ну я же просил массив с int, или byte, а не char'ы.
Да, я вижу - семибитные коды у них, но как их оттуда вытащить в массив?
И вообще, я же хочу на JavaScript этот алго,
а у тебя там вот такое вот:

>buffer |= *foo;



>Есть мнение, что он не понимает, что такое разбиение.


Слышь ты, умник?! Хуле тут понимать-то, а? Про понятия решил мне растереть, да?
Берётся короче еблет и разбивается в мясо, по-бырому - вот и всё разбиение.
176 1646140
>>46013
Потому что у него нигде не сказано что на входе только ascii символы
Если на входе только ascii символы то там вообще ничего делать не надо
for(int i =0; i<size; i++) out=inp&0x7f;
А если резать по обычному то там может получиться такое
11111110 00000011 11111111 -> 1111111 00000000 11111111... т.е. NULL-байт в поток
177 1646148
Аnyaны, а насколько через Си удобно работать с PostrgeSQL? Или лучше для этого выбрать скриптовый язык?
178 1646149
>>45934
я и русскую имею, тoже ничегo там не пoнял.
179 1646154
>>46140
Вообще-то, было сказано, что на входе - байты, это массив байт, со значениями от 0 до 255 (8 бит).
На выходе же - должны бы быть тоже массив, тоже байты, но имеющие значение от 0 до 127.
И их должно бы быть чутка побольше.
Я не знаю как в Си, и это вопрос скорее по алгоритмам, вцелом,
и я решил задать его в треде по Си,
так как считаю, что вы больше разбираетесь в этих вот битовых операторах,
и прочих низкоуровневых операциях.

Тот факт, что массиве из байт - может быть нулевой байт,
в JavaScript, вовсе не значит что это конец строки.
Я вот, просто для прикола, открыл консоль браузера (клавиша F12),
и вписал туда это:

>console.log('NULL_BYTE1:\0NULL_BYTE2:\0NULL_BYTE3:\0);


и вижу длинную строчку.

Короче, надо бы как-то наварганить, обратимый алгоритм,
получения именно байт причём произвольной, заданной битности.
В данном случае - битность 7, значит массив содержит 7-ми битные значения, или 6-ти битные, 1 битные...
Как в вон том JavaScript'e, только цифрами байты в массиве, и обратимо чтобы.
1511774489276.png51 Кб, 851x689
180 1646157
>>46154
А причем тут javascript если это тред по C?
А вообще задача элементарная, вот накидал неоптимизированный вариант, для последнего байта проверку надо отдельно делать чтобы не вылезать за границу массива но мне лень.
181 1646277
>>46098

>Хм, ну я же просил массив с int, или byte, а не char'ы.


char это и есть байт, потому что состоит из восьми бит.

>Да, я вижу - семибитные коды у них, но как их оттуда вытащить в массив?


Они уже в массиве ciphered. Я же даже напечатал его для тебя между раскодированными текстами.

>И вообще, я же хочу на JavaScript этот алго,


А он умеет работать с отдельными битами?

>а у тебя там вот такое вот:


>>buffer |= *foo;


это и есть работа с битами. Или ты планируешь получить биты, не зная ничего бит?

>вот и всё разбиение


Ну ты и фантазёр, конечно.
182 1646279
>>46140

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


>11111110 00000011 11111111 -> 1111111 00000000 11111111... т.е. NULL-байт в поток


Это ничего страшного, если работать с этим как с массивом, то ты знаешь его размер, а эти байты вполне нормально расшифровываются.
183 1646323
>>46277

>char это и есть байт, потому что состоит из восьми бит.



Вывод верный, но объяснение неправильное. В стандарте нет гарнтии, что сhar состоит из восьми бит. В нём не менее восьми бит. Так же, гарантируется, что размер char-a - один байт, вернее, формально, что sizeof возращает 1 на char и всех его квалифицированных вариантах.
184 1646334
>>45820
Видал, но как-то дорохо... Добавил в закладки, скачаю через пару месяцев.
185 1646337
>>46323

>В стандарте нет гарнтии, что сhar состоит из восьми бит.


Дело в том, что для того кода нет разницы, какой конкретно формат будет из восьми бит. Я просто ответил, что в том коде char — это байт фактически.
186 1646359
>>46279
Это нестрашно, если ты работаешь и с тем и с тем сам, но если это передается где-то по сети, оно может случайно пройти через какой нибудь прокси сервер, который посчитает что это 0-terminated строка. Маловероятно, конечно, но base64 именно для того и придумали.
187 1646367
Аноны. Помогите мне пожалуйста. Нужно сделать лабу по системному программированию под linux на Си.
Вроде бы написал (хотя я пока только из одного текстового файла читаю, который щадаю в самом коде а не во время вызова исполняемого кода, но это я потом легко исправлю).
Условие и код здесь по ссылке ideone.com/h3ed25
Скорее всего я где-то облажался, но нк понимаю где, объясните как исправить, анончики. Надеюсь на вас.
188 1646369
Есть ли в си что-нибудь встроенное для работы с ssh? Или у плюсов?
189 1646384
>>46367
Ну ты форкнуть-то форкнул, но почему у тебя оба процесса одним и тем же занимаются?
190 1646387
>>46367
Делать за тебя я, конечно, не буду, хотя это быстрее, чем писать этот пост. Но код производит впечатление, что ты решаешь задачу методом тыка. После fork() у тебя запущены две одинаковые программы, но запущены не сначала, а с этого места. И каждая программа изнутри должна узнать, какая она из двух. Про это тебе должен был рассказать return форка, но тебе на него, почему-то, похуй. На самом деле, все просто, но иногда с концептуально новой идеей надо переспать. Именно поэтому весьма хуево запускать хвосты по учебе и компенсировать регулярность занятий интенсивностью за день до дедлайна. Документация в помощь, анон.
191 1646389
>>34080 (OP)
Это пони-тред? Расскажите, надо ли добавлять .git/ в .gitignore? Оно вроде так уже автомагически работает, но я нигде не могу найти, где это в документации написано.
192 1646391
>>46367
Ээээ блядь, да у тебя и char указатель, ну в пизду. Я вон вообще про двач узнал спустя год с небольшим, как в Сишку вкатился. Нехуй на форуме делать с такими элементарными вопросами.
Screenshot from 2020-03-30 19-24-27.png14 Кб, 528x272
193 1646399
>>46367
Тестировать, конечно, не буду. Разбирайся.
194 1646402
»1646384
Вот я тоже как раз подумал что дело в этом. Проблема в том что я не знаю как сделать так чтобы процессы занимались разными задачами в одной программе.
»1646387

>Но код производит впечатление, что ты решаешь задачу методом тыка.


Именно это я в общем-то и делаю.

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


На лекциях лектор нам вообще ничего не объяснял про системные вызовы. >Документация в помощь, анон.
Да читал я документацию по fork и все равно не понял как сделать так чтобы разные процессы решали разные задачи а не одну и ту же вместе.
195 1646403
>>46402
Разметку проебал
>>46384
Вот я тоже как раз подумал что дело в этом. Проблема в том что я не знаю как сделать так чтобы процессы занимались разными задачами в одной программе.
>>46387

>Но код производит впечатление, что ты решаешь задачу методом тыка.


Именно это я в общем-то и делаю.

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


На лекциях лектор нам вообще ничего не объяснял про системные вызовы. >Документация в помощь, анон.
Да читал я документацию по fork и все равно не понял как сделать так чтобы разные процессы решали разные задачи а не одну и ту же вместе.
196 1646404
>>46402
И че, так и не понял, что первая программа получается pid второй, а вторая - 0?
197 1646405
>>46403

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


Читай. Это довольно просто.
198 1646407
>>46391
Функция read вторым элементом принимает указатель, на буфер. В данром случае чтение побайтовое, поэтому я объявил указател на char, а не char. За жоементарные ошибки мне и самому неловко, но лаба горит.
>>46399
Спасибо, анон.
199 1646409
>>46407

>элементарные ошибки


лол, системное программирование без умения в указатели
200 1646414
>>46409
Я тебе уже объяснил почему там указатель.
201 1646415
>>46414
Спасибо. Осталось объяснить, куда он указывает, и почему ниже у тебя указатель на указатель.
202 1646436
>>46415
Ты прав, это была моя ошибка.
Capture.PNG1 Кб, 354x35
203 1647363
реальнo ли не испoльзoвать двoетoчие в этoм выражении? мне прoстo не нужнo else, т.к. если услoвие не выпoлняется тo не нужнo ничегo делать.
204 1647377
>>47363
(cond) ? s += 32 переписываем как (cond) ? s += 32 * cond
205 1647379
>>47377

>(cond) ? s += 32 переписываем как (cond) ? s += 32 cond



fix
(cond) ? s += 32 переписываем как s += 32
(cond)
206 1647380
>>47363
s += (...) ? 32 : 0;
207 1647385
>>47363
Нет. Тернарный оператор на то и тернарный, что ему нужно 3 операнда.
Capture.PNG3 Кб, 676x41
208 1647392
209 1647395
>>47392
Не уверен сходу, что умножение быстрее сравнения.
210 1647399
>>47395
сравнение это брэнч, его надо предсказывать всегда, а с умножением линейный код, на гпу в шедерах используется такая техника убирание брэнчей нопремер

>>47392
блет надо было += а не *=
211 1647404
>>47399

>на гпу в шедерах используется такая техника


Потому что умножение, это то, что гпу делает хорошо. Как на тракторе быстрее через поле грязи проехать, а на легковушке в объезд.
212 1647407
>>47385
спасибo пoнял.
213 1647455
>>47385
А чтo рекoмендуешь в такoм случае испoльзoвать в качестве заглушки? прoстo задача из k&r требует именнo такoй метoд.
214 1647471
>>47455
Ты даун? Тебе уже 3 варианта расписали.
215 1647498
Нужна помощь не по к&р.

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

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

Объясните, пожалуйста.
https://ideone.com/OcqfBO
216 1647504
>>47498
ЯННП, но для начала я не вижу у тебя fflush(stdout), а это основная причина "не выводится".
217 1647506
>>47504
Куда его? В чайлда?
image.png74 Кб, 679x495
218 1647517
>>47504
Нет, в чайлда не помогло, ни в одну из этих позиций (в родителя тоже).

А что не понятно? Это, я так понял, стандартный метод по перехвату дескрипторов, если я что-то странное написал, давай поясню.
219 1647522
>>47506
Чайлд пишет в стдаут, он буферизируется (не попадает в файловый дескриптор), ты запускаешь эхо, он пишет в файловый дескриптор. Тем временем ты читаешь из файлового дескриптора. Где нужно сбросить буфер, чтобы операции вывода в файловый дескриптор попали в правильном порядке? Правильно, перед тем, как ты будешь писать напрямую в дескриптор, т.е., прямо перед execv.
Screenshot20200331205058.png62 Кб, 669x513
220 1647535
>>47522
Спасибо, анон, за помошь и объяснение. Я думал, что dup2() заменяет stdout и того уже нет, так что писать можно только в переданный пайп.
221 1647638
>>47471
дауны, вы. мне нужно такое выражение (условие) ? 1 вариант : 2 вариант. а не ваша хуита переделанная.
222 1647639
Что значит спецификатор %6d в printf? что делает шестёрка?
изображение.png1,7 Мб, 1320x909
223 1647643
224 1647644
>>47643
Не пoнял.
225 1647651
>>47643
Это d6 а не 6d
Capture.PNG21 Кб, 798x146
226 1647656
>>47651
этo из книги k&r я взял
227 1647662
>>47656
этo выравнивнивание врoде. типа oтступ слева на 6 симвoлoв.
нутыпoнел
изображение.png31 Кб, 1430x301
228 1647668
>>47656
Взял бы и сам проверил, хули ты как маленький.
229 1647671
>>47668
да лень. вы тут сразу oтвечаете. а так самoму кoпаться нужнo и время тратить.
230 1647686
https://github.com/ilovetostudyit/de-library/blob/master/ft_memmove.c

что происходит в 27-й строчке, зачем это?
231 1647690
>>47686
уйди пожалуйста
232 1647724
>>47686

> что происходит в 27-й строчке


Undefined behavior. Да, если следовать стандарту, на сишке нельзя написать стандартную либу для сишки. Живи с этим.
233 1647732
>>47686
В смысле зачем? Ты минус от плюса не отличаешь?
234 1647810
Простите за глупый вопрос, но сколько файловых дескрипторов должно быть у программы? Я вот сделал простейшую
printf("%d\n", getpid());
sleep(40);
и у неё зачем-то 60 файловых дескрипторов. Откуда?
235 1647838
>>47724

>Undefined behavior.



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

Перечитай ещё раз стандарт. Для char'а есть куча исключений: любой валидный указатель кастится в валидный указатель на char. Более того, к области памяти можно обращатьcя не только по её эффективному типу, но и по указателю на char.
236 1647839
>>47838
Плюс, сравнение указателей гарантированно даёт предсказуемый результат, если это указатели на части одного массива.
237 1647855
>>47839
Вот только это не части одного массива.
238 1647870
>>47724
А в чём заключается неопределенность? Адресное пространство процесса же сквозное, так что сравнивать адреса можно.
Capture.PNG12 Кб, 633x347
240 1648112
анoны, пoясните за эту функцию из книжки мoлю. oна у меня oшибку бьёт, т.к. там индекс же вo время вычисления станoвится дрoбью десятичнoй.
241 1648115
>>48112
Нет, он округляется вниз к целому типу.
242 1648116
>>48115
а да я уже дoдумал, чтo там же тип int, хм. тoгда надo пoдумать пoчему функция не рабoтает.
243 1648118
>>48116
Мб high-1 ?
244 1648120
>>48118
Т.е. high=mid-1
245 1648121
>>48120
там нет такoй стрoчки.
1585753614317.png194 Кб, 1080x1920
246 1648122
247 1648123
>>48122
АХУЕТЬ В КНИГИ КЕРНИНГАНА И РИТЧИ OПЕЧАТКА.
248 1648124
>>48122
всё равнo функция не рабoтает.
249 1648243
>>48112
ошибка в v[mid] не извлекается элемент из списка поэтому и ошибка. а почему я не знаю. попробую разобраться
250 1648252
>>37424
Я 8 месяцев уже учу и вообще ещё мало что выучил. Чому я такой тупой?
251 1648254
>>48252
По какой книге ты его учишь?
252 1648260
>>48254
Прата. Язык Си, лекции и упражнения
253 1648261
>>48260
Сколько в книге страниц и на какой странице ты сейчас? Я по k&r с 10-го января где-то учусь, в данный момент на 53 странице где-то.
254 1648263
>>48261
На 309-й, 960
255 1648264
>>48263
Ну это нормально, книга техническая сложная с задачами и длинная.
256 1648313
GTK гуи нормально под виндой будет работать?
257 1648324
>>48313
Да, но глаза будут вытекать.
258 1648356
>>48324
что посоветуешь для окон для си? какой гуи?
259 1648357
>>48356
win api
261 1648373
>>48356
>>48313
WinApi используй. Самое лучшее будет.
262 1648383
>>47810
Могли бы и сказать, что среда запуска может накидать за щеку дескрипторов. Это электрон шрифты всякие навтыкал, и ручек к разделяемой памяти.
263 1648476
>>45968

>Как можно обратимо, закодировать массив байт в масив 7-ми битных значений, и наоборот - декодировать в байты?


>>45972

>SevenBits = byte & 127; //даёт 7 последних бит.


>FirstBit = byte >> 7; //даёт старший бит.


>>45974

>Так а... С массивом-то как ёпты, бля? А если у него ещё и произвольная длина?


>>45978

>Ты спрашиваешь, как можно закодировать 8 бит в 7, чтобы оно потом обратно в 8 бит раскодировалось?


>>45983

>многабукафф


>>45986

>Ложь, пиздёж и провокация.


>>46013

>Вот этого, гляжу, не объебёшь.


>>46014

>Дебажу расшифровку, не очкуй.


>>46015

>Неведомая шняга, на JS не катит.


>>46035
Да, твоя тема - нормас на си пахает.
>>46026
Код, вроде рабочий, но из-за буфера с большим int и операции '|=' портировать на JS - не получилось.
>>46039
Схулей размер ещё бит хранить, Ы?
>>46140
Там на входе - байты.
>>46157
Подобную последовательность битовых операций, примерно, я и реквестировал здесь.
>>46277
Мне надо было семибитные числа в массиве, а не восьмибитные. Да, в JavaScript тоже есть bitwise operators.
Только числа там ограниченное значение имеют, поэтому твой буфер не сработал.
>>46279
Хотя JavaScript'у и пофиг на нулли, но всё-же да, спецсимволы лучше убрать нафиг.
>>46323
Да, ведь байт от 0 до 127 - это тоже восьмибайтный байт, но зато - он может быть представлен одним ASCII-символом.

В общем, смарите, как я рубасы запилил: >>1648469 → (архивач: https://arhivach.ng/thread/546415/#1648469 )
Это совершенно новый, инновационный стандарт в IT-индустрии.
Можете юзать, кароч, и гонять, ксорить и конвертить эти ваши - байты. Бесплатно и без СМС. Код открытый. Добра, всем.
263 1648476
>>45968

>Как можно обратимо, закодировать массив байт в масив 7-ми битных значений, и наоборот - декодировать в байты?


>>45972

>SevenBits = byte & 127; //даёт 7 последних бит.


>FirstBit = byte >> 7; //даёт старший бит.


>>45974

>Так а... С массивом-то как ёпты, бля? А если у него ещё и произвольная длина?


>>45978

>Ты спрашиваешь, как можно закодировать 8 бит в 7, чтобы оно потом обратно в 8 бит раскодировалось?


>>45983

>многабукафф


>>45986

>Ложь, пиздёж и провокация.


>>46013

>Вот этого, гляжу, не объебёшь.


>>46014

>Дебажу расшифровку, не очкуй.


>>46015

>Неведомая шняга, на JS не катит.


>>46035
Да, твоя тема - нормас на си пахает.
>>46026
Код, вроде рабочий, но из-за буфера с большим int и операции '|=' портировать на JS - не получилось.
>>46039
Схулей размер ещё бит хранить, Ы?
>>46140
Там на входе - байты.
>>46157
Подобную последовательность битовых операций, примерно, я и реквестировал здесь.
>>46277
Мне надо было семибитные числа в массиве, а не восьмибитные. Да, в JavaScript тоже есть bitwise operators.
Только числа там ограниченное значение имеют, поэтому твой буфер не сработал.
>>46279
Хотя JavaScript'у и пофиг на нулли, но всё-же да, спецсимволы лучше убрать нафиг.
>>46323
Да, ведь байт от 0 до 127 - это тоже восьмибайтный байт, но зато - он может быть представлен одним ASCII-символом.

В общем, смарите, как я рубасы запилил: >>1648469 → (архивач: https://arhivach.ng/thread/546415/#1648469 )
Это совершенно новый, инновационный стандарт в IT-индустрии.
Можете юзать, кароч, и гонять, ксорить и конвертить эти ваши - байты. Бесплатно и без СМС. Код открытый. Добра, всем.
264 1648493
>>48476
Рубасы! Рубасы! Да это же новый стандарт в сфере мультипарадигмального императивного метапрограммирования:
Вот код: https://jsfiddle.net/bxLj7h61/1/
265 1648661
1
266 1648675
>>48372

> nuklear


Это не UI, это высер, пригодный, чтобы в игорях настройки в рантайме подправлять.
267 1648711
>>48476

>байт от 0 до 127 - это тоже восьмибайтный байт


Двач на острие науки.
268 1648967
>>48675
Какой эталонный шизодебил, нафантазировал себе бреда и купается в нем. По любому пердоля линуксоидная, они как раз такие обычно, туппппые как баррраны и такие же упертые необучаемые.
269 1648981
>>48711

>Хэххэх, восьмибитный, конечно же.

270 1649058
Сколько бит в байте, пацаны?
272 1649129
>>48476

>0 до 127 - это тоже восьмибайтный байт, но зато - он может быть представлен одним ASCII-символом.


Если не нужна кирилица.
273 1649132
>>48981
>>48981
Семибитный. 127 это 7 битов.
274 1649519
>>49132

>Байтом он быть не перестаёт, а байт - это 8 бит.


>>49129

>Если не нужна кирилица.


Там RUBase128, кириллица используется чтобы сделать символы печатными, как в base64.
Удивительным образом, вся кириллица с латинницей плюс цифры - впихивается в 128 символов.
Таблица символов ASCII же, содержит в себе спецсимволы,
которые не дают строке отображаться, из-за чего строка не может быть скопирована, после кодирования.
Например, вот этот самый NULL-байт посреди строчки - дико выбешивает, так как означает конец строки.
C RUBase128 всей этой хуйни нет, но там нужна конвертация из 8-ми битных байт в 7-ми битные,
над чем пришлось ебать как подзаморочиться.
А RUBase256 вообще кодирует все 256 байт, безо всяких выебонов,
только вот длина данных чуть больше в самих этих байтах, просто по причине того,
что символы берутся из Unicode, и кодируются более чем одним байтом, ну и пофиг.
1281842075890.jpg6 Кб, 200x160
275 1649543
>>34080 (OP)
Зачем нужен с, если есть с++?
276 1649552
>>49543
с++ разворачивается в довольно непредсказуемые портянки машинного кода
это может быть черезчур для какого нибудь микроконтроллера
277 1649632
>>49543
Чтобы компилятор для с++ на ассемблере не писать.
278 1649679
>>49543

>Зачем нужен с, если есть с++?



Потому что не всем нравится feature creep язык программирования
279 1649705
>>49543
Поддерживать легаси, например ядро линукса.
280 1649706
>>49552
Под микроконтролле пишут даже на питоне, а на крестах и подавно. Сишка нахуй не нужна.
281 1649755
>>49706
Это уже не микро значит.
282 1649776
>>49543
Современный C написан на С++ ради 10% производительности на максимально низких (для высокоуровневых языков) системных программ
283 1649831
>>49543
Для него легче написать компилятор
284 1649934
>>49755

>ваше микро не микро, яскозал



https://micropython.org/

>Python for microcontrollers

image.png10 Кб, 988x51
285 1649937
S00404-13213789.jpg94 Кб, 1184x449
286 1649947
Объясните, почему

> pt = &ar1[0]


можно, а

> pt = ar1


нельзя
287 1650010
>>49543
Во-первых, чтобы поддерживать проекты, которым уже по хуй знает сколько лет.
Во-вторых, чтобы учить нюфагов. В плюсах куча высокоуровенных фич (ссылки, RAII, наследование, смартпоинтеры, стдлиб где уже есть все структуры данных и тд), которые скрывают происходящее под ними, а чтобы писать быстрый код нужно понимать, как там всё байтойобится прд капотом.
1581342751933.jpg4 Кб, 201x251
288 1650026
>>49934

>16k of RAM


>микро

289 1650051
>>50026
STM32F103C8Tx, до 20КБ.
Стоимость простой платки на нём 100р., стоимость чипа меньше.
290 1650096
>>50051
Только нахуй такой кастрированый питон нужен
Стикер512x512
291 1650099
>>50051

>все 16к уйдут на запуск самого пистона


>памяти на собственно приложение не останется

1504709015199897798[1].jpg47 Кб, 604x604
292 1650180
>>50099
Почему он так жрет память? В С скобочек больше и точка с запятой на каждой части команды. Наоборот же лишние знаки должны больше заполнить памяти.
293 1650203
>>49706

>Под микроконтролле пишут даже на питоне


Для быстрого прототипирования, в основном. Серьезное никто ничего не пишет, потому, что все интерпретаторы скриптовой хуйни сильно урезанные и скорости проца нехватает.

>крестах


На микроконтроллерах свои особые кресты с костылями. Это не не совсем кресты, а скорее си с классами. Тк основные крестовые фичи либо не работают, либо нахуй не нужны из-за нехватки ресурсов. А байтоёбствовать удобнее на сишечке на которой написаны большинство библиотек.
294 1650261
Можно использовать WinApi на чистой сишечке или придётся окунуться в кресты?
295 1650263
296 1650271
>>50261
Чистый именно под си и заточен. Пердоль та еще.
297 1650305
>>50099
>>50096
Я не ебу вообще, я против питуна на МК, просто этот ебанутый >>50026 пост помпезно имплаит, что Cortex-M3-grade-чипы не МК.
298 1650335
>>50305
Не парься братиш, тут половина треда не видела программируемые микрочи в жизни, не говоря уже о промышленном БМ. Так, детки из школы 21 в перерыве между перерывами попукивают свое важное мнение
299 1650338
>>50305
Тебе бы формальную логику подучить.
300 1650401
>>50338
Начни с выражения своих мыслей. Простейшая практика, никаких наук учить не надо, но творит чудеса, сразу выявляя даунов, у которых мыслей нет, но думают что есть.
301 1650703
Как передать continue из вложенного цикла в цикл выше? И возможно ли это вообще
302 1650718
>>34080 (OP)

>Brian Kernighan, Dennis Ritchie "The C Programming Language"


Откуда взять входной поток для заданий из первой главы?
303 1650722
>>50718
С клавиатуры вводи.
304 1650730
>>50703
Никак. Continue переходит к следующей итерации ТЕКУЩЕГО цикла. Тебе нужен break и флаг. Во вложеном цикле выставляешь флаг, делаешь break, во внешнем цикле проверяешь флаг и делаешь continue, потом сбросить флаг не забудь.
305 1650748
>>50703
for(...) {
for(...) {
for(...) {
if(...) goto cnt;
}
}
cnt:;
}
306 1650753
>>50703
йеп, можно

способ 1: goto
способ 2: с помощью флажка to_continue
307 1650763
>>50703
KISS
void inner_loop(...) {
...
for(...) {
if(...) return;
}
...
}
...
for (...) inner_loop(...);
308 1650961
>>50203
Не понимаю, то ли я гений (не может быть), то ли дебилов массово в пробирках штампуют. Си с классами это тоже кресты, потому что в сях классов нет. Как можно не понимать очевидного, при том что тут и других вариантов даже нет. И даже без классов кресты это кресты, потому что в любой момент если захочешь классы будут. В этом и достоинтсво, что много есть, но ничего не навязано, можно сделать как в примитивном си, так и сложные вещи, а можно что-то среднее, да как угодно. А убогая сишка в которой кроме ограничений нет ничего, это ненужный нигде мусор. Очевидно же, ведь ограничения это недостаток, а не достоинств ство.
309 1650974
>>47643
количество символов перед запятой
310 1651063
>>50961

>с классами это тоже кресты


Нет.
sage 311 1651140
Пишу свою стандартную СИ библиотеку, есть пожелания?
312 1651154
>>51140
Найти себе тян
sage 313 1651287
>>51154
Пошел нахуй хохол
314 1651421
>>50961

Проблема в том, что семантику Сишечки можно объять разумом, а сематика Си++ - это блядь просто огромное море лютого пиздеца, там нету правил, там нету даже правил с исключениями, там исключения из исключений исключений из правил. На каждый чих, на каждую блядскую фичу создано по сематической сущности, абсолютно бессистемно, в постоянной погоне за модой. Поэтому, ты можешь комфортно работать только в небольшом подножестве языка. И не надо мне, блядь, говорить про то, что мол, кококо, нормальному чуваку норм. На руках тоже можно ходить повседневно, но не факт что это признак большого ума.
315 1651457
>>51421
И? Это плохо? Каждый работает в том подмножестве, которое ему по уму. Тупой работает в области си, поумнее работает с классами, еще умнее работает с шаблонными библиотеками и так далее. Или еще лучше, начинающий как вначале, но со временем умнеет , охватывая больше, но этот процесс неограничен, учиться можно всю жизнь, настолько язык глубок. Это же буквально рай для умного человека. Да и в целом, язык, охватывающий всё для всех и каждого, это же буквально бог, божественный язык.

Так что ненравится? То, что ты не осиливаешь ВСЁ И СРАЗУ? Что нельзя написать "я знаю в совершенстве". Что от этого у тебя комплекс и боль от осознания собственного несовершенства? И поэтому ГОВНО НИГУЖНА УБЕРИТЕ ОТ МЕНЯ! Так? Так. Поздравляю, классический дебил. И даже если бы сбежишь от си плюс плюс, так что он перестанет тебе напоминать что дебил, тебе все равно об этом напомнят, я например, или другие люди. В мине все равно везде естб не дебилы и при виде такого тупого тебя они молчать не будут. От себя не убежишь.
316 1651468
>>51457

>поумнее работает с классами


И получается ебаный пиздец с логикой и иерархиями.
Мимо не любитель ООП
317 1651473
>>50961

> Не понимаю, то ли я гений


>>51457

> И? Это плохо? Каждый работает в том подмножестве, которое ему по уму. Тупой работает в области си, поумнее работает с классами, еще умнее работает с шаблонными библиотеками и так далее. Или еще лучше, начинающий как вначале, но со временем умнеет , охватывая больше, но этот процесс неограничен, учиться можно всю жизнь, настолько язык глубок. Это же буквально рай для умного человека. Да и в целом, язык, охватывающий всё для всех и каждого, это же буквально бог, божественный язык.


Вот это шизоид, вот это да! Для офигенных любителей языков и выразительности есть хаскель и теория типа tapl, но судя по твоей бредятине ты до такого не дорос. C++ постоянно накачивают разного качества фичами, тебе говорят, что для написания выразительного (и производительного) кода нужно себя сильно ограничивать в использовании языковых конструкций. И это не из-за какого-то там "ума", большинство хороших кодерков смогут прикрутить к проекту любую фичу из языка.
И учить всю жизнь можно cs, а не какой-то отдельный язык.
318 1651485
>>51473

>C++ постоянно накачивают разного качества фичами, тебе говорят, что для


Классическая безмозглая модная шлюха блондтнка.
1) Гонится за последней модой
2) Главное для ней - чужое мнение

Мань, куда ты лезешь, программирование не для такого сброда. Язык это инструмент, его используют как нужно конкретному мастеру для его задач. Не существует никакой моды и что там другие говорят себе в зеркало тоже их личное дело. Мастер использует то, что ему удобно для его дела. Своя голова, самостоятельное мышление. Тупым шлюхам не понять.
319 1651487
>>51485

>Мастер использует то, что ему удобно для его дела. Своя голова, самостоятельное мышление. Тупым шлюхам не понять.


Покажи свой гит?
1468159196920.png9 Кб, 879x225
320 1651506
321 1651510
>>49543
Это разные языки. /тхред
Развели тут хуйни на полсотни постов
322 1651565
Как следить за очисткой ресурсов на си (без эксепшенов) ? Goto? Do-while цикл? Проще конечно разделить функцию на подпрограммы, но не всегда есть возможность.
323 1651567
>>51457

> Тупой работает в области си, поумнее работает с классами, еще умнее работает с шаблонными библиотеками и так далее.


Толстота.

мимо сеньор
324 1651663
>>51485
Ты только что выдрал отдельный тезис из моего поста и зачем-то попытался подкрепить его продолжение своими убогими аналогиями. Зачем я только отвечал тебе...
Вот, цитируя полностью:

>> для написания выразительного (и производительного) кода нужно себя сильно ограничивать в использовании языковых конструкций.


У тебя видимо вообще никакого опыта разработки нет.
325 1651695
>>51485

>Тупым шлюхам не понять.


А теперь я доведу до тебя небольшое противоречие, выходящее из твоих прошлых постов, которые отлично проглядываются в треде. Комитет так же остановил эволюцию стандарта С, как и твой ебнутый "мастер", не пользующийся какой-то "модой". Плюсовые фичи в С не пролезли. Для реализации ООП, шаблонов, исключений можно использовать макросы (которые иногда и в кресты приходится тащить, хотя страуструп очень сильно старался), программистам в отрасли этого хватает. Тогда, собственно, не совсем понятны твои претензии к С как к языку.
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();
}
}
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();
}
}
327 1651708
>>51704
Ты тредом промахнулся.
328 1651710
>>51708
А куда писать, направь будь добр
329 1651711
>>51708
Нашел, уже не нужно, спасибо.
330 1651734
Анчoусы, пoясните чтo хoтят в этoй задачи. Я не пoнимаю услoвия.
331 1651736
>>51734
Ну дайте пример чтo дoлжнo пoстoпить в прoграмму и чтo дoлжнo выйдти из неё.
332 1651742
>>51734
В строке "za-d" - обозначает диапазон и должна превратиться в строку "zabcd"
333 1651743
>>51742
а пoнял. спасибo. а этo пременимo тoлькo к алфавиту или ещё и цифры нужнo сделать? или тoлькo алфавит?
334 1651746
>>51743
В задании есть пример с цифрами
335 1651753
>>51695

>Для реализации ООП, шаблонов, исключений можно использовать макросы


Проорал на весь дом.
336 1651757
>>51695
Можно не нести шизобред, если нужно ООП, шаблоны, исключения, берешь и используешь их, а если не нужны не используешь. С++ позволяет всё, делай что хочешь как хочешь без ограничений.

С же это поледка для компашки шизиков разработчиков ядра линукс. Примерно как Git, только гит оказался полезным и за пределами шизокружка, а си нет, ведь уже есть то же самое, но с плюсами.
337 1651758
>>51757
Я вот пишу только на питоне, там всё есть.
338 1651761
Пиздец, мне одному в последний год стало мерзко даже читать хуйню что тут пишут, но я все равно сюда захожу и ахуеваю с того что у этих студентишек в головах?
339 1651765
>>51761
Так ты не корми, и их не будет.
340 1651767
>>49543

>Зачем нужен с


Чтобы были уязвимости с переполнением буффера, очевидно, это выгодно мировой закулисе.
341 1651770
>>51746
спасибo пoнял.

>>51761
я здесь с 10-гo января где-тo. захoтел научиться писать на с++. сперва выучил oбщие oснoвы пoгрoмирoвания на базе питoн. пoтoм пришёл сюда и начал k&r книгу делать. щас на 56-й странице в данный мoмент. терпи, книгу прoйду и уйду из треда в с++ страуструпа делать
342 1651774
>>51770
Чё? Я не про ньюфагов которые задают шизовопросы уровня анон почему це це или что такое баит, а про шидерьмо вроде поста через один наверх от того на который ты ответил
343 1651776
>>51774
А пoнял ты прo питoниста тoгo. Думал прoстo чтo вас ньюфани заебали.
344 1651814
>>51753
>>51757
Скажи мне, гений, что произойдет/ты будешь делать если у тебя в обработчике сигнала внутри многопоточного сетевого софта развалится, например, тобою обожаемый оператор new?
345 1651841
>>51814
Я, хотя бы, смогу локализовать место ошибки, пока ты разматываешь дефайны...
346 1651853
>>51814
А если у тебя там развалится malloc?
347 1651859
>>51841
Ты не увиливай, а четко мне укажи каким инструментом языка ты эту ситуацию "локализуешь" и в какой подпрограмме/функции какого процесса.
А еще я не знаю про какие дефайны ты там говорил, попробуй примерно указать конструкцию, которую они оборачивают в коде.
348 1651860
>>51859

>А еще я не знаю про какие дефайны ты там говорил,


>Для реализации ООП, шаблонов, исключений можно использовать макросы


>не увиливай


Ясно.
349 1651862
>>51859
Какую "ситуацию"? Что такое "развалится оператор new?" Плашка памяти выпадет из слота?
350 1651866
как бoлее лучше эти скoбки ставить-тo

int main(void) {
return 0;
}

или

int main(void)
{
return 0;
}

в книге k&r первый вариант демoнстрируют пoстoяннo
351 1651870
>>51866
В наше время первое.
352 1651872
>>51866
Это книга, а у тебя экран. Много бумаги сэкономишь, если лишнюю строку не добавишь?
353 1651874
>>51862
Оператор new не справился с задачей и выдал std::bad_alloc. В обработчике обработать ошибочную ситуацию невозможно (как всегда, хехе).

Дефайны мне тут никакие не приплетай, они здесь не нужны. Про аллокаторы можешь меня тоже не спрашивать, я тебе могу хоть mmap в оператор завернуть, это не имеет разницы.
354 1651885
>>51874

>Дефайны мне тут никакие не приплетай


>сам приплетает


>Для реализации ООП, шаблонов, исключений можно использовать макросы


Понятно.
355 1651894
>>51885
Еще раз, товарищ зеленый, здесь нет никаких ооп и шаблонов, никаких дефайнов и языка Си. Я поставил вам вопрос:

>>в обработчике сигнала внутри многопоточного сетевого софта присутствовал оператор new, он выдал std::bad_alloc


Вопрос стоит только в рамках языка C++. Мне очень, очень интересно, как бы вы средствами языка локализовали и обработали эту ошибку.
356 1652014
>>51814

>здесь нет языка Си


Зачем тогда срешь в треде си. Срут не от большого ума, катись обратно откуда вылез, даун.
357 1652031
>>52014
Ты не мне такой вопрос задавай, а шизику, который решил здесь устроить очень содержательное сравнение крестов и сей. Условие я дописал к посту чтобы он окончательно обосрался и больше ничего сюда не писал. И, как ожидалось, его уже давно не видно.
Завершение процесса или передача управления из обрабочика сигнала - вопрос общий для двух языков. Просто реализация исключений (в т.ч. в виде C-макросов или C++) не позволяет им выбрасываться из обработчика сигнала.
358 1652034
>>51894

>товарищ зеленый


Тут только ты

>здесь нет никаких ооп и шаблонов, никаких дефайнов


Вот же >>51695

>Для реализации ООП, шаблонов, исключений можно использовать макросы


>Вопрос стоит только в рамках языка C++


Ты ошибся тредом.

>Мне очень, очень интересно, как бы вы средствами языка локализовали


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

>И, как ожидалось, его уже давно не видно.


Потому что у меня есть чем развлечься вечером и без твоей тупости.
359 1652120
>>52034

>>никто не писал "только средствами языка"


Я тебе прямо такой вопрос задал дважды. Ты ничего не можешь ответить.
360 1652279
>>51874
А как обработать возврат NULL malloc'ом? И так и так падаем.
361 1652336
>>52279

>А как обработать возврат NULL malloc'ом? И так и так падаем.



Самое простое - крашнуть прогу. Если не крашнуть самому - могут начаться злодейства.
Если чуть поумнее, то можно созранить состояние проги, не используя дополнительного выделения памяти (и опять же крашнуться после).
Если у тебя какой-то хитрый алгоритм, который адаптивно жрёт дохуя памяти, можешь это просто использовать как сигнал пойти по пути меньшего пожирания этой самой памяти
.
Не обрабатывать ошибки выделения памяти (да и ошибки вообще) - признак долбоёба.
362 1652342
>>52336
Правильно, но я указывал что эта злодейская ошибка случилась с malloc (new) внутри обработчика сигнала.
>>52279
Была бы данная ошибка внутри обычной процедуры - можно было бы откатить все действия процедуры назад и вернуться с кодом ошибки. Но она произошла не в процедуре, а в другом контексте. Из этого выходит что эксепшен нельзя выкинуть из обработчика, он не попадет ни в один catch и терминирует программу. Ну и получается нам нужно (в условиях текущего стандарта c++) эксепшен ловить на месте и лезть в древние posix_c siglongjmp/setcontext чтобы сменить контекст вручную. Или лезть в boost.asio, где уже разработали нужные оберточки, с тем же успехом прикручиваются нужные интерфейсы в виде библиотек к сям.

И вот как-то так выходит, что еще надо на data layout обратить внимание, с сишным api поработать, какую-то часть стандартной библиотеки переписать, поработать с легаси. И так в некоторых проектах проектах мы просто приходим к си, где язык дополняют либы и container_of.
363 1652417
>>52342
Пердолепроблемы.
364 1652513
>>52417
Мнение студента с опытом из laba1, laba2
365 1652531
>>51565
Бамп.
366 1652599
>>34080 (OP)
Подскажите, какая разница между языками D и C? Вот прям пример на одном, пример на другом. Везде одни словеса пространные, и я ничего не понимаю. Это если вообще найти возможно - назвали же ёпанавашу 1 буквой.
367 1652701
>>51565
А зачем эксепшены? Делаешь cleanup процедуры, чистые данные помечаешь как NULL.
369 1653137
Что можно почитать про создание парсеров?
370 1653166
>>53137
https://2ch.hk/vn/res/366830.html (М)
Тут спрашивай.
Screenshot1.png166 Кб, 1103x583
371 1653266
лаб1
Значение некорректно из-за преобразования char в float, но когда я пробую получать в float значение пишет что определенно слишком типов, как мне получить нужное значение в клавиатуры чтобы функция работала корректно?
372 1653281
>>53266
getchar() получает символы, при чём по одному. Число 546 — это 3 символа, например. Тебе, видимо, хочется функцию scanf().
Screenshot2.png196 Кб, 1451x623
373 1653290
>>53281
Я уже пытался ее прикрутить, но так и не понял как ее правильно прикрутить, покажи пожалуйста
374 1653293
>>53290
scanf("%f", &c);
Screenshot3.png41 Кб, 948x665
375 1653301
>>53293
"&" я так понимаю это ссылка на участок в памяти где хранится переменная или что это? Почему без нее не работает и как это правильно использовать? В примере я ничего подобного не видел
Таки работает, большое спасибо, если бы не ты, я бы долго пердолился
376 1653303
>>53301

>В примере я ничего подобного не видел


Потому что char str1[20] означает, что str1

>это ссылка на участок в памяти где хранится


массив из 20 чаров.

>как это правильно использовать?


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

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


Ок, так и сделаю
378 1653540
>>53303

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



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

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

Хорошо, что Rust и прочие языки ведут свое победное шествие и отправят вас на свалку истории
image.png177 Кб, 1920x1030
379 1653573
Я, конечно, дебил, но все же - откуда эти ворнинги? Что не так?
Бля, Шарп слишком сложный, продолжаю прототипировать на Си
380 1653577
>>53573
Ну там же четко написано - ты не указал тип в 15 строке.
381 1653580
>>53577
Все. Совсем в шары долблюсь. Забыл указать возвращаемый тип. Спасибо.
382 1653777
>>53573

>childrens


эээээ бля в проге без английского никуда...
383 1653812
>>53777
Да кого вообще волнует название переменных в очередном мертворожденном прототипе проекта, который я никогда не доведу до конца, так как программист как из говна пуля?
384 1653985
>>53812
Ну это просто такой показатель знания тобой языка и твоего отношения к программированию. Нормальный человек так не напишет.
385 1653989
>>53985
Вроде нигде не заявлял, что знаю язык уровнем выше чем "читаю технический текст". В голове всплыло children вместо child - использую.
386 1654007
>>53985
Всегда пишу childs, замечательно отношусь к программированию, на пиндосов похуй.
387 1655108
Почему чтобы скомпилировать программу под разные платформы нужно заниматься какой-то херней, а не нажать две кнопки?
Допустим есть программа hello world SDL2. Сам SDL кроссплатформенный, есть костыль-компилятор mingw с прослойкой для запуска этого дела под шиндовс, но для его работы все равно нужен отдельный пакет специально заточенный под mingw. Разве там не те же исходные тексты что и под линупс? Почему он не может взять include просто из линукса?

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

полный нубас
388 1655214
>>55108

> Разве там не те же исходные тексты что и под линупс


Берешь те же тексты, mingw, configure, make, все дела, но это долго. А готовый пакет ты распаковал куда-нибудь, cc mygovnokod.c -Lmysdl2path -Imysdl2path -lSDL2 и все. Или даже без -L/I, если положишь в правильные директории.
389 1655245
>>55108
SDL это библиотека, библиотека это тоже программа, программы распространяются в бинарниках, а не исходном коде. Бинарники разные на разных системах, и не только windows, они и на каждом линуксе разные. В пакете находятся бинарники, поэтому пакеты везде разные, не только относящиеся к mingw.

>совместимость должен обеспечить mingw. Не?


Не. Разные системы разные, совместимости нет нигде, это прорагандистские бредни для идиотов. Точнее, есть только в windows обратная совместимость (старые программы работают на новых виндах), но не наоборот. На других системах кроме винды и такого нет, там вообще полное отсутствие совместимости.
390 1655262
>>55214
Я знаю что в линуксе все пакетами и я хочу в два клика собрать и под винду и под линукс из линукса. Под линукс он собирает естественно нормально, но для 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

391 1655265
>>55262
Таскай все эти .dll с собой в одной папке, а компилятору пусть скажет cmake.
392 1655301
>>55262

>Я просто хотел чтобы как в python pip


Питон и пхп это веб-скрипты, они не имеют платформы и вообще не программы, а скрипты. А на си пишутся программы, а программа это такая штука, которая под платформу написана. Отсюда натуральный вывод: мультиплатформенных программ не существует, что означает, любому хуесосу с кукареками про "мультиплатформенность" в треде языка си нужно пиздовать нахуй отсюда. Не туда зашел, петушок.
393 1655303
>>55301

>Питон и пхп это веб-скрипты, они не имеют платформы и вообще не программы, а скрипты.


К чему имеет биндинги (qt, sdl2) оно подсасывает само.
394 1655306
>>55303
Твой набор слов не имеет смысла, бредятина. Не понимаешь разницу между программой и скриптом и мелешь чушь как результат. Иди нахуй, сначала обучись элементарной компьютерной грамотности, а потом приходи. Здесь тред си, а не обучения чайников основам компьютерной грамотности.
395 1655314
>>55306

>Твой набор слов не имеет смысла, бредятина.


Это ты даун. В питон если сделать pip install мне не надо отдельно качать SDL чтобы pySDL2 заработал.

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

>а программа это такая штука, которая под платформу написана. Отсюда натуральный вывод: мультиплатформенных программ не существует


Говорилось очевидно про сам исходный код и ты это знаешь, токсик. Через какие костыли оно будет собираться мне не важно. Мне важно чтобы все пакеты нужные для этого были доступны в два клика, как это сделано в менеджере пакетов для cygwin например.
Даже в арче есть костыли чтобы это не искать в отличии от debian'а. Я сетовал на то что даже в python с pip install есть такой функционал и он качает в том числе бинарники, не надо искать ничего, могли бы в рамках mingw реализовать подобное.
396 1655347
>>55314
Терминальный необучаемый дебил, как и ожидалось от веб-макаки. Нельзя лезть в алгебру не зная арифметики. В школе не зря учат последовательно, снизу вверх. Но как только кончается школа, дебилы радостно лезут сразу в дебри, не понимая элементарных основ, ведь больше нет няньки в лице государственной принудительной системы образования, а сами за себя сообразить своими куцыми мозгами не могут.
yarlyk[1].jpg4 Кб, 250x278
397 1655417
Указатели - это перемененные которые являются "ярлыками" для других переменных? Зачем они нужны?
398 1655426
>>55417
А вот, например, надо в функцию передать строку или структуру. Можно конечно всю строку в стек запихнуть (нет), а можно просто указатель передать на начало строки.
399 1655499
>>55301
Си это как раз переносимый язык
400 1655945
Ананасы, сколько времени понадобится, что Си был заменен более современными системными языками программирования (как тот же Раст)? 10-20 лет?
Я люблю Си, но мир же не будет вечно жрать говно от эксплоитов, которые существуют только благодаря тому, что Си еще не умер (ну и легаси код крестов без RAII). Ваши прогнозы?

мимо разраб драйверов на богоподобный линукс
401 1655960
>>55945

> системными языками программирования


> rust


Хех.
402 1655988
>>55960
А в чем проблема? Он быстрый как кресты, на нем уже ядро ОС написали и пишут дрова, включая дрова на уже существующие ОС. Если не системный, то какой? На нем легко можно байтоёбить.
403 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)
404 1656144
>>55945
Ага, Лайнус так и побежал побежал переписывать Линукс на раст.
Боюсь что ждать минимум лет 50, скорее всего не на твоём веку.
405 1656145
>>55988

> Он быстрый как кресты, на нем уже ядро ОС написали и пишут дрова


Слышал такое слово в слово про C#.

> А в чем проблема?


В реализации linked list на две страницы.

>>56131

> snprintf не работает сама в себя


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

> Хочу сложить строку caption = caption + "text"


strcat или n = sprintf(buffer, ...); n = snprintf(buffer + n, ...) (с проверкой ошибок и соответствующим уменьшением размера буфера, разумеется).
sage 406 1656146
>>56145

> n = sprintf(buffer, ...)


snprintf разумеется.
407 1656169
>>56145

> Слышал такое слово в слово про C#.


Щас бы писать ОС и дрова на языке, который исполняется виртуальной машиной, ммм... (да-да, я знаю, что дотнет кор умеет компилиться в нативный код), но во времена появления сишарпа такого не было и такого ты слышать явно не мог, да и этого не происходило вовсе, а на Расте УЖЕ написана ОС и УЖЕ написано неплохое кол-во системных утилит, как для языка, которому лишь 5 лет. Через 15 лет он убьет Си точно, про кресты не могу сказать.

> В реализации linked list на две страницы.


И? Обернут в стандартную либу и все, кого это должно ебать, если у тебя программа в итоге защищена от целого класса атак, причем самых опасных.
408 1656171
>>55988
Твой раст нужен только на серверах, и то не нужен, ведь там уже есть питон. Мертворожденная поделка.
409 1656176
>>56171
Он никакой не мой. Но поясни почему, аргументы такие себе. Почему язык, превосходящий другие языки для таких же целей, только старые, не может в перспективе его убить?
410 1656188
>>56169

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


Какбэ... Виртуальные драйвера уже в виндовс95 выполнялись (потому что как ты ещё сделаешь многозадачность на одноядерном процессоре) и писали их думаю на сишке.
мимокрестовик
411 1656192
>>56176

>превосходящий другие языки


На словах пиздунов, а на деле мы имеем Firefox - самое тупое, тормозное, жирнющее говнище из миллиона процессов, которому чтобы отобразить текстовые веб-странички нужен кластер суперкомпьютеров чтобы не тормозить. Вдобавок текущее как шлюха из всех дыр водопадами, просирая бесконечное количество гигабайт памяти. Такая-то скорость, надежность и безопасность, хоть вот прямо щас весь софт на свете переписывай на этом говне, чтобы миру пизда настала.
412 1656203
>>55988
Покажи мне дрова для винды/линуха на расте.
413 1656236
>>56192
И тут ты такой показываешь тонкий, красивый, лёгкий, полнофункциональный браузер для современного веба.
414 1656303
>>56145

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



Спасибо, добавил переменную buffer через которую теперь делаю.
415 1656344
>>56236
И тут я показал язык, на котором даже его создатели высирают парашу говна, хуже в мире не найти. Теперь подмойся и скройся, выродок.
image.png463 Кб, 600x386
416 1656440
>>56344

>Сталь — плохой сплав, вон какие грузовики гигантские и дорогие приходится из неё делать, чтобы руду возить.


>Покажи лёгкий грузовик, который с такой же задачей справится


>Риии, из стали говно тяжеленное делают и чинить сложно!

417 1656465
>>56176

>не мой


>, превосходящий другие языки


Дебил не палится.
418 1656531
>>56465
Почему раст сосет, а Си топ? Ладно там кресты, это реально монстр, там реализованы все возможные парадигмы, можн окак байтоебить, так и писать абстракциями чуть ли не как на петоне (на поздних стандартах офк).
Но Си? В нем же нет ничего. Да, быстрый, но по бенчмаркам раст == си по скорости, но при этом полностью безопасен в плане памяти. Почему никто не может конструктивно ответить. Нечего ответить по существу? Так так и скажите, что сливаетесь.
419 1656580
>>56531
Ладно братиш ты нас раскрыл, на самом деле мы все данво на расте а тут просто отыгрываем разговор студентов из молодости, давай в раст-тред, там пообщаемся на вопросы твои ответим
sage 420 1656678
>>56169

> на Расте УЖЕ написана ОС


На C# УЖЕ написана ОС

> во времена появления сишарпа такого не было


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

> И? Обернут в стандартную либу и все


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

>>56176

> язык, превосходящий другие языки


Сишке ты говоришь "зделой", и оно делает да, с UB, если ты не понимаешь, что ты делаешь, и почему. Расту нужно вылизать анус, чтобы он возможно согласился зделоть, и у тебя все равно будут те же самые проблемы, что и в сишке, потому что без ансейфа в расте можно только хелловорлды писать. В результате мы платим больше и за это имеем лишь больше проблем и потенциальные полпроцента прироста производительности из-за лучшего анализа алиасинга, но когда-нибудь потом.
421 1656685
>>56531

>Почему раст сосет, а Си топ?


1. С Проще освоить.
2. Есть на любой платформе. Качественный компилятор
3. Язык стабильный.
4. Куча справочных материалов.
5. Не нужны обертки чтобы использовать сишные либы.
6. Куча тулзов для профилирования, статического анализа
7. Можно работать за деньги
422 1656720
>>56580
https://www.redox-os.org/ открывай рот
423 1656722
>>56678

> На C# УЖЕ написана ОС


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

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


Две строки? Развернуть структуру, написать функции удаления/добавления элемента в список, где опять же могут быть проблемы с памятью.

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


даже уязвимый код в ансейфе почти невозможно поиметь, у растовых бинарях мемори лэйаут абсолютно другой, там переполнения блять в ансейфе не работают, максимум могут быть траблы с указателями, и то в адовом говнокоде. При этом при аудите сорцов можно будет сфокусироваться именно на ансейфе, потому что другое просто неуявимо. И шанс проебать баг, тем более критический, сокращается в охуилярд раз
424 1656724
>>56685
1. И проще прострелить себе ебало, ибо сегфолт и Си - братья навек
2. Дело времени, причем недолгого
3. Стабильный в крашах, мемори ликах, гуляющих указателях, переполнениях, UB? Безусловно
4. И? У раста тоже есть книга и пиздатая документация, не аргумент
5. Дело времени х2, язык молод, но растет как Алёша на астероидах
6. Куда тулзов для статического анализа, а 80% кода на Си имеют дыры, лол
7. Огромное количество компаний, которые занимаются блокчейном, уже перешли на раст, ибо там безопасность превыше всего.
425 1656727
>>56724
Угомонись, Раст исправляет какую то одну микроуязвимость, все остальные дыры будут в нем те же
426 1656733
>>56727
В мире нет ни одного зарегитрированного случая взлома растового бинаря. А попытки уже были. Его память неуязвима, там только специально можно что-то сделать
sage 427 1656742
>>56733
Вот когда будет сравнимое количество софта на расте - будут и взломы не будет, он умрет раньше. А пока пишут только всякое говно, которое иначе написали бы даже не на си или крестах, а на питоне.
428 1656746
>>56742
Количество написанного софта в этом случае не повлияет - проблемы Си были известны с момента рождения этого языка. Если вдруг весь мир перейдет на раст - магическим образом не смогут взломать то, что не взламывается, только если нарочито не плодят бэкдоры
1586729673321.png428 Кб, 1080x1920
429 1656754
>>56733
Ой что это у нас тут, буффер оверфлоу в стандартной либе. А я тебе говорил не высовывайся, обосут
image.png3 Кб, 516x45
430 1656819
Допустим, у меня есть вот такая функция. Что ей возвращать при ошибке? Структуру с нулями?
431 1656824
>>56724
Растошизики, успокойтесь. Сишку не сместить, вам только если кресты с гейдева какого-нибудь вымещать, но и то не факт.
432 1656827
>>56819
Сделать PROCESSENTRY32W* дополнительным аргументом, возвращать int-овый статускод. Алсо, у тебя рот в winapi измазан, вытри.
433 1656829
>>56827

>рот в винапи


Я ж в си-треде, а не среди крестоблядей, чего вы так.
434 1656831
>>56827

>возвращать int-овый статускод.


А почему именно инт возвращать? По идее хватит и char?
435 1656833
>>56831
Ебан, ты? Важные для компиля/системы статус коды в винапи уже завернуты, для себя возвращай чё хочешь и как хочешь
436 1656834
>>56833
Да.
437 1656837
>>56834
Узнал тебя, чего давно к нам в раст тред не заглядываешь?
image.png43 Кб, 944x386
438 1656842
>>56837
Ахуеть, ты как это сделал? Я уже полгода-год туда не захаживал.
image.png20 Кб, 757x273
sage 439 1656845
>>56833
Так нормально будет? Или быдлокод?
image.png33 Кб, 620x513
sage 440 1656879
>>56845
Блять, не то...
441 1656895
>>56879
Какую-то хуйню напечатал, не смотрите.
442 1656917
>>56754
Где рабочий эксплоит к этому, Маня? Даже если в расте есть какая-то там дыра, из-за мемори лэйаута, который устроен не так, как в сишных бинарях, ты не сможешь это эксплуатировать нормально.
443 1656946
>>56746
Хуйню не неси, долбаеб.
444 1656955
>>56917
Ебан, вернись уже в свой тред. Ломают и будут ломать твой Раст, как и сишку, пока мы все на х86 сидим
445 1656972
>>56955
А на x64 что изменится?
446 1656999
>>56955
А на других платформах что? По-моему тот же ARM и RISC-V не имеет никакой разницы в плане эксплуатации программ
мимоанон
447 1657051
>>56972

>current state of /pr/

448 1657052
>>56917
Если pederust не дает мартышкам срать в память, то это не значит, что выходной бинарь на 100% безопасный
449 1657063
Как сделать memcpy с char* в WCHAR буфер с сохранением жопы?
450 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 чтобы функция именно с внешей переменной работала? Через & не работает.
451 1657092
КАК ЖЕ МЕНЯ ЗАЕБАЛА ЕБЛЯ С WCHAR'АМИ ЧТО ЗА ШИЗА
>>57071
В чём проблема? Вот так сделай.
https://pastebin.com/G6LZ9sS4
452 1657099
>>57092
не гори, че ты вообще делаешь?
453 1657110
>>56999

На других платформах то же самое - если кекогерцы не кукурузные, значит есть всевозможные Side-channel уязвимости, которые даже на сраном жаваскрипте без эксплойта в нейтив код юзаются.
454 1657134
>>56917

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


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

100% безопасность из коробки
если нету unsafe, то безопасно
рабочих эксплоитов нету <<-- Вы находитесь здесь
да, взломали, но ничего серьезного
сами виноваты, надо было нормально писать
sage 455 1657157
>>57110

> на сраном жаваскрипте без эксплойта в нейтив код юзаются


В лабораторных условиях при правильной фазе луны. Но это никак не относится к нинужности раста.
456 1657212
>>57157
дебилушка, пока есть уязвимости в железе - хоть на залупе своей пиши - выломают
457 1657219
недавно обнаружил, что хуева туча версий гсс прошла мимо меня - прочила лог, соорудил модный мейкфайл с пиздатыми санитайзерами. использую для тестов.

нормально или хуйня? https://pastebin.com/v9mXETRv
458 1657234
>>57052
говорилось именно про уязвимости памяти, а не в общем. Раст мартышке не даст скомпилить бинарь, где есть переполнение/висячий указатель/двойное освобождения памяти.
459 1657236
>>57234
а в расте нет ансейф разве?
460 1657237
>>57134
да будет тебе известно есть такое понятие, как proof of concept. Пишут эксплоит, чтобы чисто показать возможность локального/удаленного исполнения кода, дабы показать, что уязвимость не пластмассовая, а найти кого взломать всегда можно.
Я тебе открою секрет, его нет просто потому, что его не смогли написать.
461 1657243
>>57236
Есть, но:
а) При тестах на такой род уязвимостей можно смело концентрироваться на местах, где есть ансейф, ибо другие места защищены уж точно
б) В случае проблем с памятью, в виду специфики лэйаута в памяти растовых бинарей, заиметь контроль над исполнением программы почти нереально. Техники взлома, которые работают в Си и крестах, там бесполезны
462 1657245
>>57243
а какие сейчас техники взлома в плане передачи управления на произвольный код? стек и память разве исполняемые всё ещё?
463 1657270
>>57245
Возвратно-ориентированное программирование, приятного гуглежа. Шеллкод не вхуяривают уже лет как 10, с подключением.
464 1657282
>>57270

>Возвратно-ориентированное программирование, приятного гуглежа


и как этому противостоит раст? эта проблема решается на уровне компилятора.
465 1657288
>>57282
Лолшто, как тебе компилятор поможет? Ты знаешь что такео возвратно-ориентированное программирование вообще или нет?
В расте ты не моешь писать за пределы буфера и не можешь заебнуть указатели и насрать в кучу. Это никак не связано с тем, что ты сказал.
sage 466 1657301
>>57219

> -Wno-parentheses


> -std=c89


> нормально или хуйня?


Хуйня. А вот прогонять через санитайзеры - это всегда хорошо.

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

>>57288

> Лолшто, как тебе компилятор поможет?


Канарейки, редзоны, привет.
467 1657302
>>57288

>Лолшто, как тебе компилятор поможет? Ты знаешь что такео возвратно-ориентированное программирование вообще или нет?


ты чё такой борзый? дыши ровнее.

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


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

> Это никак не связано с тем, что ты сказал.


в смысле не связанно? ты затираешь возврат на стеке в заранее известны код, где-то у ret. и прыгаешь дальше, выполняя свою задачу чужими руками. тупо гугл даже выдаёт опцию в гцц, например -fcf-protection . а сколько там стек протекторов
468 1657304
>>57301

>Хуйня. А вот прогонять через санитайзеры - это всегда хорошо.


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

или мне так показалось. в общем, мне бы друзей найти, а то я пишу в стол и никому ничего не показываю. мотивации всё меньше.
470 1657322
>>57302

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


Раст на пути юзать только растовые либы.

> в смысле не связанно? ты затираешь возврат на стеке в заранее известны код, где-то у ret. и прыгаешь дальше, выполняя свою задачу чужими руками. тупо гугл даже выдаёт опцию в гцц, например -fcf-protection . а сколько там стек протекторов


Во-первых, бинари как правило не компилят с этой опцией, особенно если они должны быть быстрыми, так как эта мера имеет сильное влияние на скорость исполнения. Во-вторых, есть модифицированная техника обойти и эту защиту -> https://marcoramilli.com/2016/06/23/from-rop-to-lop-bypassing-control-flow-enforcement/, приятного аппетита и с добрым утром, нашли способ как это обходить еще в 2015-2016. В-третьих, стек протекторы - слабая защита. Если у тебя есть примитив либо на чтение, либо на запась (даже 1 из них сгодится) - ты сливаешь значение протектора и переписываешь его его же значением, чтобы он при возврате не крашнул прогу, либо при примитиве на запись ты записываешь ЗА протектор, сразу перезаписывая сам адрес непосредственно. В-четвертых, на стэке свет клином не сошелся, есть еще куча.
471 1657323
>>57322
upd
Санитайзеры юзают не все и они не могут найти все дыры.
sage 472 1657326
>>57304

> я хочу максимальную переносимость


Скажи, сколько твоих хелловорлдов (в штуках) было скомпилировано и запущено на платформах, где нет поддержки C11?
473 1657336
>>57322
ну, логично что на всякую гайку найдётся болт. не буду спорить, мне не очень интересно. но хорошо, и да, литературу по взломам я читаю только старую из 00х, чисто в развлекательных целях.

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

да и смысл в новых стандартах? писал бы на пк - может быть, но тоже вряд ли. просто не вижу смысла.
статик ассерт можно самому написать, фикс-типы самому определить. треды поставляются отдельно. атомики - ничего не могу сказать.
474 1657343
>>57336

>я пишу на старые системы


ну то есть, так, чтобы и на пк можно было скомпилировать.
image.png30 Кб, 755x359
475 1657497
Объясните мне что за ебола!
476 1657543
image.png28 Кб, 887x304
477 1657586
Пизда.
478 1657733
Запилил аналог cheat engine, при записе в память нужного участка - падает все приложение сканируемое. Привелегии отладчика получил. Чо не так?
479 1657793
Что значит "взять стека" и "вернуть в стек"? Аноны, поясните что это такое на компьютере, в книге просот хуяк и ни с того ни с чего про какой-то стек пошла речь без его определения. В интернете гуглил ничего не понял. Молю, помогите. Что такое стэк на компьютере?
480 1657888
>>57793
Стек это структура данных в которую можно помещать какую-то информацию. Стек работает по принципу первый пришел - последний вышел. Тоесть если ты положишь в стек сначала 1, потом 2, потом 3. Ты вытаскиваться будет сначала 3, потом 2, потом 1. Почитай внимательней, там скорее всего где-то упоминается что именно за стек. Так как есть некоторые нюансы. Алсо если ты читаешь описание алгоритма то там возможно неявно подразумевается что ты создашь стек который и будешь использовать.
481 1657891
>>57888
а спасибо, я это уже читал.

видимо это

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



там описание программы, ну да просто не понял откуда они там стэк взяли. всё спасибо, анчоусы.
482 1657898
>>57891
Еще при запуске программы для нее создается служебная структура-стек которая используется для хранения адресов возврата, аргументов, некоторых переменных. Когда говорят "стек" могут подразумевать ее, но к ней нет прямого разумного способа доступа, поэтому фразочки типа "взять стека" и "вернуть в стек" к ней не применимы. Обычно используется что-то типа "переменная хранится на стеке". А если в него и пишут что-то - то там пишут по адресам.
483 1658022
>>57497
В винде есть привилегии, требующиеся для разных действий, выполняемых системной, их наличие у процесса зависит от способа запуска и от пользователя, под которым процесс запущен. Но даже если программа запущена из-под админа, некоторые привилегии по умолчанию выключены (возьми Process Explorer или Process Hacker, и в свойствах процесса на вкладке Security увидишь). Код включает SeDebugPrivilege.

>>57898

> к ней нет прямого разумного способа доступа


_alloca()
484 1658025
>>57733

> Чо не так?


Что-то не так. Код тащи.
485 1658167
Есть библиотека состоящая из единственного .h файла. Как её заинклудить в несколько моих? Оно ругается: "<название_функции> уже определено в другом объектном файле"
486 1658186
>>58167
IFNDEF и т д
487 1658197
>>58186
Хмм, не помогло, #pragma once тоже не помогло.
Заметил только разницу, если инклудить непосредственно в каждый мой файл, линкер вываливает целую кучу конфликтов, похоже все функции какие есть, а если положить в stdafx.h (который везде заинклужен), тогда выводит конфликты только тех функций, которые я реально вызывал, и их зависимые.
1560603288393.png7 Кб, 748x218
488 1658203
>>58197
Вопрос снимается, ха-ха-ха.
489 1658572
Чо там по поводу Столярова, читал кто?
490 1658625
>>58203
Сделай всем функциям static, все заработает, но без -flto код в бинарнике будет дублироваться. Чтобы не дублировался, нужно использовать нормальные библиотеки, как у людей.

>>58572
Ну это как TempleOS, только книга.
491 1658658
>>58572
На глаз очень классно, видно, что мужик шарит.
Мне кажется, большая часть хейта в его сторону исходит от неосиляторов.
ATTENTION! 492 1659099
Стоит задача написать брутфорс расшифровщик с одного алгоритма. Естественно надо писать на многоядерное применение, а еще лучше делать это на видеокартах. Понимания как писать для видеократ такую хуету нет, как и для многоядерного паралельного вычисления. Решил посмотрел как там это все для видеокарт делаетя и офигел. Чето не хочется все это изучать про видеокарты ради одной задачи. Что можете посоветовать где копать? И что такая работа может стоить если заказать на стороне?
493 1659194
>>59099
пойти нахуй и прочитать любую книгу о шифровании
494 1659257
>>59194
Дебил, ты вопрос читал?
495 1659454
>>59099

> Понимания как писать для видеократ такую хуету нет


OpenCL вполне себе похож на сишку.
496 1659535
>>59454
Да вот , сижу читаю про CUDA, правда не хотелось бы привязыватьсяся к nvidia только. Надо потом постмотреть по OpenCl.
Ты с OpenCl работал?
497 1659766
Какое же K&R переоцененное говно
498 1659889
>>59454
>>59535

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

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

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

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

Сейчас есть альтернативы?
499 1659935
>>59766
+
Дейтел пизже в разы
500 1659986
Бамп
501 1660135
>>59889

Вроде HIP выглядит живым и перспективным.
502 1660151
>>59889

>А opencl умер?


>Последний релиз в 17 году.


это ты на википедии прочитал, пупсик?
503 1660153
504 1660171
>>60151

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

Байтоебы, помогите выбрать, что перспективнее, если у тебя карточка amd.
Тред утонул или удален.
Это копия, сохраненная 26 июля 2020 года.

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

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