Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.Пожалуйста, пользуйтесь 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 2017 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_Chttps://github.com/kozross/awesome-cОнлайн-утилиты:- https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.Прошлые треды:- №48: http://arhivach.ng/thread/495505/- №49: http://arhivach.ng/thread/496205/- №50: http://arhivach.ng/thread/502813/ >>1518919 (OP)
Чем конст помечается в этих ваших байтах? Может есть какой-то сегмент в стэке или дампе, куда складываются адреса констант и ось начинает членососить за попытку что-либо из этого изменить? Или как оно всё это делается - расскажите плс.
>>1540444Ничем. const - для программиста и компилятора в основном. Но да, компилятор может положить static const или некоторые литералы в сегмент, доступный только на чтение, и тогда при попытке что-то поменять программа свалится. Если у тебя микроконтроллер, то этот сегмент обычно физически недоступен для записи вообще или без плясок с бубном, а если десктоп, то требующиеся атрибуты сегмента записываются в исполняемом файле.
>>1540444ничемсоздатели си поэтому поводу очень не хотели добавлять const в язык и сделали это только под сильным давлением общественности
Сап двач, есть такая проблема что не могу сделать лабы по проге, а скоро сессия и если не сдам, то не допустят к ней. Прошу помощи двач, т.к сам я учусь не на программиста, но приходиться учить Си.Дана строка состоящая из слов разделённых пробелами. Нужно вывести слово с максимальной длиной, порядковый номер этого слова, и номер позиции с которого оно начинается.Вектора нельзя, стринг нельзя. Чисто строка как чаровский массив.Помогите пожалуйста
>>1540734за один проход все делается.Тебе нужно на каждом пробеле сравнивать расстояние до прошлого пробела с последним рекордом, если расстояние больше чем рекорд, то ты это расстояние и индекс-расстояние+1 записываешь. В конце просто выводишь
>>1540755Ну я пытался так сделать, но у меня нихуя не вышло и я психанудл и удалил всё, если ты шаришь, может объяснишь мне всё например в дискорде. Не за бесплатно конечно, можно о цене договориться
>>1540757Бляяяяя дай лучше мне денег!!! это же хуйня на самом деле. самый стоковый конечный автомат с inword-outword.
>>1540764Да я понимаю что хуйня, но я оч ленивый и тупой, поэту и хочу найти человека чтобы подтянуть мои знания
Привет, форумчане! я ещё новенький. Есть где-нибудь в свободном доступе массив с cp866 (индекс -- dec номер, значение -- собсна символ)? Можно, конечно, ручками всё вбить, но как-то не очень хочется.Гуглится оно не очень, ну или просто запросы у меня хреновые.
Обожаю сишечку, недавно сел и написал без задней мысли свой hello world на одном дыхании. На крестах хуй такое провернешь.
>>1543237Сел и пишешь, не надо никакую архитектуру обкатывать, думать в какой манере код писать и прочие проблемы крестов.
>>1543950>думать в какой манере код писатьКогда пишешь на цэпепе, не используй функции из библиотеки C, только std, только хардкор. Я решил твою проблему.
>>1543950Прямолинейность - это да. Но разница лишь в том, что сишечка меньше вопросов задает при фокусах с памятью, всякими километровыми кастами мазать код не надо. А архитектура уровня laba2.cpp на любом языке зашквар при большом масштабе проекта, так же как и проебать большую часть времени на написание абстрагирование каждого чиха, когда у задачи есть фиксированное начало и конец в пределах нескольких сот строк код.
>>1543950Код это код, как написал так и будет. Кресты не ограничивают, проблем нет, только кривые руки танцора.
Столкнулся с тем, что использую такое описание функций:код = функция(&данные)Есть ли какое-либо соглашение какой код ошибки должен быть при успехе? Просто логично использовать положительное значение - истинность возвращаемого значения глазами читается как успех выполнения, но тогда нельзя указать несколько вариантов ошибок. Если поставить успешное выполнение на 0, то мозолит глаза постоянная проверка !что-то. На какой стул сесть?
>>1544240Эта социошлюха, вместо написания кода беспокоится быть как все, а то вдруг погонят.Куда бы ни попала, что бы не делала, на уме только одно - социоблядство.
>>1544240Зависит от того, сколько вариантов ошибок тебе нужно получать. Если только успешность/неуспешность исполнения, то 0 при ошибке, и любое другое значение при успехе. Если вариантов несколько, то выносишь ошибки в дефайны, а 0 сигнализирует успешное завершение. По типу такого:int err = func(data, buf);if(err) {if(err == ERR_DATAOF) free(buf);else HandleCriticalErr();return;}Есть ещё третий вариант - возвращать 0 при ошибке исполнения, а код ошибки ложить куда-то в глобальную переменную (либо функцию по типу GetErrCode(), которая это значение откуда-то получает), если тебе код ошибки нужен только изредка, а получать ненулевое значение при успешном выполнении хочется; но это уже извращение.
>>1544240Но ведь вариант с разными кодами ошибок и 0-success соответственно предполагают, что ты этот код еще будешь смотреть, а значит возвращенное значение использовать несколько раз, а значит сначала присваивать его переменной по-любому. Ну, а ! или 0== это на любителя, не желающего обрабатывать ошибки должным образом.
>>1544604>Норм выглядит>0 == yobaХуйня, у меня моцг такую логику не понимает, что то должно равняться константе, а тут 0 равен чему то, пиздец короче
>>1544616Что тебе не нравится? Значение функции же выползает из ее имени и присасывается к переменной, когда присваиваешь. Вот ты на месте это переменной ставишь константу и сравниваешь. Гораздо более читаемо, чем после скобок с аргументами. Хуй найдешь там справа. А так и вызов никуда особо не уехал, и константа перед глазами. Это норм практика, писать раздуваемые в длине выражения справа.
>>1544664>Это норм практика, писать раздуваемые в длине выражения справаТакое видел только в маняучебниках>>1544667> а 0==, как "заебись"Как говно звучит, вот заебись звучит func(data, buf) == ERROR,причем возвращаемый 0 это иногда нихуя не ошибка.
>>1544714охуительно, особенно когда функция до шести параметров принимает>звучитЯ имел ввиду, отрицание ассоциируется с тем, что что-то не так, а 0 - с отсутствием проблем.
>>1544723>функция до шести параметров принимаетЭто то при чем?>отрицание ассоциируется с тем, что что-то не так, а 0 - с отсутствием проблем.Только в твоих фантазиях, все ошибки и статусы всегда заменяются дефайнами.
>>1544240> Если поставить успешное выполнение на 0, то мозолит глаза постоянная проверка !что-тоЭто единственное, что тебе мозолит глаза в таком языке, на си? Тогда ты очень избирателен
Сборище детей маня олимпиадников. Одни кукаретики, никто программ не писал, иначе бы знали что за них уже давно всё придумано:if (!SUCCESS(vasyanfunc())) { printf("puk");}
лол, не ожидал такой реакции на вопрос, но за советы спасибо>>1544382а персонально тебе - ты пидор и неудачник, стыдно быть тобой
>>1544394>>1544616Это главным образом для защиты от случайного присваивания когда один знак = проебетсяif (yoba = 0) // а хотел сравнить yoba == 0if (0 = yoba) // компилятор поднимет шухер
>>1544680>int const i = malloc(sizeof(int)5);>i[0] = 1;звезду перенеси перед consthttps://ravesli.com/urok-87-ukazateli-i-const/
Ну и каким блядь образом в этом ебаном языке СКОПИРОВАТЬ БЛЯДЬ ОДНУ СТРОКУ В ДРУГУЮ? А ЕСЛИ ПЕРВАЯ СТРОКА ПУСТАЯ? А БЛЯДЬ? ДЛЯ КОГО ЭТОТ ЕБАНЫЙ ЯЗЫК БЛЯДЬ?
Какого хуя блядь сбрасывает адреса на элементы в структуре блядь я же блядь передаю ебаный адрес на структуру какого хуя блядьааааааааааааа
>>1544995Меня охуенно радует что нигде в мире не написано и не объяснено каким хуем это должно работать и что нужно сделать чтобы это дерьмо работало, и единственный способ узнать как что-то запрогать на этом "языке программирования для людей"... Нажмите на ссылку чтобы узнать!
>>1545362И ни один "рабочий" код в интернете не работает. Охуенно правда? Программирование это охуенно.
>>1544974Ты должен не int возвращать, а указатель на структуру и уже то что вернулось проверять, равно оно нулю или нет.
>>1544972Я об этой хуйне уже в 11 классе от учителя узнал, а тут взрослый ньюфажка с двача не может разобраться лол
Ебните кто-то это шизло из очередной школы 21, что весь тред засрало своими очень важными скриншотами
>>1545428 >>1544974 >>1544973 >>1544972Программа таки заработала нормально.https://pastebin.com/RNHJrMWy если кому интересно>>1545580Через консоль компилить слишком сложно и непонятно и нет возможности построково прогу выполнять, а качать вижал студио 2007 с троянами слишком страшно.>>1545600Че охуенно умный да? Родился сразу сеньёром да? Слышь может за гаражи зайдём дон? Сколько жмёшь от пола дон?
>>1545630>Слышь может за гаражи зайдём дон?спасибо, но нетпредпочитаю отсос от 17ти летней студенточки
>>1545600>очередной школы 21двачуюлучше бы мышцы качали - это хоть бы пригодилось когда грузчиками в пятерочку пойдут вкалывать, хотя бы не сразу позвонки на спине сотрут, а лет через 7м
>>1540431 (OP)Так сисюны, вот вам реальная задача, есть последовательный сортированный числовой массив размером не больше 1000 и нужно искать в нем элементы быстро аки боженька, кроме бинарного поиска еще что нибудь есть?
>>1545704Есть предложения? Проблема еще в том, что нужно знать размер массива, а это инт занимающий память...
>>1545695С бинарным поиском худший случай слишком долгий. Но альтернатива это ток экспоненциальный наверное или интерполяционный, и там худший случай тоже хуевый
>>1544961> if (!SUCCESS(vasyanfunc())) {> !SUCCESSА там ведь еще и FAILED есть, чего ж не притащил? И это плохо выглядит, когда тебе этот статус еще потом нужен.>>1544965> if (0 = yoba) // компилятор поднимет шухерА потому что нехуй с нулем сравнивать. Традиционные проверки if (func() != 0), if (!func()), ну и всякие там if ((x = malloc()) != NULL). Ошибиться негде, проблема надуманная. Алсо, этот кривой стиль все равно не защищает при сравнении с переменной.>>1545695Создаешь тысячу элементов, инкрементируешь те из них, для которых в твоем изначальном массиве есть элемент, получаешь поиск с O(1), идешь нахуй со своей баянной задачей для детей.
>>1545760>для которых в твоем изначальном массиве есть элементЕсть во всех, все элементы массива заполнены
>>1545768> Есть во всех, все элементы массива заполнены build_lookup: table[0..max] = {0}; for elem in src { table[elem]++ }lookup(x): table[x] != 0
>>1545600Нахуй иди, в школе21 с нуля сишную либу пишут, в том числе и strcpy и принтфы всякие, при желании и на ассемблереТаких дегенератских вопросов там никогда не будет
>>1548039>в школе21имхо, если к вам в байтоебскую контору на тех собес через hr пробился челик с этих курсов, то лучшее что вы можете сделать для своей безопасности и безопасности своей конторки - это безапеляционно слить его в унитаз
реквестирую код на шарпе, который будет менять бинд смены раскладки. то есть, с шифт-альта на ктрл-шифт. с меня как обычно нихуя
>>1548039> принтфы всякиеНу-ка притащи посмотреть %f, правильно реализованный новичком, у которого нет опыта и просто физически не может быть достаточно времени, чтобы разобраться с деталями.
реквестирую картинку со списком программ которые нужны для практики прогроммирования, там еще разделение по цветам, уровень сложности типо, на черном фоне текст
>>1548780Но результат-то достигнут. В условиях не было запрета на использование стандартной библиотеки.
>>1548837>В условиях не было запрета на использование стандартной библиотеки.Ты даже постановку задачи не понял.
>>1548837> В условиях не было запрета на использование стандартной библиотеки. > в школе21 с нуля сишную либу пишут
>>1548039>в школе21Этож сберкек. Они в этом своем сбербанке до 2010 (а то и дольше) сидели на ДОСе или каком-то досоподобном говне.И даже щас у них юзеринтерфейсы изобилуют идиомами досовских времен, лол.>с нуля сишную либу пишутЭто есть в книжке K&R
>>1548578пишешь в гуголь github ecole 42 ft_printf и сосешь бибуА как правильно реализовать - на длинной арифметике, траблы там нулевые, кроме этого>>1549029Программа французская, сбер в ней нихуя не может менять
>>1549029>до 2010 (а то и дольше) сидели на ДОСеХодил пару лет назад паспорт менять в стол, увидел оригинальный Midnight Commander на одном из компов, подохуел.
>>1548247Чето я не понимаю, там же курсы для вкатоидов, и вроде они не так давно работают чтобы кто-то из тамошних реально получил квалификацию достаточную для того чтобы на техсобес попасть>>1549051блять ты даже не понимаешь насколько смешно выглядит то что ты пишешь. Ни один вкатоид, в какой бы ГеНиАлЬнОй школе он не "учился", не сможет реализовать что-то из стандартной библиотеки ДЕЙСТВИТЕЛЬНО на уровне стандартной библиотеки. Посмотри соусы в том же кланге и подумай как смешно выглядит то что ты говоришь.>github ecole 42 ft_printf вот эта хуйня это подтверждает.
>>1549393>отечественного производителя>Автор программы — украинский программист Всеволод Волков.Молодой человек, пройдёмте с нами вон в ту комнату. У нас для Вас есть пара вопросов об исполнении федерального закона 44-ФЗ и в частности постановления правительства "Об утверждении плана по импортозамещению программного обеспечения” от 01.02.2015 № 96.
Как мне считать две строки, как я понел scanf для этого не подходит, пробовал баловаться через fgets с fflush чет нихера:text1text2
>>1550642Жопу себе флашни, блядь. А fgets, в отличие от smashing-smahing-detected-gets, не вычитывает '\n'.
>>1550644и вот почему такую банальную инфу не пишут в книгах? хуле я зря чейтал их нахой, и вот нахрен ты пишешь без дела
>>1550647Да я рофлю, анон. А книги только путь указывают. Если ты предпочел не спрашивать совета в /b/, чтоб услышать, что Си не нужон, а таки решился на вкат, то предполагается достаточная самостоятельность, чтоб пробить man gets/fgets и все это уточнить. Что до пикрильского, это я намекнул, что твоя программа отвечает за удержание вывода, чтоб буфер флашить, а у тебя ВВОД. Он приходит с терминала (читай другой программы), и даже если у твоего процесса щечки покраснеют от ожидания, это не поможет, если терминал решил придержать stdin. Но по '\n' он 100% флашит, иначе ты бы свой код не скомпилировал даже, лол.
>>1550649Что за бред. В той же консоли стандартная команда ввода в файл, печатай энтеров сколько влезет пока не нажмешь ctrl-z или как там.
>>1550649Ну просмотрел стандартную либу си и решил на задачах отработать, но чет бомбанул (от того шо сам не разобралса) шо не смог прочесть две строки с переносом строки. Ща разберусь, спасибо
>>1553716Ты чё несёшь ваще? Эти треды для того и есть, чтобы по теме общаться, спрашивать, рассказывать. Просто этот тред мертвый.
>>155372751 первый тред, у яваскрипта 150-йпоказывает, шо сишники самодостаточные интроверты, песдуй на кухню если хочешь общения
>>1553727Флуд дебилизмом только привлекает еще больше дебилов, а нормальные люди от этого уходят. В результате смерть треда, остаётся зомби только профитный хостеру, ведь ему главное количество посещений и постов, а на качество похуй.
Кто-то может вкатиться и объяснить о синхронизации в Си либо кинуть какие-то референсы на данную тему?
>>1554941>thread.hКаждый раз триггерюсь с этой glib. Вот почему всякие strchrnul, tsearch и прочие расширялки завезли, а C11 хуй? Только в 2.28, на которую пинус еще не переехал, и хрен ты кому в Си-треде pastebin с этими thrd_create скинешь, чтоб он cc сделал без установки второй версии?
>>1559134Оттуда же, откуда>в Си нет многопоточностину лол же. Таким тупорылым обмудкам в лицо плевать, или игнорить, если физическое лицо вне досягаемости.
>>1559213>Не исключительноисключительно>нету сахаркаесть. Просто его меньше, и бойлерплейта по умолчанию тоже меньше.Да и сахарок - это в основном про ньюфагов. Однако не только ньюфаги, а иногда и люди, даже писавшие больше 20 строк кода на си, почему-то продвигают этот миф. >>1559331не понял тебя
>>1559134>си существует исключительно в ООП парадигме>>1559396>исключительноЧто ты имеешь ввиду под "исключительно"? Если ты думаешь что повсеместное использование структур это и есть ООП, то это глубокая ошибка.Мимопроходил
>>1559134Доступ к полю структуры через точку это не ооп парадигма, это сиподобный синтаксис. Ты вообще знаешь что такое указатель? В си нет объектов, они появляются в расширенных си, таких как Objective-C и C++. А вообще объекты перед этим появились далеко не в С а в SmallTalk, на его основе был выпущен Objective-C, а потом уже и C++
>>1559134Чистое ООП предполагает полную инкапсуляцию состояния объекта и взаимодействие с ним исключительно посредством интерфейса. На Сишечке это элементарно реализуется (void ∗), но писать только такой код означает делать такую же строгую и неповоротливую архитектуру, как можно на любом более высокоуровневом языке в меньше строк, то есть лишено смысла. Си нужен для стрельбы по ногам, и поэтому практически все, что на нем написано и реально использует его преимущества, нарушает принципы ООП.
>>1559134Троллинг тупостью? Си это процедурный язык без поддержки объектно ориентированной парадигмы. мимо олд 7 лет на сишечке
>>1559496> Чистое ООП предполагает полную инкапсуляцию состояния объектаМало ли где там что предполагает. С этой точки зрения кресты, которые требуют все кишки класса обязывают выставлять наружу в .hpp - это вообще не ООП-язык. В то же время сишка позволяет incomplete-структурами это состояние успешно скрывать.
Это ебанутых проектов тред? Хочу написать свой каунтер чисто на битовых операциях. Двач, побудь моей уточкой.Считать будем в произвольном куске памяти. Как я себе это представляю.Смотрим поледний бит, Текущий бит:если 0, то меняем его на 1 и закончилиесли 1, то меняем его на 0, двигаемся влево, гото Текущий битВы пока отвечайте, а я подробнее распишу.
>>1560103Если подробнееСтартуем:ставим курор на крайний правый бит (с = 0х1)Начинаем считать:Сравниваем текущий бит с 1 ((b & c) == c)если он 0, то переключаем его (b ^= c) и заканчиваемесли он 1, то переключаем его (b ^= c), двигаем курсор (с<<=1) влево и гото Начинаем считать.
>>1560110Как нельзя? Почему нельзя?char c[128];long ∗p = (long∗) &c;for(int i = 0; i < 128/8; ++i) {∗p &= 0x7F7F7F7F7F7F7F7F;p++;}Код выше, к примеру, применяет битовый AND (И) по отношению к массиву чаров (по 8 байт/чаров за раз). Если конкретнее - очищает старший бит каждого байта.
>>1560118>по отношению к массиву чаровНу так я и говорю, что вопрос в произвольных кусках. Например, шифтануть влево на два байта 3000-битное число. Понятно, что его можно разбить на массив и двигать по кускам, но я надеялся, что руками этого делать не придётся.
>>1560120Так зачем руками-то? Напиши функцию. В Python и Haskell к примеру, есть шифт битов в числах произвольного размера, но работы с памятью нет, да и скорость работы этих возможностей далеко не потрясающая (в питухоне особенно, на небольших числах даже умножение дороже шифта битов). Алсо учитывай, что работать удобно сможешь только с числами, кратными байту, а та же функция на ассемблере будет не намного сложнее (если ты, конечно, знаешь x86-64), но в разы эффективнее.
>>1560125Даже функции потребуют использования обычных чисел, а я хотел этого избежать. Вон выше, произвольный счётчик пытался сделать исключительно на битовых операциях, но он ограничен самым длинным целочисленным типом, хотя в самой архитектуре счётчика я этого ограничения не вижу, можно просто ползать влево-вправо по битам и всё. Хотел расширить до работы с произвольным отрезком памяти.
>>1560130Сегфолты предполагались. Просто пытался понять, достаточно ли сишка низкоуровневая, чтобы настолько с битами играться, но, судя по всему, для такого необходимо городить огороды из массивов, чем заниматься не хочется. Финальная идея была в том, чтобы в лоб побитово производить всякие большие математические операции, типа умножить 200 значное число на 300 значное. Посмотреть, как современные процессоры с таким справляются.
>>1560129Смотри, на чистой архитектуре x86 нет опкодов для работы с числами большей битности, чем машинное слово этой архитектуры, так что под капотом без извращений это по другому реализовать не выйдет. На ассемблере можно, конечно, было бы поизвращатся со всякими там AVX, но это тоже не универсальная оптимизация. Вообще не понимаю твоего бугурта, т.к. функции подобного плана без оптимизаций пишутся достаточно быстро, разве что ты хочешь вообще все битовые операции подобным образом реализовать, и ещё для не byte-aligned по длинне чисел к тому же.
>>1560132Никакого бугурта, друг, спасибо за то, что отвечаешь. Просто пытаюсь нащупать "границы" сишечки.
>>1560132>разве что ты хочешь вообще все битовые операции подобным образом реализовать, и ещё для не byte-aligned по длинне чисел к тому жеИ да, хочу. Это же можно сделать, правильно? Понятно, что на конкретном железном процессоре просто так взять и крутить биты не выйдет, он воткнётся в ограничение длины своего машинного слова, это ты правильно заметил. Но вообще, это же реализуемо, верно? Вот я попробовал просто напрямик это написать на C, но был ограничен размером базового типа, а значит нужно их компоновать несколько, то есть усложнять программу, а вся идея была как раз в том, чтоб программа была самая тупая.Я рассчитывал, что просто напишу, как хочу изменять память, а компилятор уже разберётся, как это делать кусками, удобными процессору.
>>1560135Понял. Тащемта сишечка на таком низком уровне все-таки неплохо ограничивает, особенно в плане всяких микрооптимизаций и расширений архитектур x86 по типу SSE. Да и вообще для не битовых операций нужно будет на C дикие костыли городить, а тот же результат умножения на уровне ассемблера помещается в пару регистров (фактически промоутит число до количества битов в 2 раза большего), что уже позволяет набросать более эффективный алгоритм. Вообще, если в проде будешь подобное использовать, и лень будет изобретать велосипеды (т.е. производительность не важна будет) - во всяких там Java и C# есть BigInteger с переопределенными операторами, не говоря уже о всякой функциональщине.>>1560137Для простых битовых операций (and, or, xor) тебе достаточно просто пройтись по всему числу, применяя оператор к каждому из участков памяти, а остаток без alignment замаскировать and после. А дальше - веселее, даже для шифта битов тебе придется что-то интересное придумывать, а на не битовых операциях уж тем более без интересных алгоритмов никак не обойтись.
>>1560139>Да и вообще для не битовых операций нужно будет на C дикие костыли городитьТак в том и задача, сделать как можно больше через битовые операции над памятью. > а тот же результат умножения на уровне ассемблераЯ его планировал сделать через битовое сложение. Собственно, для этого счётчик и нужен был, чтобы определять, когда остановиться. Повторюсь, интересно сделать как можно более тупую программу, самый минимум. И для умножения я ничего тупее, чем сложение и счётчик не придумал. Вот начал со счётчика и воткнулся.>во всяких там Java и C# есть BigInteger с переопределенными операторамиТак любая криптобиблиотека для сишки это уже BigInteger. Не говоря уже о всяких специальных, вроде gmp. И, полагаю, они там уже давно таких оптимизаций наделали, до которых мне годы раздумий.> А дальше - веселее, даже для шифта битов тебе придется что-то интересное придумыватьВсё так. Но я не хочу придумывать интересное, ради обхода ограничений языка. Не в этом моё желание.
>>1560139> Да и вообще для не битовых операций нужно будет на C дикие костыли городитьПосоны-то не знают, и пишут длинную арифметику именно на сишке.>>1560148> битовые операции над памятью.Ты какой-то хуйней страдаешь. Битовые операции не нужны, достаточно обычных операций над массивом uint_fast32_t.> для умножения я ничего тупее, чем сложение и счётчик не придумалВ столбик в школе считать учили?
>>1540431 (OP)Не совсем по C вопрос, но, тащемто, связанный с выполением заданий из K&R. Как отключить построчную буферизацию в терминале? Ubuntu 18.04, bash. unbuffer и stdbuf -i0 -o0 -e0 не работают.А то пошел K&R проходить по порядку перед сессией после семестра гвидопыха, ибо гвидолабы сданы на отл. обгвидку-преподавателю, чтобы повторить основы теор. курса с нормальным языком в руках, а тут такие неприятные мелочи.
>>1560583Разве возможно отключить буферизацию stdio.h извне? Сделай setbuf(stdout, NULL); или fflush(stdout)подписался на тред
>>1560611и насколько это актуально? типо мемранки программировать? для diy обычно сами на ардуино лепят
>>1560576>Посоны-то не знают, и пишут длинную арифметику именно на сишке.Так, давай не путать посонов, которые пытаются что-то полезное сделать, и меня. >Ты какой-то хуйней страдаешь.Это очевидно. >В столбик в школе считать учили?Так, а чем принципиально умножение в столбик отличается от, так сказать, обобщённого умножения? 3 на 5 умножить, и 42154352345 на 3467645645745 для меня одно и то же. >Битовые операции не нужныТак, я пожалуй объясню, что я пытаюсь сделать с нуля. Представь себе человека, который вообще ничего не знает о математике и, тем более, программировании. Даже таблицу умножения. и ты его учишь, начиная с двоичной системы счисления. Мне попался хороший ученик в виде компьютера, он уже понимает, что такое 0х0, 0х1, =, ==, ^, <<, и &. И я хочу из этого научить его считать. Для начала просто считать вверх, что я относительно успешно реализовал, учитывая ограничения C. Но именно этого я и не хочу, я не хочу учитывать ограничения С, я хочу просто менять биты в памяти. Не в беззнаковом целом, не в массиве чаров, и даже не в структуре или битовых полях, а просто в куске памяти. Хочу просто бинарную математику, а не ограничения в длину слова процессора или базовые типы. Понятно, что я могу это реализовать просто в виде операций над строками, написать свои реализации 0х0, 0х1, =, ==, ^, <<, и & для '0' и '1', но это получится пикрелейтед, не уверен, что я этого хочу.
>>1560607>>1560592Спасибо!Дело действительно в организации современных, и не очень, *nix.http://man7.org/linux/man-pages/man4/console_codes.4.html Ctrl-D для вызова EOFCtrl-H для вызова backspaceCtrl-? для вызова Delete
>>1560627> просто менять биты в памятиТы не можешь менять биты в памяти, ни просто, ни сложно разве что row hammer какой-нибудь притащишь, и это, наверное, единственный рабочий способ менять именно биты в современных компах. Процессор читает/пишет память даже не байтами, и не двордами, а целыми кэшлайнами. Даже сама DRAM не читает по одному биту.Но я понял, чего ты хочешь, и думаю, что тебе нужна не сишка, а какой нибудь digital circuit simulator, вот там ты развернешься. Можешь, например, в nandgame.com поиграть, оно как раз для тебя. А когда наиграешься, вернешься в сишку реализовывать арифметику не в base-2, а в base-232.> Так, а чем принципиально умножение в столбик отличается от, так сказать, обобщённого умножения?Ну я так понял, что ты сейчас просто суммируешь первый множитель n раз. Это медленно. А вот если ты попытаешься двоичные числа умножить в столбик, как в школе, ты получишь log(n) уже (и это не самый быстрый способ). С бумажки на комп этот алгоритм переносится очевидным способом: если очередной (от младшего к старшему) бит второго множителя равен единице, ты прибавляешь первый множитель к результату, если равен нулю - не прибавляешь. А потом сдвигаешь первый множитель влево на один бит и повторяешь.
>>1560781>Процессор читает/пишет память даже не байтами, и не двордами, а целыми кэшлайнами. Даже сама DRAM не читает по одному биту.Я от этого пытался абстрагироваться при помощи сишки. Но сишка слишком близка к железу, а остальные языки слишком далеки от битов.>digital circuit simulator> nandgame.comСпасибо, посмотрю.>ты сейчас просто суммируешь первый множитель n раз. Это медленно.Да. Я понимаю. Но хотел в начале обойтись как можно меньшим числом концептов. Любому очевидно, что счётные палочки для первоклассников гораздо медленнее, чем множество других способов, но начинают всё равно с них.
>>1560799Биты близко к железу, когда же далеко от железа биты не нужны. Таким образом, не бывает близко к битам и далеко от железа.
Учу C по книге Stephen Prata "C Primer Plus, 6th Edition" (2014) страниц 300 прочитал, упарился уже весь и мой внутренний голос коварно говорит мне:бросай это дело, всё равно ничего не выйдетЕсть ли вообще смысл учить язык C в маленьком областном центре если мне уже почти 33?
>>1561060>всё равно ничего не выйдетХуевый у тебя внутренний голос, он так тебе по любому новому делу говорит? Я вот в электротехнику на старости вкатываюсь, вот там жесть-пиздец, заливаю внутренний голос пивасом и потихоньку иду дальше.
>>1561060хочешь - учи, не хочешь - не учи. какой еще "смысл"? если вкатиться в ойти, съебать из мухосрани и начать зарабатывать 300кк/сек, то сишечка этому способствует больше, чем бухать с друзьями, гулять на природе и вести полноценную жизнь быдла. но если ты ожидаешь вкатиться не выучив ничего, кроме сишечки, то в 2к19 у этого охуенно маленькие шансы. я советую не сдаваться и идти к цели, особенно в плане навыков, которые денег не стоят и другим людям не мешают.
>>1561196Я так то уже 3 года и 2 месяца вкатываюсь, если считать с момента когда я впервые эту книгу читать начал. Вот летом в 20-х числах июля решил жёстко взяться. Почти полгода прошло, а я только 300 страниц одолел. Вот и начали меня одолевать смутные сомнения, на фоне полного отсутствия соответствующих вакансий в моём городе. Я как то ожидал большей от себя скорости, но то ли я тупой, то ли книга написана так чтобы дочитать её до конца смогли не только лишь все
>>1561219>соответствующих вакансийТак учи то, что востребованно, Джаву например, она С++ на минималках.
>>1561218Да как то дел с вот этим "вкатиться в ойти" всё нарастает и нарастает. Сначала я начал читать книгу, потом решил что и английский знать надо и взялся за курс на дуолинго. Потом решил что в книге маловато упражнений и добавил курс С на степике. Потом заметил что в книге как то совсем не объясняются возможности современных IDE. Да и вообще спецы рекомендуют командную строку линукс и вим. А там ещё прочитал что постоянное переключение взгляда с экрана на клавиатуру быстро утомляет и надо научиться слепой печати и как то это всё прямо снежным комом нарастает
>>1561248Ну с С вкатиться в айти нельзя, разве что сразу с него на пхп перескочить, вакансий для вкатывальщиков нет. Имеющиеся это наверняка НИИ, где сам С дело десятое, а главное матеша.
>>1561248>переключение взгляда с экранаЭэээ, ты там двумя пальцами печатаешь? Лол. У нас был ведущий инженер, старый пидор с бородой, он двумя указательными пальцами печатал глядя на клавиатуру, мнил себя гуру ИТ, а раньше был геологом, пока их контору к хуям не разогнали, да.
>>1561251Да я как ступеньку С расценивал. Типа план себе как мне показалось хороший составил:-язык Си (курс Степик, Прата, К&R)-ассемблер (курс Степик)-язык Си++ (два курса Степик, Страуструп)-алгоритмы и структуры данных (два курса Степик)А потом уже с наработанным знанием и пониманием вышеизложенного за что то более близкое к наличным вакансиям браться
>>1561255Не двумя, но и не десятью. Не глядя на клавиатуру вообще печатать не могу. Судя по тому что за клавиатурой я уже более 12 лет сам собой навык слепой печати у меня не появится
>>1561248>надо научиться слепой печатиС сегодняшнего дня выдели 15 минут в день на это. Я вот, например сейчас учу её. Трачу 15 минут в день. За месяц поднялся с ~80 символов в минуту до ~160. Ничего сложного не, главное заниматься постоянно. Это ещё учитывая, что я максимум бездарь.
>>1561248>слепой печатиЗачем? Большую часть пишет за тебя иде, бойлерплейт нормальные люди генерируют на питоне/перле/т4 что ближе.>>1561251>Ну с С вкатиться в айти нельзяУ нас железячники только на нем и пишут, навигационное оборудование.мимокрестовик
>>1561260>ассемблер (курс Степик)>алгоритмы и структуры данных (два курса Степик)Нинужна, ты в отрыве от реальных задач ни хуя не поймешь
>>1561361Я сам только такой нашёл: https://stepik.org/course/253/reviews Я просто предположил что курс по ассемблеру там есть, или появится за то время которое я потрачу на си
>>1561263нужно ПРОСТО не смотреть. если не делаешь себе постоянный челлендж, то нихуя не научишься. равно как смотреть кинцо с оригинальной озвучкой, но с сабами - нихуя не поможет, если ты постоянно сабы читаешь. нельзя 12 лет с тренировочными колёсами ездить и потом жаловаться, что ты не научился на велосипеде держаться.
>>1561462Ну я ж научился, лол. Заметил, что колесики висят в воздухе, снял, поехал дальше.>>1561309Что за прога?Мимо
>>1561309По-моему, надо просто заставлять себя нажимать каждую клавишу правильным пальцем, необязательно вслепую, но всегда, в любом повседневной печати, большого перерасхода времени не будет. Только поначалу идет медленнее, чем 2-пальцевый набор, как на печатной машинке, но очень скоро привыкаешь и понимаешь, что так НАМНОГО быстрее. А глаза сами перестанут смотреть на клавиатуру.
>>1561747умею печать вслепую, но не умею в правильные пальцы. обычно недоиспользую указательные и мизинцы. мне кажется, это важно, но не самое главное для умения не смотреть на клавиатуру.
>>1561822>>1561826просто так проще "глаза закрыть", потому что не надо плечами работать, а все маленькие группы клавиш развязаны в мозгах по своим пальцам, и нехуй запоминать особо
>>1561309>>1561747>>1561826Советую всем сайт ratatype, максимально удобный. Сам я печатаю ~300 символов с 5% ошибками 3-5 пальцами, но пальцы пиздец как устают. За неделю осилил слепую печать всеми десятью, ~150 символов и 1% ошибок, руки почти не напрягаются. Думаю за пару месяцев на те же 300 выйду.
сап сишники с нг,вопрос к ваместь двухмерный массив(ака матрица),надо узнать какие числа повторяются больше трех раз,и при этом находятся в разных столбцахнапример в матрице 1 2 3 4 1 3 1 3 5 3 4 5это число 3с меня как всегда нихуя :3
>>1562071А если один раз встречается два раза в ряду, то это значение уже не может считаться, или даже если встречается больше 3 раз по одному, но один раз — два раза, то все равно считается? Я пьяный если что извини если не понятно
>>1562068Счетчик для каждого числа. Ну, не для всех 18 секстилионов сразу, конечно, а по разрядам идешь. 256-элементный массив, который запоминает, во скольких разных колонках встречаются числа, начинающиеся на байт 0x00, во скольких - 0x01, ..., а во скольких - 0xff. Сразу выкидываешь все, что не дотягивает, и рекурсивно идешь по отобранным, считая уже вторые байты. Ну, можешь сразу по 2 байта брать, тогда массив 65536, сам смотри, сколько у тебя памяти. Глубина рекурсии больше 8 не будет. Хотя, может быть большой флоат, там кстати тоже все вполне дискретно. Пробуй, анон. Ничего лучше за 5 минут не придумал.
>>1562068для каждого символа алфавита делаешь аррей длиной равной длине строки, проходишь по строкам и отмечаешь в новых арреях появление соответствующего символа. потом просто ищешь арреи, в которых больше трех ячеек отмечено.
>>1562100[5][6]но желательно на неограниченный>>1562101знаю,но мой тупой мозг не понимает как это сделать>>1562105может,считается как одно значение>>1562115пасиба но сложна,мой ньюфажий мозг расплавился>>1562131пасибо попробуютипо например тут ответ будет 3 и 6 {6,>3,8,0,0,5},{>6,>6,5,7,8,4},{4,5,6,>6,1,7},{0,4,>3,2,5,0},{0,8,7,>3,2,8}
>>1562221синайлы как обычно хотят байтоебствовать и сдвигать разряды. общий алгоритм пиши для произвольного содержимого, для которого определена операция равенства.
По умолчанию при объявлении целочисленной переменной без указания спецификатора signed/unsigned, переменная будет signed или unsigned типа? Регламентируется ли это стандартом? Зависит ли это от реализации?
>>1562294Вот тебе скрин из стандарта. Каждый пункт содержит идентичные объявления. Если вкратце, то char зависит от реализации, а остальные по умолчанию signed
>>1562286беторды на бордах всю жизнь пиздили англицизмы, ньюфаг. а вообще потому что я не знаю русских аналогов и вместе с тем ожидаю, что пипл, посещающий данный сайт, способен меня андерстенд без того, чтобы я снисходил до кальки или адаптирования.
>>1562642Конст в объявлении параметра функции говорит о том, что функция не будет менять то, что лежит по указателю, например. При чем тут дефайн? Ты говоришь про константы в терминах маш.кода (адресные операнды, регистровые и константы), а тут документационный смысл.
Как правильно написать вот это упражнение, а то мне кажется что я написал хуйню https://pastebin.com/Kp9Kgdkd
>>1563022>а то мне кажется что я написал хуйню Всё так.>for(int i = 0; c == ' ' && i != 1; ++i) putchar('\b');Эта строка вообще ничего не делает, если что.
>>1563079Ну давай посмотрим, что она делает:i = 0;проверяет c == ' ' && i !=1; //тут виноват, я прочитал там == Если да, то стирает последний символ. Так как пробел мы ещё не напечатали, то это предыдущая буква. Поднимает i на 1; Возвращается к началу цикла for. Проверяет c == ' ' && i !=1. Так как i тут всегда 1, то дальше она ничего не делает.Если нет, то просто заканчивает for и ничего не делает;Дальше печатает сохранённый пробел. Возвращается к началу цикла while; i = 0;проверяет c == ' ' && i !=1;Здесь она сотрёт предыдущий пробел, это правда. Но буква уже стёрта то есть for не ничего не делает, а портит, а цикл for никогда не повторяется больше одного раза. Зачем тогда цикл?
>>1563126Это сработает. Но у тебя 3 if'а в которых ты проверяешь на одно и то же условие. Скомбинируй их в одно. Можешь сделать сам, а потом сравнить со спойлером https://pastebin.com/TrXzqzRMЕщё твоя конструкция развалится, если, например, использовать 10 миллиардов пробелов, а условия это не ограничивают. И постоянная печать, а потом удаление тоже странное решение, не проще изначально не печатать?
>>1563181Тогда тебе нужно делать ещё одну проверку. Не проще их изначально не считать? Тебе же не важно, сколько их было, 3 или 12000? Тебе важно только был ли предыдущим символом пробел.
>>1563200Например так, да. Но я бы сделал с помощью флага, чтобы не перекладывать каждый цикл переменную.
>>1563022https://pastebin.com/mxeX9UQxХули там писать-то.Ещё пукнул с того, как оно выглядит на ассемблере.https://pastebin.com/8aavgL8jhttps://pastebin.com/JRwShhj1
>>1563573Один for для единственного прохода цикла разворачивает, второй switch для единственного условия. Зачем вы это делаете?
Хочу написать автокликер клавиатуры для одной ммо дрочильни, но у этой игры, похоже, есть защита. На текущий момент смог написать только вялый sendinput, используя скан-коды клавиш, который отрабатывает только пару раз, после чего игра перестает их обрабатывать, пока я сам не нажму любые клавиши. После чего картина повторяется. Текущий код: https://pastebin.com/MzzFXeZmЧто можно придумать? Нашел тему с аналогичной проблемой https://stackoverflow.com/questions/18647053/sendinput-not-equal-to-pressing-key-manually-on-keyboard-in-cВ самом низу есть обсуждение под ответом от Eric Brown, он пишет:>That implies that the game may well be using DirectInput. Injection might still be possible, but is much harder; you need to open the raw keyboard device and send some IOCTLs to inject raw scan codes. I'm not that familiar with these APIs, so you're on your own...Но я что-то не понял нихера его. Хз, мб от этого как-то оттолкнуться можно? Или есть другие решения?
>>1566603и почему он не ругается на это:if ((time_heater_delay_gap.watch.hour && time_heater_delay_gap.watch.minute && time_heater_delay_gap.watch.second))немощный компилятор не может работать с структурами в логических операциях, только с элементами?
>>1566604> не может работать с структурами в логических операцияхвключи режим плюсов и допиши оверлод оператора==ты блядь как будто не знаешь в какой язык ты пришел
>>1566328Чтобы совсем красиво было надо хук использовать, но тогда антивирус срабатывает. Потому что..а раскладку кто переключать будет? А спец символы итд итп
>>1566603Поехавший, любой конпелятор сей не позволяет это делать, потому что ты долбоёб.Если там одни целые и ты 100% уверен, что структуры хранятся одинаково - можешь сравнивать через memcmp()
>>1566665Чем мечтать о работающих 5 строчках лучше бы помог человеку.>>1566328Слушай сюда, для sendinput нужен дескриптор окна/процесса которому будет посылаться сообщение. То что ты там нашёл дескриптор с помощью Spy++ это всё хуйня, надо дескриптор определять в реалтайм, и именно тот дескриптор, именно этого подокна. Для это нужно использовать хуки(перехват сообщений), ты перехватываешь сообщение, выдёргиваешь оттуда дескриптор и потом уже sendinputом посылаешь сообщение этому дескриптору. Но хук замутить это пиздец проблема, это уже типа взлома, будет срабатывать антивирус ессно, и вообще надо сильно изловчиться чтоб сделать(но вполне можно).Второй способ, кривой но работает. Черех keybd_event, ты в программе делаешь модальное окно(которое поверх всех окон), делаешь в программе хоткей посредством GetAsyncKeyState.Потом ставишь курсор куда тебе надо(наводишь фокус клавиатуры), зажимаешь хоткей, и мышкой наводишь курсор на окно своей программы. У нее срабатывает GetAsyncKeyState, а фокус то остался в твоей иггре, поэтому всё печататься будет туда. Вот такой вот способ. Не знаю глюк ли это или нет, на win7 работает.
>>1566721В последних шиндах днинпут является оберткой над сообщениями для окон. То есть опять же должен хукаться через винапи. Inb4: держу в курсе.>чем мечтатьМань, на том скрине тупо switch/case, который нет смысл таким образом маняоптимизировать - конпелятор уже давно развернет как минимум не хуже, чем васян с книжкой по асму 1995 года выпуска.
>>1566730Асм это мышление, Асм -это движение, Асм -это жизнь. Асм это способ заставить серое вещество работать. Поэтому я не обломаюсь скопипастить одинаковый код, руки не отсохнут.
>>1566730>Мань, на том скрине тупо switch/case, который нет смысл таким образом маняоптимизироватьТы не заметил invoke sleep? Что если в его игре поставили ограничение на время нажатия? Что тогда?
>>1566721Ух бля... Ну попробую... Кстати, мне советовали один драйвер https://github.com/oblitum/Interception , используя его апи, скормить ему все что надо. Вот его небольшая документация http://www.oblita.com/interception и там написано:>The Interception API provides a simple interface of communication with kernel-mode components, and those components are powerful. They intercept data in a early stage, before it reaches the core of OS input processing.Как я понял, он на более низком уровне эмулирует сигналы для ос, что по идее может быть сравнимо с ручной обработкой сигнала. Но хз, так ли это. Вчера всю ночь пытался на нем что-то написать, но документация сыроватая, кроме рабочих примеров написать что-то свое не вышло. Не могу разобраться, как на его апи можно имитировать зацикливание нажатие клавиши.Работал с кодом из примера https://pastebin.com/WjjhERiSВот, как я его понимаю:в цикле while мы блочим проверку условия строчкой>device = interception_wait(context), пока по заданным фильтрам не придет нужное состояние>INTERCEPTION_FILTER_KEY_DOWN | INTERCEPTION_FILTER_KEY_UPДопустим, я нажимаю кнопку, срабатывает KEY_DOWN, функция interception_receive что-то там возвращает > 0, после чего оказываемся в теле цикла, где устанавливаем нужную клавишу и посылаем ее драйверу. Перед отправкой у клавиши всегда состояниеDOWN или UP, что по идее должно триггерить функцию interception_receive автоматически, зацикливая, но этого не происходит. А так же не понятно, что делают остальные фильтрыINTERCEPTION_FILTER_KEY_NONE,INTERCEPTION_FILTER_KEY_ALL,INTERCEPTION_FILTER_KEY_E0,INTERCEPTION_FILTER_KEY_E1,INTERCEPTION_FILTER_KEY_TERMSRV_SET_LED,INTERCEPTION_FILTER_KEY_TERMSRV_SHADOW,INTERCEPTION_FILTER_KEY_TERMSRV_VKPACKET (это все есть в хидере interception.h https://pastebin.com/NN4Bdefj)>keybd_eventЯ встречал его, но было написано, типа: используйте вместо него sendinput, мол он уже не работает. Твой способ для меня тоже не совсем понятный, надо пробовать.
>>1566753Тоже советовали (stm32 и USB HID), что имелось ввиду под usb hid мне тот анон так и не ответил, программатор? А потом я подумал: есть ли смысл тратить на все это по 500рублей, чтобы попердеть вместе с ней, вероятно, не получить никакого результата и отправить ее на полку? К тому же, там столько всяких kitов, хер поймешь что нужно, а потом, еще эти проводки нужны, а может еще что нужно, о чем я даже не могу представить?
>>1566744Да мы с тобой в разных плоскостях. Ты сильно всё преувеличиваешь, всё гораздо проще, ты пойми сам принцип.(я не шарю в ваших крестах, но примерно понимаю).1 Послать сообщение из одной программы в другую - это гемор, это взлом и все вытекающие. Это можно сделать только посредством hook. Это единственная задокументированная возможность винды, других нет. Нет никаких драйверов, всё это спокойно делается самой виндой(но сработает антивирус). И ещё есть второй способ обхода который я написал.
>>1566644Может показаться, что я ною и не хочу решать свою проблему... Но я, от слова совсем, не хотел бы иметь дело с ассемблером... Вот, вообще.
>>1566744ХУЛЕ НАПИСАНО ТО БЛЯТЬ!! НА ЗАБОРЕ ТОЖЕ НАПИСАНО.>>keybd_eventПросто эмулирует событие клавиатуры. Конечно мелкомягким нахуй чтобы была такая возможность. А ты пробуй, у тебя же задача.
>>1566762>Нет никаких драйверовНу, допустим, в какой-то момент я хотел собрать цепь таймера на микроконтроллере NE555, который запускал бы реле, а та в свою очередь замыкала/размыкала контакты кнопки, к которой бы я просто подпаялся. Сигнал бы поступал в ос сразу после драйвера клавиатуры и все бы работало, я уверен, только, если в том античите стоит какая-то проверка на интервалы нажатия кнопки, то мб и это обошла бы игра, но можно ведь попытаться как-то сделать эти интервалы случайными, чтобы имитировать ручное нажатие. Вот, поэтому я думал, что тот драйвер он просто перехватывает сигналы от драйвера клавиатуры (до обработки самой ос) и с помощью его api можно все что угодно сымитировать на "аппаратном" уровне, а ОС ничего не остается, как принять эти все сигналы и посчитать их ручным вводом.>но сработает антивирусНу, ок, это проблема? Может его выключить/удалить на время? Я просто не понимаю что сложнее: обойти антивирус или написать хук.
>>1566774Ты вот в этом месте заморочился. Их игра просто принимает сообщения от стндартного драйвера клавиатуры. А не работает у тебя, потому что меняется дескриптор процесса или тераяется фокус клавиатуры, в игре же много чего происходит, и если ты сам не тыкнул, то всё будет происходить само-сабой, всё будет само переключаться, как предусмотренно разрабами.А вот чтобы "ткнуть из своей программы" нужно использовать хук, тогда гемор и антивирус. Или второй вариант: ты сам ткнёшь и программа всё доделает.Тут главный вопрос: пользователь ткнёт или программа.
keybd_event сообщает системе о событии которое произошло с клавиатурой. А приложения сами решают, обрабатывать это событие или нет.И приложение конечно не будет обрабатывать это событие если фокус клавиатуры на нём не установлен.А sendinput отправляет сообщение. Но чтобы отправить должен же быть адрес, логично?
>>1566763У вас системное программирование, и у нас сис. программирование. Тебе же это надо? Ну я рассказываю что и как. Можешь поссать на своих англоязычных друзей от моего имени.не деаноньте плиз, я с хорошими намерениямито ли ещё будет
>>1566763Решая задачи ты будешь пользоваться инструментами, асм один из них, не хочешь, найди того кто захочет
>>1566721Окно модальным должно быть в контексте всей ОС? Что-то я не могу найти инфы о том, как это можно сделать. Везде пишут только о том, как сделать дочернее окно модальным в контексте приложения.
Сап. Есть у мня массив шестнадцатиричных чисел, его нужно записать в бинарный файл ("wb"). Я это делаю так: fwrite(array, sizeof(array), 1, FILE_OUT); Но в самом файле, например, числo 0xaf01 записанно как 0x01af (проверял hexdump'ом). Как сделать так, чтобы числа записывались в bigendian'е? вариант с модификацией массива не катит
>>1566809Да я ничего против не имею, просто я не готов вот так взять и начать изучать один из сложнейших яп для какой-то своей хуйни. На это явно уйдет дохера времени, которого нет + явно не достаточно просто понять синтаксис языка, нужно понимать еще архитектуру процессора (наворачивать 1к страниц таненбаума не хочу), под который ты пишешь и наверняка еще дохуище подводных. Моя жопа к такому еще не готова. Я ж, блядь, молодой и шутливый еще...А вообще, интересно. В чем преимущество этого языка? Тот код, который ты кидал, он как-то связан с чат-ботом в POE? И как так получается, что при использовании С/С++ потребовалось бы ебаться с хуками, вылавливать адреса функций и т.д. А ты взял ASM и написал код в длину высоты экрана и у тебя все работает?
>>1566965>>Попробуй альтернативные stdioА проще никак? Ну в духе передать какой-нить дополнительный аргумент fwrite() или fprintf()?
>>1566955Для долбоёбов, которые не осиливают сами - придумали network endianness. htons()/htonl() из netinet/in.h, для тех кто даже куколдугл не осилил.
>>1566966Так мне тоже надо ебаться с хуками. Ты меня не понял до сих пор, есть два стула: 1 правильный с хуками и ебатьнёй, от которого я отказался2 кривой с модальным окном и keybd_event, который я выбрал. Там на видосе просто не видно окна программы(fraps не захватывает, надо было сразу указать). Или просто DeskPins заюзай, главное чтобы окно программы было поверх, чтобы можно было тупо курсор навести на это окно во время удержания хоткея. Потому что фокус клавиатуры у тебя останется в игре, а твоя прога примет GetAsyncKeyState и начнёт выполняться, то есть хуячить keybd_event'ы.И всё будет автокликаться. Да я сам деревянный, просто беру что надо и использую, не замарачиваюсь.
>>1566721Да я вот, сейчас пытаюсь написать на winapi твой 2 способ, пока не выходит. Ты про модульное окно так и не ответил >>1566950 И еще не совсем понятен этот момент:>чтобы можно было тупо курсор навести на это окно во время удержания хоткеяТ.е. нажимать на лкм для захвата окна не надо? Достаточно только навести? Звучит парадоксально.
>>1566955Никак. Тебе ведь поDWORDовый реверс нужен. Можно сетевой хедер взять, но не знаю, как htonl/ntohl в плане инлайнов. По-хорошему, если на целевой архитектуре endianness совпадает с сетевой, то "вызовы" htonl/ntohl должны опускаться при конпеляции, то есть безопасность бесплатна. Можно макросами условную компиляции сделать, чтоб одним fwrite/fread все делалось в последнем случае. Хотя, если писать/читать неглядя, а дрочить массив, то цикл сам опустится.
>>1567020>Звучит парадоксально.Похуй, главное работает.Да, зажимаешь хоткей, твоя прога как бы на паузе, потом просто наводишь курсор, она как бы снимается с паузы, принимает GetAsyncKeyState и начинает исполнять keybd_event'ы которые тебе надо. НО фокус клавиатуры то остался в игре, поэтому твоя игра будет принимать эти keybd_event'ы.
>>1567029Ясно, но у меня так не захватывает фокус, нужно нажимать, а после нажатия фокус сбивается. Пробовал пока в блокноте. Но я не делал еще никакое окно модальным, ибо ты уже 3 раз не можешь про него ответить. Я могу сделать это окно модальным только в контексте приложения.
>>1567036>ибо ты уже 3 раз не можешь про него ответить.Ну просто указываешь в ресурсах DS_SYSMODAL и всё, никаких сложностей у меня не было.Не должен фокус сбиваться, этот кривой способ должен везде работать. Может надо код писать в оконной процедуре.. из за этого может теряется фокус хз.Щас с deskpins попробую.
Вы ебанаты не советуйте ему эту хуйню. Она может и заработает, только игрушка его сразу отключит/забанит потому что модуль античита 100% вшит в клиент
>>1567049>DS_SYSMODALВообще, в msdn написано>This style is obsolete and is included for compatibility with 16-bit versions of Windows. If you specify this style, the system creates the dialog box with the WS_EX_TOPMOST style. This style does not prevent the user from accessing other windows on the desktop.У тебя какая ос? 16 битные... Это что? Это по моему даже не ХР. Это 98 нахуй...
>>1567056Короче.. используй deskpins. Щас проверил, закоментил DS_SYSMODAL, работает. Я не буду тут разбираться в тонкостях, ты просил способ обойти хуйню с sendinput, я тебе сказал как это сделал, прогу сам собирай. Главное пойми основной принцип: 1 Запускаешь свою прогу, закрепляешь её deskpins'ом2 Кликаешь в то место куда тебе надо(устанавливаешь фокус клавиатуры)3 Зажимаешь хоткей который указал в GetAsyncKeyState 4 При зажатом хоткее наводишь курсор на окно своей програмыОна как бы снимается с паузы и начинает хуячить keybd_event'ы, а фокус клавы остался там, и там где он остался, то и будет принимать эти keybd_event'ы.Как сделаешь, отпишись. :)
>>1567074Хз, у меня не получается. Вроде, все правильно делаю. Фокус при наведении не захватывается, нужно нажимать мышкой. После захвата фокуса в консоль выводится инфа о том, что хоткей (стрелка вверх) была нажата, как отрабатывают keybd_eventы не известно (пытаюсь сымитировать нажатие и отпускание клавиши Z).Код: https://pastebin.com/8gHq99fH
>>1567105Кстати, попробовал горячую клавишу тоже на Z заменить, keybd_event с этой кнопкой зацикливает хендлер, значит keybd_eventы работают. Проблема с этим фокусом.
>>1567127А ты мой код можешь скомпилить и у себя запустить? Там надо пролинковать только -lgdi32. Или я могу скинуть свой exeшник.
>>1567164Да я похоже понял. у меня окно делается DialogBoxParam. И GetAsyncKeyState c keybd_event внутри оконной процедуры.
>>1567173>libstdc++-6.dll не найденДа впизду(или завтра уже). Делай через DialogBoxParam, будет работать.
>>1540431 (OP)Анчоусы, добрый вечер. Хочу вкатиться в C++(опыт погромирования есть), но вот задумался. Может сперва с C начать? Или с C++ сразу. Как вы считаете?
>>1567188> А почему не СИ сперва?Потому что тебя троллят. Кресты на порядок сложнее, запутаннее, а предпочтительный стиль программирования на крестах меняется с каждым стандартом. Но тем не менее их все равно придется выучить. Потом.
>>1567182Завтра попробую. Вот, если что, все dll с которыми приложение взаимодействует. Если что, думаю, могу тупо все из списка в один архив с exeшником засунуть и залить на хостинг.
>>1567185Начни с книжки по языку си от их авторов, прочитай ее полностью, пока не поймешь каждое слово. Там база баз. Если типы данных и массивы покажутся примитивными, то веселье может начаться на структурах, указателях. Так же есть полно всяких деректив define, pragma и тд обязательных к ознакомлению. После этого всего уже можно изучать плюсы, начиная с ооп, std библиотека, потом шаблоны, stl библиотека и тд. Там уже сам поймешь куда лезть, а куда нет.
>>1567204>Дэниса РитчаДа>последней редакцииНе обязательно. Бери, какую найдешь, по последнему стандарту в си (99).
>>1567192Да эти дауны сишники тебя тролят, плюсы это другой язык. Вон тетка поясняет что надо сразу плюсы учить.https://www.youtube.com/watch?v=YnWhqhNdYyk
>>1567209Хотя, я сейчас посмотрел, они C11, вроде как, и не выпускали. А там многопоточность, которую ты в любом случае затронешь, когда плюсы будешь изучать. Так что бери любую редакцию или поновее, какую найдешь.
>>1567213Тетки на cppcon - это отдельная история. Одно выступление охуительнее другого. Недавно вон тянка рассказывала дядям, что такое таблица виртуальных методов, и где она лежит в энтих ваших классах. >>1503195
>>1566762>1 Послать сообщение из одной программы в другую - это гемор, это взлом и все вытекающие. Это можно сделать только посредством hookП Р И Д У Р О КSendNotifyMessage()
>>1567321Это кроссплатформенный ассемблер, вась.А трупстрауса++ - это ассемблер, в который зачем-то добавили унитаз, кухонную раковину, несвежий труп страуса и миниган для стрельбы по ногам и прочим конечностям. Ещё можно сконпелировать пушку boostАК-630, если минигана нетостаточно
>>1567193>писать хуйню для взаимодействия с msvcp приложениями на плюсовом gcc, у которого свои костыли вместо стандартной либыМесье знает толк.
>>1567329Алсо, особенно смищно, учитывая что плюсов там и нет. Такой-то PIERDOLIENG ради использования cout вместо printf.
>>1540431 (OP)Сап, няши, такой вопрос - в шиндовс (win7) x64 процесс может загружать x86 библиотеку с ресурсами (иконки)? Тут такое дело - мигрирую 32 битной на 64 битную систему, захотел себе и тотал коммандер 64 битный, но вот старый у меня тщательно настроен и мною кастомирзирован, в частности я когда-то нарисовал+надергал иконки и захерачил их в библиотеку в VS6.Теперь я давно не прогаю, никаких студий у меня не стоит и я подумал пиздец, придется либо просить кого-то пересобирать библиотеку, либо редактировать каким-нибудь редактором ресурсов.Но с удивлением обнаружил, что эта библиотека WCMICONS.DLL в 64-битном тотале осталась 32-битной. Это законно вообще?
>>1567358Если там кода нет - можно хоть PowerPC или Alpha библиотеку от NT4 подсунуть, приложению похуй.
>>1567361Да там кода нет, там одна секция с ресурсами. Я тоже так же подумал, но закралось сомнение, что шиндовс может зарубить это дело. Спасибо, лучей добра.
Как создать диалоговое окно без VS и MFC? Просто не понимаю: что надо передать вторым параметром? Документация в msdn нихуя не говорит о MAKEINTRESOURCE(). Я только понял, что проект MFC в VS генерирует файл ресурсов каких-то .rc и заголовок с константами .h. А как без этого всего?>DialogBoxParam(hInstance, MAKEINTRESOURCE(????), NULL, (DLGPROC)DialogProc, 0);GetlastError() говорит о коде 1812, который, как я понял, как раз связан с этим аргументом. Я туда пробовал в цикле передавать числа от 0 до дохуя, пока функция не вернет > 0, но один хер ничего не вышло.
Я хз, один хуй не работает с DialogBoxParam. Попробовал даже на семерке.Вот весь проект вместе с исполняемым файлом и dll библиотеками:https://mega.nz/#!dQNgmISS!LvFJT7ff-hQHDJhAaA4uk9virqz1Q2hRkU8xqshOVmIЕсли не сложно, попробуй у себя запусти или хотя бы код глянь. Пробовал так же и без DS_SYSMODAL (с diskpins) - тоже самое.
двощ, решил я войти в айти, поставил code::blocks 17.12 и mingw который с ним за компанию идёт. int indicator = 2;int proc (void) { indicator = indicator + 1; return 0; }int main(){ printf("%d", indicator); proc(); printf("%d", indicator);}почему данный говнокод выдает 23? ведь, если не пиздят книги, впроцедуру копируются значения глобальных переменных а сами они не изменяются.
>>1567598>жопочтецЕсли ты прочитал, что глобальная переменная не должна меняться в функциях, то - да.
>>1567552Поверхностно глянул, думаю вот тут проблема: case WM_COMMAND: if (GetAsyncKeyState(VK_SPACE)) {Тут у тебя прога ждёт сообщение WM_COMMAND. Не надо завязывать GetAsyncKeyState на WM_COMMAND, надо чтобы GetAsyncKeyState просто выполнялась с параметром хоткея. У меня на скрине она просто выполняется без WM_COMMAND, хотя тоже можно завязать на WM_COMMAND(77h-код клавиши).
>>1567618>вынести GetAsyncKeyState из switchНаверно да, попробуй, я хз как это сделать. Надо чтобы она самостоятельно проверяла клавишу, без сообщений.
>>1567626Лол, вроде, сработало. Надо в игре попробовать. Алсо, я правильно понимаю, что это работает только с удержанием клавиши? А если нужна определенная периодичность, то надо свои костыли для обработки keybd_event писать?
Меня убивает местный рандом. Вот надо написать программу, решающую задачу о встрече. Я пишу такsrand(time(NULL));double z;for (int i=0;i< 1000000; i++){int k = rand()%60;int j = rand()%60;if (abs(k-j) < 15)z++;}prinft("%f", z/1000000);И эта программа выдает неверные результаты.А такой же код на пистоне с использованием randint(0, 60) выдает верные результаты. Почему?
>>1567633>то надо свои костыли для обработки keybd_event писать?Ага.. я беру текст из текcтового файла и подставляю в keybd_event я там немного перепутал, sendinput тоже должен работать по идее
>>1567638С игрой не выходит) Приходится вручную отпускать кнопку и нажимать снова, чтобы keybd_event/sendinput отработали 1 раз. Но это я просто посылаю сотни событий за раз. Надо будет еще как-то обработать эти нажатия, ограничив число вызовов.
>>1567643Код просто для примера. Так то там нет такой ошибки.Вообще результат отличается на сотые, хотя должен в худшем случае на десятитысячные.
>>1567650Тебе надо сделать условие - если GetAsyncKeyState возвращает что хоткей не нажат, то тупо выход из процедуры.
>>1540431 (OP)Интересно а как распознователи всякие пишут? Я погромист-ньюфаня и крайне с трудом представляю как это. Вводят чтоли определённый диапазон геометрический на соответсвие какой либо области пределам формы? Цвет детектят по попаданию пикселей в тот или иной цветойо диапазон? Ну допустим программа отличает где кошка где собака. Очевидно что у собаки более длинный нос чем кошки, меньше глаза чем у кошки и есть программа которая сверяет размеры + старается прогнать это всё под какой-то готовый шаблон похожей на кошчий нос формы. Сложно на словах это объяснять, ну я думаю вы понели.
>>1567906Чтобы в этом разобраться, тебе надо разобраться в алгоритмах, которые для этого используются. Бери какую-то книжку по алгоритмам распознавания и читай.
А можно как-то переписать функцию scanf() чтобы можно было делать так: scanf("%Y", &struc), где struc - мной определенная структура?
>>1568131конечно! если ты новичек, это будет еще и интересной задачкой на программированиеделать примерно так: пишешь свою-функцию обертку my_scanf (или как ты ее назовешь), в ней парсишь первый параметр, как встретишь свою спецификацию формата, разбираешь ее по полям структуры, подготавливаешь новую форматную строку и передаешь дальше в стандартный scanf
>>1568148my_scanf(char *s, ???)А что идет вторым параметром? Я хочу чтобы она не только со struct работала, а как scanf(), с примитивами тоже.Алсо, а без определения своей ф-ции никак? Ну, типо питоновский overriding.
>>1540542а в эту хуйню встроен компилятор или это как просто редактор кода и компилятор отдельно нужно качать?
>>1568152>???Название твоей структуры>overridingМожешь её назвать scanf и она заменит обычный сканф, но зачем?
>>1568158>>Название твоей структурыА мне надо чтобы она и с интами и чарами работала, вотъ!>>Можешь её назвать scanf и она заменит обычный сканфРазве я не получу ошибку?
>>1568162>она и сТогда пусть принимает указатель на войд и уже сама как-то решает, что это за указатель. Сканф парсит для этого форматную строчку. >Разве я не получу ошибку?Проверь. Но опять же, зачем так делать?.
>>1568172>>Тогда пусть принимает указатель на войд и уже сама как-то решает, что это за указатель. Сканф парсит для этого форматную строчку.Можно поподробнее?
>>1568162>А мне надо чтобы она и с интами и чарами работала, вотъare you dolboeb?https://pastebin.com/wrytAs4b
Ананасы, кто что знает о SDCC компиляторе для 8-битных мк (в частности мне он нужен для stm8)? Оно вообще пригодно для нормальной работы?Я гоняю сейчас с ним тестовый код. Скомпилировал и слинковал код с отсутствующей реализацией функции - так оно сгенерировало финальный бинарь, а несуществующую функцию установило как будто она размещена на 0x0, лол. Ворнинг (не ошибку, а именно блять ворнинг) оно, конечно, напечатало, но из-за подобного долбоебизма пришлось добавить костыль в makefile. Теперь думаю - продолжать работать с этим говном или уж лучше юзать бесплатный IAR (при этом мне нужно будет его запускать на линуксе под вайном).Читаю их списки рассылки - чувстсво, будто компилятор пишут какие-то отбитые индусы.
>>1568185Так меня интересует именно функция.>>1568181>>void ∗ vне знал про такую штуку, надо будет попробовать она во всех стандартах есть?
>>1568225Анон, это все мелочи, говорю же, в самом коде нет таких ошибок. Результат то почти верный, отличается на сотые, тогда как в пистоне на десятитысячные.
>>1567636Сама задача о встрече к словуЕсть 2 человека. Они договариваются встретиться в промежуток времени от часа до двух. После прихода они ждут не более 15 минут. Найдите шанс их встречи.И в цикле должно быть <=15
Помогите, пожалуйста, с установкой Visual Studio Community Edition. Что именно нужно установить для СИ. Не хочу ничего лишнего загружать просто.
>>1568298нет. просто там если всё без разбора груизть 6гб будет загружаться. алсо я вот прочитал описание всех этих пакетов и не увидел там ни одного упоминания C только C++ и шарп.
>>1568152>А что идет вторым параметром?функции с переменным числом параметров умеешь писать? это и будет
>>1568300Будет грузиться меньше гигабайта.>>1568295Визуалка не предназначена для си. Там суржик вместо сишечки.
>>1568310>Visual Studio 2017 Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.из оп поста.
>>1568341А на чём погромировать? На досе? Если ты о unix то иди со своей сектой в /s/ и там агитируй. Я хочу учить язык программирования, а не сосноль пердоли.
>>1568361Да, обычная. Но надо провести моделирование, что я и пытаюсь сделать. На питоне все сходится, на си нет.
Итак, господа, СИшники в вашем ряду пополнилось. Только что высрал свой первый хеллоуворлд. Нравится вам это или нет, но теперь такая ньюфажная хуета как я с вами в одном треде будет сидеть.
>>1568455>вендосектантВскукарек со стороны столлманопараши. Кроме игрушек, на линупсе нет еще дохуя полезного софта, например, для записи и редактирования аудио и написания музыки. На венде куча вст плагинов на любой вкус и цвет, а на линупсе хуй да нихуя, хотя битвиг и рипер портировали, но какой в них смысл без плагинов? Правда, на маке дела получше, но для этого нужно быть геем. Остальные юниксы начиная со бзди даже рассматривать всерьез смешно.
>>1568474Да не спорь ты сним, это же пердоля. Ты ему аргументы, он тебя гавном поливает. У них секта такая, самые агрессивные и неадекватные в айти сторонники пердоли. Просто игнорируй.
>>1568474Шиз, какая музыка, мы в треде языка си, программировать на котором в юникс системе не в пример удобнее.
>>1568479>программировать на котором в юникс системе не в пример удобнее.Может ему нужно программировать на Си и параллельно писать музыку, откуда ты знаешь? Современные ОС многозадачные, если что.
>>1568455На самом деле ты зря жс недооцениваешь сам так делал, сейчас JavаScript - полноценный язык программирования, и на нем есть интересные вещи.
>>1568474Ох какие мелочные претензии-то стали. Давно не следил, раньше хоть предъявляли, что игр нет, фотошопа. А сейчас только плагинов для аудиопердоль не хватает? Может и правда пора перекатываться.
>>1568563>А сейчас только плагинов для аудиопердоль не хватает?А че ты смеешься? Твой любимый репчик и симфо джаз павер металкор в аудиопердолях записывается и сводится целиком, времена оналога давно позади.
>>1568578А потом хранятся и передаются мне тысячей линуксов, как оба этих факта вообще меня касаются?
>>1568591Так эти люди и есть аудиопердоли! Желаю им всего наилучшего, кстати, но в отличие от пользователей фотошопа и тем более игорь, их число просто ничтожно. Поэтому я и сказал, что претензии стали мелочными.
>>1568295> Desktop Development with C++Вот это. Но тебе правильно сказали, запасись местом на винте, там далеко не гигабайт.>>1568310> Визуалка не предназначена для сиСохраняешь файл с расширением .c - будет Си. Или можно еще в настройках проекта насильно компилятору язык задать (/Tc).>>1568479> программировать на котором в юникс системе не в пример удобнееОсобенно удобно пердолиться в gdb, когда source-level отладка не помогает, при том, что на винде есть качественные графические отладчики машинного кода. Или искать файлы find-ом, при том, что в винде есть Everything. Или придумывать, как же сделать программу с GUI, и чтобы не выглядело как Tk. Или изобретать свой формат для хранения настроек, снова. Или собирать чужие некомпилирующиеся утилиты с дохулиардом зависимостей, потому что скачать уже собранный бинарник нельзя. Вернее, скачать-то можно, но у тебя либц не той версии, и вообще иди нахуй.
>>1568599Ну я пользователь аудиопердоль, например, что мешает мне полностью перейти на линупс. Если бы не оно, венду можно было бы держать только для йобы и на черный день (хотя на черный день достаточно ВМ).
>>1568612Всё так. У тебя написано, что строку ввести "upto 100 character", но кто останавливает от введения более длинной? Вот тебе уже и overflow твоего массива. 100 уже будет много, потому что нужно место для '\0'
>>1568612Потому что вижуалка.Там же написано, что нужно использовать _CRT_SECURE_NO_WARNINGS. Я уже не помню, как это делается, загугли сам.
>>1568617>>1568616Спасибо всем огромное за ответы, я уже отключил это предупреждение. Там по ссылке от визуалки инструкцию дали как его отключить.
>>1568617>>1568619Что вы за люди-то.Черным по белому написано: "используй scanf_s вместо scanf", а вы тулите устаревшие небезопасные функции и отключаете предупреждения.
>>1568655о спасибо, анон. тогда я включу назад вонинг тот. да я просто нашёл тут один самоучитель ебашу по нему, но он видимо староватый это я уже понял т.к. там новую строку обозначают 'n', а не '\n'.
>>1568612Строки читай так: scanf("%[^\n]", s), вроде даже так можно scanf("%100[^\n]", s) с прописанным ограничением.
>>1568665>>1568655только в отличии от scanf в scanf_s есть ещё третий аргумент - длина буфера её тоже нужно прописать иначе возможны выебоны со стороны системы.
>>1568681Правильно, потому что эта функция безопасна и проверяет, не затронешь ли ты чужую память во время ее выполнения.А обычная версия может переписать чужой фрагмент памяти и порушить тебе все.
>>1568776Ничего себе. Не знал, что язык такие возможности имеет, спасибо огромное возьму это на заметку.
>>1568776а если не ставить ограничение у строки в 100? просто не ставить скобки, а тупо задать перменную. то будет анлимит?
>>1568782Это, вроде, непереносимый код.То есть только msvc такое скомпилит, а gcc будет работать с обычным scanf, насколько я знаю - у самого не получилось скомпилить прогу с VS2015 с помощью gcc.>>1568800Почитай про объявление массивов.Если ты уберешь квадратные скобки, то это будет обычная переменная. Если поставишь звёздочку - указатель, но нужно будет вручную выделять память под необходимое количество элементов.
>>1568857я уже загуглил эту тему на одном форуме, да обычно нужно юзать scanf, а scanf_s для безопасности в vs.анчоус, молю, а как сделать чтобы он пробелы моего импута учитывал, а не обрывал на них?
>>1568859Тут уже сорян, я вообще хуесос из соседнего треда и решил бы эту проблему с помощью std::cout << std::noskipws.
>>1568655> устаревшие небезопасные функцииТолько по мнению Microsoft, которая идет с этим мнением и со своим _s-говном в известном направлении.
>>1568893а вот я дегенерат, мне же анон выше уже объяснял это. спасибо, огромноеял.>>1568989попробую и то и то.
>>1568867>винда>как добавить пробел>решил проблему плюсовым ай о толстота пиздец. Хотя прямо под уровень треда.лайк если учишся в школе 21 и учишся писать код!!!
>>1567204алсо загуглил вчера его биографию, что-то грустно стало. мужик придумал C много в современных кудахтерах сделано благодаря ему, а он умер в своём доме в одиночестве от рака простаты и даже точную дату смерти не знают т.к. не сразу его обнаружили.
>>1569078А что за прикол со школой21?>>1569081Вроде бы сейчас такое норма. Капитализм же, вот перестал дед деньги делать, на него и положили болт.
>>1569096да не он до последнего был у дел. работал там, его коллека же и обнаружил что он умер когда он долго не выходил на связь. жил там в доме, до последних дней жизни он занимался исследованиями в области кудахтеров. ну жалко, я то думал он ещё живой, обычно авторы предыдущих языков которые я учил все живые.
>>1568539>интересные вещиПишешь кароч такой const ya = {sosu: 'hui'}, каким-то хуем меняешь свойство sosu, полагая что это невозможно, на выходе получаешь не то, что ожидал. В итоге не можешь понять где и что могло наебнуться в коде.
>>1568539Джава срипты, питоны, хуйтоны и прочая хуета для детей и веб-клоунов высерающих сайты под ключ это всё несерьёзно. Это всё языки для тех кто не хотели работать на дно работах и ВАШЛИ В АЙТИ лишь бы бабки были. Настоящие тру зароты дрочат Сишечку и крестики.
>>1569101А еще, а еще... Берешь такой строку, нахуй, и передаешь в аргумент, ожидающий интегер))))000))))00)0
>>1568310>Визуалка не предназначена для си.Ну да. Нахуй Си вообще нужен? На нём пишут только под микроконтроллеры, а там своё IDE есть фирменное. Студия же предназначена для нормальных программ под ПК, а тут Си не всрался совершенно, инвалидный огрызок.
>>1569078Ты бы хоть потрудился прочесть пост ниже, что я пишу на плюсах, а сюда иногда просто заглядываю.Но покукарекать же важнее.
>>1569110Что ты скрытый сишник? Вроде бы на крестах пишешь, чего ещё нужно, но нет нужно заглянуть в си... Не скрывай свои желания
Как в СИ график сделать? Есть ли какой-нибудь модуль? Есть группа точек (x;y) и вот по ним нужно построить функцию.
>>1569232Двумерный массив char размером NxM, где N - диапазон по X, деленный на шаг, а M - та же хуйня по Y. Идешь от x0 до xn, но если модуль производной больше 1, то не инкрементишь, а увеличиваешь ровно настолько, чтоб инкреметнулся y. И, собсно, все y, попадающие в вертикальный диапазон, рисуешь в массив (предварительно заполненный пробелами). А потом этот массив печатаешь.
>>1569232Искать какую-то графическую (или гуй с зачаточной графикой) библиотеку. SDL или еще что. Если подойдет что программа будет генерировать svg файл с графиком (а не рисовать его на мониторе), то после беглого изучения описания стандарта (svg) с вики и расмотреных нескольких примеров простых свг можно писать график в свг. Там ничего особо сложного нет, должно хватить часа двух. А если еще найжешь свг с графикомто там вообще все просто - только свои числа подставить.
>>1569253ну мне в столбик нравится. я имел в виду более такие фундментальные вещи. мало ли какие-то другие методы есть.
>>1569247Ну если сделать так что а всегда больше б (тоесть если б больше а то менять их местами) то можно убрать один printf и оставить проверку только на равенство. Или ввести функции min и max от двух аргументов, тогда тоже можно убрать один printf опставить проверку на равенство и если не равны то там в будет что то типа printf("......", min(a,b), max(a,b));
>>1569256а точно спасибо, как это я с ретурном то проебался. точно так программа гораздо быстрее будет завршаться. спасибо большое, анчоус.А можешь подсказать ещё одну вещь.Вот нужна программа которая бы принимала x список чисел y список чиселкоторый введёт пользователь. Суть в том что пользователь может ввести просто 3 числа, а может 10 ввести. Как это реализовать?
>>1569262Рисовать тупо или именно графики строить? Хотелось бы готовый модуль с графиками в идеале. Ну или придётся с лицом лягушки пилить график самостоятельно
>>1569247Так мона:int a, b, x;printf("Enter zaloopa");scanf("%d%d", &a, &b);x=(a>b) ? a:b;//вроде можно без х, но не во всех стандартахif(a!=b)printf("zaloopa is %d, mask is %d", x, (a+b)-x);else printf("pizda");
>>1569263А в чем проблема? Передал координаты ф-ции и получил график. Можешь на гитхабе поискать стороннюю либу если такое не устраивает. Ну или пиздуй в какой-нибуть mathematica(?)/PariGP(?)
>>1569274>Передал координаты ф-ции и получил график.Ну если так то всё шикарно.А как напечатать содержимое односвязного списка?
>>1569299Обратиться к полю, в котором хранишь данные. Потом вспомогательный указатель на следующий элемент подвинуть в цикле while (p->next != NULL).
Выродки блядь, вы можете иф стейтмент закрывать скобками? Невозможно вашу кашу из элифов однострочной хуеты с переносами читать. Либо закрывайте либо пишите тело в той же строке в которой стейтмент. И купите себе блять книжку со стайлгайдом
>>1569414Ребенок-илитарий, написавший 0 строчек коммерческого кода, плиз, не нужно защищать свой скудный ум такой риторикой. Лестница элифов без скобок ВСЕГДА получается нечитаемой
>>1569411Говно, ты? Я тебя узнал. Когда допишешь свой язык программирования? Я устал ждать новое видево!https://www.youtube.com/watch?v=7VNXP8Njotk&list=PLlJ2XpWJ7m_SyyWc12KXOmhJdNURgParL&index=12
>>1569460шизло, ты? паренек делает учебный проект по приколу заливая видосики на ютуб, че тебе не нравится? Ах да, ты же долбоеб пишешь простынки иф стейтментов без скобок друг под кругом, прости что спросил.
>>1569470>эти невнятные пуки ребенка-студннтишки не написавшего ни одной строчки коммерческого кода Не рвись так сильно, илитарий. Сомневаюсь что ты по теме треда вообще хоть что-то кроме хеловорлд левела ответить сможешь.
>эти невнятные пуки ребенка-студннтишки не написавшего ни одной строчки коммерческого кода>Не рвись так сильно, илитарий. Сомневаюсь что ты по теме треда вообще хоть что-то кроме хеловорлд левела ответить сможешь.
>>1568857#ifndef _MSC_VER && !__INTEL_COMPILER && !__STDC_WANT_LIBC_EXT1__// тут у нас типа костыльint scanf_s() {...}#endif
>>1569486Я не жсблядь, но про if без скобок в одну строчку он правильно бомбанул.Никто уже не редактирует код в 80x40 терминалах, и твои лесенки в хуй никому не упали, они просто нечитабельны в нормальной IDE.
>>1569488Еще один жопоглазик, лол. Ты сам-то веришь в хуйню, которую несешь? Вот смотри, тупа логика и нихуя более: когда ты пишешь в строчку, твой ретурн/принтф или что ты там обычно на своем жскале высираешь, просто сливаются с условием. Понимаешь? Т.н. "лесенка" позволяет тебе увидеть разницу в слоях. Так вот, когда эта лесенка одна, тебе на хуй не нужны никакие скобки, они тупо не играют никакой роли. А теперь съебал, шизоид ебаный. Подрочи на свой читабельный тс, лол.
>>1569488Я те больше скажу братиш, тут жсблядей ваще нет. Просто ребенку НЕПРИЯТНО, и в жизни он стремных вещей видел настолько мало, что считает жс чем-то плохим.
>>1569490Ты чё несёшь дегенерат? Ещё раз тебе говорю, по тому что ты пишешь уже видно что опыта у тебя просто ноль. Ниче ещё годик повкатываешься в школе 21, может вкатишься на галеру писать на жсе который ты так ненавидишь (причина наверное даже самому тебе не понятна)
>Я не жсблядь, но про if без скобок в одну строчку он правильно бомбанул.>Никто уже не редактирует код в 80x40 терминалах, и твои лесенки в хуй никому не упали, они просто нечитабельны в нормальной IDE. >Я те больше скажу братиш, тут жсблядей ваще нет. Просто ребенку НЕПРИЯТНО, и в жизни он стремных вещей видел настолько мало, что считает жс чем-то плохим. >Ты чё несёшь дегенерат? Ещё раз тебе говорю, по тому что ты пишешь уже видно что опыта у тебя просто ноль. Ниче ещё годик повкатываешься в школе 21, может вкатишься на галеру писать на жсе который ты так ненавидишь (причина наверное даже самому тебе не понятна)>этот разрыв жопы долбоёба со сломанным детектором.>мам симёны сматли мам
>>1569496>это буйство школомаксималиста в этом иттКак там лабы по "плюсам" с cdin/cout вместо printf?
>>1569495Тоже мне, блядь, притащил пруфы, лол. Ору с тебя - дауна. Алсо, скрины делать научись, говно позорное. И про лесенки свои иди затирай своим одноклассникам, за одно код стайлом похвастаетесь друг перед другом и подрочите на брудершафт, попивая смузи. Хррррртьфу!
Кстати как раз в жыесе и практикуется эта хуйня с однострочным ифом без скобок. Работая с си я такое видел только в либо стрёмном впопенсорце/всратом эмбеде из 90-ых (ну где нет никаких норм по кодстайлу), либо в коде который писали вчерашние студенты, так что господа сверху правы - с буйствующим гринтекстером все понятно.
Ты можешь быть истинно свободным только в рамках существующей системы правил. Либо это будут твои внутренние нравственные ограничения, либо навязанные обществом законы. Существующие правила позволяют не думать и не выбирать из множества альтернативных выборов. Так как выбора нет. Это повышает твою продуктивность и эффективность в конечном счете. Об этом, кстати, еще депутат Музулина постоянно толкует.Поэтому если вы примете правило 80 символов в строке, функции в 25 строк, плюс строгий код-гайл, вы только выиграете. Вот.
>>1569614Что там сложного? Инфы про указатели полно. Вот односвязный список (LIFO): https://pastebin.com/mbmLj3ty
>>1570228А можно создать список и сразу в нём инициализацию переменных сделать? а то у меня получается только создать их, а инициализацию нельзя. ну типа создать список с интеджерами уже известными.
>>1570299Не понял твой вопрос. Ты когда память новому элементу выделяешь, тогда и "инициализируешь" его. Если тебе нужно его каким-то дефолтным значением после создания забить, то берешь и указываешь нужное. Но только нахуя это? Когда элемент добавляешь, тогда и выделяй память + значение нужное вбивай.
>>1570304вот. у меня список я туда могу поместить какие-то переменные, но сразу им значения присовить не могу. не даёт. почему?
>>1570318Про структуры почитай. Это не список. Список - это колбаса из элементов типа этой структуры, которые связаны между собой.
>>1570322Ты тролль? Я тогда вообще не понимаю, как ты до списков дошел. Инфы, повторю, дохуя. Не обязательно книжку, можно статьи по мере надобности читать. Но для тебя, похоже, лучше действительно книжку от корки до корки прочитать, если цель изучения стоит. А если написать список, то читаешь про структуры, указатели, функции.
>>1570326Я слез с питона недавно и там списки очень просто делались,а здесь я охуеваю. Да, хочу выучить язык нормально.
>>1570335понял. съебался уже отсюда читать книгу. там кстати ещё и перевод на русский есть вообще шикарно и упражнения это всё радует.