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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
C Programming Language.png78 Кб, 792x1023
C Programming Language #51 /clang/ # OP 1540431 В конец треда | Веб
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь 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_C

https://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)
3 1540444
Чем конст помечается в этих ваших байтах? Может есть какой-то сегмент в стэке или дампе, куда складываются адреса констант и ось начинает членососить за попытку что-либо из этого изменить? Или как оно всё это делается - расскажите плс.
4 1540456
>>40444
Ничем. const - для программиста и компилятора в основном. Но да, компилятор может положить static const или некоторые литералы в сегмент, доступный только на чтение, и тогда при попытке что-то поменять программа свалится. Если у тебя микроконтроллер, то этот сегмент обычно физически недоступен для записи вообще или без плясок с бубном, а если десктоп, то требующиеся атрибуты сегмента записываются в исполняемом файле.
5 1540480
>>40444
ничем
создатели си поэтому поводу очень не хотели добавлять const в язык и сделали это только под сильным давлением общественности
Си для прграммистов.7z.png2,8 Мб, 300x420
6 1540485
7 1540486
>>40480
Фактически const добавили в комитете по стандартизации, а не Ричи с Томпсоном.
image.png99 Кб, 1366x768
8 1540542
>>1540172
Ну, хуярим немношк указателей и у нас работает. Это, правда.
9 1540544
>>40542

>Это, правда, .cpp, но должно работать и в Си.

10 1540734
Сап двач, есть такая проблема что не могу сделать лабы по проге, а скоро сессия и если не сдам, то не допустят к ней. Прошу помощи двач, т.к сам я учусь не на программиста, но приходиться учить Си.
Дана строка состоящая из слов разделённых пробелами. Нужно вывести слово с максимальной длиной, порядковый номер этого слова, и номер позиции с которого оно начинается.
Вектора нельзя, стринг нельзя. Чисто строка как чаровский массив.
Помогите пожалуйста
11 1540747
>>40544

>cp


Моча тут цп!
12 1540755
>>40734
за один проход все делается.
Тебе нужно на каждом пробеле сравнивать расстояние до прошлого пробела с последним рекордом, если расстояние больше чем рекорд, то ты это расстояние и индекс-расстояние+1 записываешь. В конце просто выводишь
13 1540757
>>40755
Ну я пытался так сделать, но у меня нихуя не вышло и я психанудл и удалил всё, если ты шаришь, может объяснишь мне всё например в дискорде. Не за бесплатно конечно, можно о цене договориться
14 1540764
>>40757
Бляяяяя дай лучше мне денег!!! это же хуйня на самом деле. самый стоковый конечный автомат с inword-outword.
15 1540768
>>40764
Да я понимаю что хуйня, но я оч ленивый и тупой, поэту и хочу найти человека чтобы подтянуть мои знания
17 1540784
А что это значит?
while (index < ibuf) {
++index;
write(1, &string[index], 1);
}>>40778
18 1540803
Привет, форумчане! я ещё новенький. Есть где-нибудь в свободном доступе массив с cp866 (индекс -- dec номер, значение -- собсна символ)? Можно, конечно, ручками всё вбить, но как-то не очень хочется.

Гуглится оно не очень, ну или просто запросы у меня хреновые.
19 1540811
>>40803
Возьми и распечатай, ты программист или где.
20 1540812
>>40811
Спасибо.
21 1540917
>>40778
Надеюсь не встречу в жизни людей, такое пишущих

перекрестился
23 1541614
>>40784
походу он просто не знал как срез строки вывести, вот и вывел сичтемколом
image.png78 Кб, 300x169
24 1541813
>>40917

>перекрестился

25 1542377
Обожаю сишечку, недавно сел и написал без задней мысли свой hello world на одном дыхании. На крестах хуй такое провернешь.
26 1542444
27 1543237
>>42377
Анон, я так и не понял, что у тебя там не провернуть на крестах?
28 1543950
>>43237
Сел и пишешь, не надо никакую архитектуру обкатывать, думать в какой манере код писать и прочие проблемы крестов.
29 1543966
>>43950

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


Когда пишешь на цэпепе, не используй функции из библиотеки C, только std, только хардкор. Я решил твою проблему.
30 1543985
>>43950
Прямолинейность - это да. Но разница лишь в том, что сишечка меньше вопросов задает при фокусах с памятью, всякими километровыми кастами мазать код не надо. А архитектура уровня laba2.cpp на любом языке зашквар при большом масштабе проекта, так же как и проебать большую часть времени на написание абстрагирование каждого чиха, когда у задачи есть фиксированное начало и конец в пределах нескольких сот строк код.
31 1543986
>>43966
дык инклудишь <cstdio>, а не <stdio.h>, и будет тебе std::printf
32 1544005
>>43950
Код это код, как написал так и будет. Кресты не ограничивают, проблем нет, только кривые руки танцора.
33 1544240
Столкнулся с тем, что использую такое описание функций:
код = функция(&данные)
Есть ли какое-либо соглашение какой код ошибки должен быть при успехе? Просто логично использовать положительное значение - истинность возвращаемого значения глазами читается как успех выполнения, но тогда нельзя указать несколько вариантов ошибок. Если поставить успешное выполнение на 0, то мозолит глаза постоянная проверка !что-то. На какой стул сесть?
34 1544382
>>44240
Эта социошлюха, вместо написания кода беспокоится быть как все, а то вдруг погонят.
Куда бы ни попала, что бы не делала, на уме только одно - социоблядство.
35 1544394
>>44240
0 == , никто не запрещает писать константы справа, так читаемо
36 1544415
>>44240
Зависит от того, сколько вариантов ошибок тебе нужно получать. Если только успешность/неуспешность исполнения, то 0 при ошибке, и любое другое значение при успехе. Если вариантов несколько, то выносишь ошибки в дефайны, а 0 сигнализирует успешное завершение. По типу такого:

int err = func(data, buf);
if(err) {
if(err == ERR_DATAOF) free(buf);
else HandleCriticalErr();
return;
}

Есть ещё третий вариант - возвращать 0 при ошибке исполнения, а код ошибки ложить куда-то в глобальную переменную (либо функцию по типу GetErrCode(), которая это значение откуда-то получает), если тебе код ошибки нужен только изредка, а получать ненулевое значение при успешном выполнении хочется; но это уже извращение.
37 1544557
>>44394

>писать константы справа


Выглядит уебищно
38 1544604
>>44557

>слева


фикс
Норм выглядит, ты чё?
39 1544609
>>44240
Но ведь вариант с разными кодами ошибок и 0-success соответственно предполагают, что ты этот код еще будешь смотреть, а значит возвращенное значение использовать несколько раз, а значит сначала присваивать его переменной по-любому. Ну, а ! или 0== это на любителя, не желающего обрабатывать ошибки должным образом.
40 1544616
>>44604

>Норм выглядит


>0 == yoba


Хуйня, у меня моцг такую логику не понимает, что то должно равняться константе, а тут 0 равен чему то, пиздец короче
41 1544664
>>44616
Что тебе не нравится? Значение функции же выползает из ее имени и присасывается к переменной, когда присваиваешь. Вот ты на месте это переменной ставишь константу и сравниваешь. Гораздо более читаемо, чем после скобок с аргументами. Хуй найдешь там справа. А так и вызов никуда особо не уехал, и константа перед глазами. Это норм практика, писать раздуваемые в длине выражения справа.
42 1544667
>>44616
то же самое, что !, но ! звучит, как "бля", а 0==, как "заебись"
43 1544680
int const i = malloc(sizeof(int)5);
i[0] = 1;

Почему ругается на рид онли, я ж указатель не меняю?
44 1544695
>>44240
В винапи подсмотри. 0 успех, < 0 ошибка, > 0 статус, доп информация.
45 1544714
>>44664

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


Такое видел только в маняучебниках
>>44667

> а 0==, как "заебись"


Как говно звучит, вот заебись звучит func(data, buf) == ERROR,
причем возвращаемый 0 это иногда нихуя не ошибка.
46 1544723
>>44714
охуительно, особенно когда функция до шести параметров принимает

>звучит


Я имел ввиду, отрицание ассоциируется с тем, что что-то не так, а 0 - с отсутствием проблем.
47 1544747
>>44723

>функция до шести параметров принимает


Это то при чем?

>отрицание ассоциируется с тем, что что-то не так, а 0 - с отсутствием проблем.


Только в твоих фантазиях, все ошибки и статусы всегда заменяются дефайнами.
48 1544861
>>44240

> Если поставить успешное выполнение на 0, то мозолит глаза постоянная проверка !что-то


Это единственное, что тебе мозолит глаза в таком языке, на си? Тогда ты очень избирателен
49 1544961
Сборище детей маня олимпиадников. Одни кукаретики, никто программ не писал, иначе бы знали что за них уже давно всё придумано:

if (!SUCCESS(vasyanfunc())) {
printf("puk");
}
50 1544964
лол, не ожидал такой реакции на вопрос, но за советы спасибо
>>44382
а персонально тебе - ты пидор и неудачник, стыдно быть тобой
51 1544965
>>44394
>>44616
Это главным образом для защиты от случайного присваивания когда один знак = проебется
if (yoba = 0) // а хотел сравнить yoba == 0
if (0 = yoba) // компилятор поднимет шухер
52 1544966
>>44240
Обычно возвращается код ошибки, а 0 значит "нет ошибки"
53 1544967
>>44680

>int const i = malloc(sizeof(int)5);


>i[0] = 1;


звезду перенеси перед const
https://ravesli.com/urok-87-ukazateli-i-const/
image.png15 Кб, 356x283
sage 54 1544972
Ну и каким блядь образом в этом ебаном языке СКОПИРОВАТЬ БЛЯДЬ ОДНУ СТРОКУ В ДРУГУЮ? А ЕСЛИ ПЕРВАЯ СТРОКА ПУСТАЯ? А БЛЯДЬ? ДЛЯ КОГО ЭТОТ ЕБАНЫЙ ЯЗЫК БЛЯДЬ?
image.png23 Кб, 633x301
sage 55 1544973
>>44972
Эти ебаные цифры вообще нихуя не влияют ни на что
image.png23 Кб, 641x183
sage 56 1544974
Какого хуя блядь сбрасывает адреса на элементы в структуре блядь я же блядь передаю ебаный адрес на структуру какого хуя блядьааааааааааааа
57 1544981
>>44973
Ну ты же хочешь поменять в рантайме const char*, конечно это упадет
58 1544982
>>44973
Неосилятор шиндусятнек с первого курса плез
59 1544989
>>44974
Ты когда malloc делаешь у тебя структуре новый адрес выдается.
sage 60 1544995
>>44974

>пик


Лол, тебе надо клоуном работать, такой талант, по всем граблям голой жопой проехался.
61 1545001
>>44972
Ловите ньюфага.
62 1545091
>>44974
ого каким стайлгайдом пользуешься? а piton-dalbaeb знаю такой
sage 63 1545362
>>44995
Меня охуенно радует что нигде в мире не написано и не объяснено каким хуем это должно работать и что нужно сделать чтобы это дерьмо работало, и единственный способ узнать как что-то запрогать на этом "языке программирования для людей"... Нажмите на ссылку чтобы узнать!
sage 64 1545366
>>45362
И ни один "рабочий" код в интернете не работает. Охуенно правда? Программирование это охуенно.
65 1545405
>>44974
Ты должен не int возвращать, а указатель на структуру и уже то что вернулось проверять, равно оно нулю или нет.
66 1545417
>>45362
>>44974
зато ты теперь будешь знать зачем таки нужен указатель на указатель, лол
image.png43 Кб, 774x378
67 1545428
>>45417
Я передаю блядь УКАЗАТЕЛЬ НА СТРУКТУРУ КАКОГО ХУЯ ОН НЕ СОХРАНЯЕТСЯ
image.png30 Кб, 773x199
68 1545439
>>45428
Ебать я долбоёб
69 1545446
>>44972
Я об этой хуйне уже в 11 классе от учителя узнал, а тут взрослый ньюфажка с двача не может разобраться лол
70 1545450
>>45446
>>45428

Сделал уже, но ощущение что это работает как ебаный костыль.
71 1545479
>>45439
На чем кодишь?
72 1545503
>>45479
Похоже на visual studio code
image.png4 Кб, 216x88
73 1545517
74 1545580
>>45517

>App


Хочется взять и уебать, кирпичом.
75 1545600
Ебните кто-то это шизло из очередной школы 21, что весь тред засрало своими очень важными скриншотами
76 1545630
>>45428 >>44974 >>44973 >>44972

Программа таки заработала нормально.
https://pastebin.com/RNHJrMWy если кому интересно

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

>>45600
Че охуенно умный да? Родился сразу сеньёром да? Слышь может за гаражи зайдём дон? Сколько жмёшь от пола дон?
77 1545664
>>45630

>Слышь может за гаражи зайдём дон?


спасибо, но нет
предпочитаю отсос от 17ти летней студенточки
78 1545665
>>45600

>очередной школы 21


двачую
лучше бы мышцы качали - это хоть бы пригодилось когда грузчиками в пятерочку пойдут вкалывать, хотя бы не сразу позвонки на спине сотрут, а лет через 7м
79 1545695
>>40431 (OP)
Так сисюны, вот вам реальная задача, есть последовательный сортированный числовой массив размером не больше 1000 и нужно искать в нем элементы быстро аки боженька, кроме бинарного поиска еще что нибудь есть?
80 1545704
>>45695
С бинарным поиском худший случай слишком долгий.
81 1545708
>>45704
Есть предложения? Проблема еще в том, что нужно знать размер массива, а это инт занимающий память...
82 1545722
>>45695
С бинарным поиском худший случай слишком долгий. Но альтернатива это ток экспоненциальный наверное или интерполяционный, и там худший случай тоже хуевый
83 1545728
>>45664

> предпочитаю отсос от 17ти летней студенточки


> учит язык программирования Си


Лул.
84 1545760
>>44961

> if (!SUCCESS(vasyanfunc())) {


> !SUCCESS


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

>>44965

> if (0 = yoba) // компилятор поднимет шухер


А потому что нехуй с нулем сравнивать. Традиционные проверки if (func() != 0), if (!func()), ну и всякие там if ((x = malloc()) != NULL). Ошибиться негде, проблема надуманная. Алсо, этот кривой стиль все равно не защищает при сравнении с переменной.

>>45695
Создаешь тысячу элементов, инкрементируешь те из них, для которых в твоем изначальном массиве есть элемент, получаешь поиск с O(1), идешь нахуй со своей баянной задачей для детей.
85 1545768
>>45760

>для которых в твоем изначальном массиве есть элемент


Есть во всех, все элементы массива заполнены
86 1545919
>>45695
если еще быстрее то нужно менять структуру данных
хешмап даст константу в поиске
87 1545920
>>45695
Линейный поиск. На массиве в 1000 элементов вероятно будет быстрее всего.
88 1545923
>>45768

> Есть во всех, все элементы массива заполнены


build_lookup: table[0..max] = {0}; for elem in src { table[elem]++ }
lookup(x): table[x] != 0
89 1546363
Какие еще есть применения вариативных функций, помимо семейства функций ввода-вывода printf/scanf?
90 1546825
>>46363
Хелло-ворлд
image.png39 Кб, 545x497
91 1547129
>>40542
А мог бы вместо языка плебеев, писать на языке сверхлюдей.
92 1547182
>>45695
11 итераций это слишком долго? ты че ебанутый?
93 1547197
>>45920
У него сортированный массив.
94 1547375
>>47197
Пофиг
95 1547886
>>47197
Какой может быть поиск кроме деления пополам?
96 1548039
>>45600
Нахуй иди, в школе21 с нуля сишную либу пишут, в том числе и strcpy и принтфы всякие, при желании и на ассемблере
Таких дегенератских вопросов там никогда не будет
97 1548058
>>48039

>в том числе и strcpy


не ну раз strcpy тогда ладно
98 1548087
>>48039
ох ебат, вот это уровень
99 1548247
>>48039

>в школе21


имхо, если к вам в байтоебскую контору на тех собес через hr пробился челик с этих курсов, то лучшее что вы можете сделать для своей безопасности и безопасности своей конторки - это безапеляционно слить его в унитаз
100 1548372
реквестирую код на шарпе, который будет менять бинд смены раскладки. то есть, с шифт-альта на ктрл-шифт. с меня как обычно нихуя
F79556E7-7918-4BB2-B47C-D7218E595E9B.jpeg54 Кб, 500x350
101 1548376
>>48372
а ты к сикунам со своим шарпом
зачем пришел?
sage 102 1548578
>>48039

> принтфы всякие


Ну-ка притащи посмотреть %f, правильно реализованный новичком, у которого нет опыта и просто физически не может быть достаточно времени, чтобы разобраться с деталями.
103 1548617
реквестирую картинку со списком программ которые нужны для практики прогроммирования, там еще разделение по цветам, уровень сложности типо, на черном фоне текст
image.png48 Кб, 977x499
104 1548704
>>48578
Я бы так реализовал.
новичок, 9 месяцев опыта разработки на С
105 1548780
>>48704
Ты обернул вызов, мы вам перезвоним
106 1548837
>>48780
Но результат-то достигнут. В условиях не было запрета на использование стандартной библиотеки.
107 1548900
>>48837

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


Ты даже постановку задачи не понял.
sage 108 1548999
>>48837

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


> в школе21 с нуля сишную либу пишут

109 1549029
>>48039

>в школе21


Этож сберкек. Они в этом своем сбербанке до 2010 (а то и дольше) сидели на ДОСе или каком-то досоподобном говне.
И даже щас у них юзеринтерфейсы изобилуют идиомами досовских времен, лол.

>с нуля сишную либу пишут


Это есть в книжке K&R
110 1549051
>>48578
пишешь в гуголь github ecole 42 ft_printf и сосешь бибу
А как правильно реализовать - на длинной арифметике, траблы там нулевые, кроме этого
>>49029
Программа французская, сбер в ней нихуя не может менять
изображение.png15 Кб, 312x295
111 1549057
Палю годноту:

https://github.com/recp/cglm
112 1549198
>>49029

>до 2010 (а то и дольше) сидели на ДОСе


Ходил пару лет назад паспорт менять в стол, увидел оригинальный Midnight Commander на одном из компов, подохуел.
113 1549203
>>49198

>Midnight


Norton офк, чет Штольман слишком глубоко в голову проник.
114 1549358
>>48247
Чето я не понимаю, там же курсы для вкатоидов, и вроде они не так давно работают чтобы кто-то из тамошних реально получил квалификацию достаточную для того чтобы на техсобес попасть

>>49051
блять ты даже не понимаешь насколько смешно выглядит то что ты пишешь. Ни один вкатоид, в какой бы ГеНиАлЬнОй школе он не "учился", не сможет реализовать что-то из стандартной библиотеки ДЕЙСТВИТЕЛЬНО на уровне стандартной библиотеки. Посмотри соусы в том же кланге и подумай как смешно выглядит то что ты говоришь.

>github ecole 42 ft_printf


вот эта хуйня это подтверждает.
115 1549393
>>49203
А вдруг они поддерживают отечественного производителя и это был ВОЛКОВ?
116 1549407
>>49393
Кстати, да, а нортон этот лицензионный? Может надо засудить эту шаражку?
117 1549414
>>49393

>отечественного производителя


>Автор программы — украинский программист Всеволод Волков.



Молодой человек, пройдёмте с нами вон в ту комнату. У нас для Вас есть пара вопросов об исполнении федерального закона 44-ФЗ и в частности постановления правительства "Об утверждении плана по импортозамещению программного обеспечения” от 01.02.2015 № 96.
118 1549449
>>49414
Я чет думал, что он был написан где-то в 90-91 годах, а не 92, так что да, заслужил.
119 1550642
Как мне считать две строки, как я понел scanf для этого не подходит, пробовал баловаться через fgets с fflush чет нихера:
text1
text2
image.png21 Кб, 424x313
120 1550644
>>50642
Жопу себе флашни, блядь. А fgets, в отличие от smashing-smahing-detected-gets, не вычитывает '\n'.
121 1550646
stack-smashing
fix
122 1550647
>>50644
и вот почему такую банальную инфу не пишут в книгах? хуле я зря чейтал их нахой, и вот нахрен ты пишешь без дела
15707413517420.png1,6 Мб, 3840x2160
123 1550648
124 1550649
>>50647
Да я рофлю, анон. А книги только путь указывают. Если ты предпочел не спрашивать совета в /b/, чтоб услышать, что Си не нужон, а таки решился на вкат, то предполагается достаточная самостоятельность, чтоб пробить man gets/fgets и все это уточнить. Что до пикрильского, это я намекнул, что твоя программа отвечает за удержание вывода, чтоб буфер флашить, а у тебя ВВОД. Он приходит с терминала (читай другой программы), и даже если у твоего процесса щечки покраснеют от ожидания, это не поможет, если терминал решил придержать stdin. Но по '\n' он 100% флашит, иначе ты бы свой код не скомпилировал даже, лол.
image.png978 Кб, 750x842
125 1550650
Ладно, тредик, прости, я был неправ. Больше не буду выебываться на ньюфагов.
126 1550666
>>50649
Что за бред. В той же консоли стандартная команда ввода в файл, печатай энтеров сколько влезет пока не нажмешь ctrl-z или как там.
127 1550938
>>50648
Збазиба
128 1550956
>>50649
Ну просмотрел стандартную либу си и решил на задачах отработать, но чет бомбанул (от того шо сам не разобралса) шо не смог прочесть две строки с переносом строки. Ща разберусь, спасибо
sage 129 1550999
>>50649
выёбываешься, щенок
130 1551009
>>50956
my fault, там не гетс \n вычитывает, но не пишет в строку
131 1553635
Ап мертвый тред
132 1553716
>>53635
это же не жаваскрипт, ведь те макаки на каждый пук спрашивают
133 1553727
>>53716
Ты чё несёшь ваще? Эти треды для того и есть, чтобы по теме общаться, спрашивать, рассказывать. Просто этот тред мертвый.
134 1553741
>>53727
51 первый тред, у яваскрипта 150-й
показывает, шо сишники самодостаточные интроверты, песдуй на кухню если хочешь общения
135 1554303
>>53727
Флуд дебилизмом только привлекает еще больше дебилов, а нормальные люди от этого уходят. В результате смерть треда, остаётся зомби только профитный хостеру, ведь ему главное количество посещений и постов, а на качество похуй.
136 1554307
Кто-то может вкатиться и объяснить о синхронизации в Си либо кинуть какие-то референсы на данную тему?
sage 137 1554941
>>54307
Лучше возьми APUE и почитай сам. Потом на threads.h можешь глянуть.
138 1555613
>>54941

>thread.h


Каждый раз триггерюсь с этой glib. Вот почему всякие strchrnul, tsearch и прочие расширялки завезли, а C11 хуй? Только в 2.28, на которую пинус еще не переехал, и хрен ты кому в Си-треде pastebin с этими thrd_create скинешь, чтоб он cc сделал без установки второй версии?
sage 139 1559134
Откуда появился мем типа си не ооп язык, если си существует исключительно в ООП парадигме?
sage 140 1559213
>>59134
Не исключительно. И очевидно потому, что в си нету сахарка на этот счет.
141 1559261
>>59134
Оттуда же, откуда

>в Си нет многопоточности


ну лол же. Таким тупорылым обмудкам в лицо плевать, или игнорить, если физическое лицо вне досягаемости.
sage 142 1559331
>>59134
Ниоткудв. Придумать мем и спиздануть что он появился недостаточно.
143 1559396
>>59213

>Не исключительно


исключительно

>нету сахарка


есть. Просто его меньше, и бойлерплейта по умолчанию тоже меньше.

Да и сахарок - это в основном про ньюфагов. Однако не только ньюфаги, а иногда и люди, даже писавшие больше 20 строк кода на си, почему-то продвигают этот миф.

>>59331
не понял тебя
144 1559407
>>59134

>си существует исключительно в ООП парадигме


>>59396

>исключительно



Что ты имеешь ввиду под "исключительно"?
Если ты думаешь что повсеместное использование структур это и есть ООП, то это глубокая ошибка.

Мимопроходил
145 1559487
>>59134

>си существует исключительно в ООП парадигме


Раскрой свою мысль поподробней.
146 1559490
>>59134
Доступ к полю структуры через точку это не ооп парадигма, это сиподобный синтаксис. Ты вообще знаешь что такое указатель? В си нет объектов, они появляются в расширенных си, таких как Objective-C и C++. А вообще объекты перед этим появились далеко не в С а в SmallTalk, на его основе был выпущен Objective-C, а потом уже и C++
147 1559496
>>59134
Чистое ООП предполагает полную инкапсуляцию состояния объекта и взаимодействие с ним исключительно посредством интерфейса. На Сишечке это элементарно реализуется (void ∗), но писать только такой код означает делать такую же строгую и неповоротливую архитектуру, как можно на любом более высокоуровневом языке в меньше строк, то есть лишено смысла. Си нужен для стрельбы по ногам, и поэтому практически все, что на нем написано и реально использует его преимущества, нарушает принципы ООП.
148 1559518
>>59134
Троллинг тупостью? Си это процедурный язык без поддержки объектно ориентированной парадигмы.

мимо олд 7 лет на сишечке
sage 149 1559938
>>59496

> Чистое ООП предполагает полную инкапсуляцию состояния объекта


Мало ли где там что предполагает. С этой точки зрения кресты, которые требуют все кишки класса обязывают выставлять наружу в .hpp - это вообще не ООП-язык. В то же время сишка позволяет incomplete-структурами это состояние успешно скрывать.
150 1560103
Это ебанутых проектов тред? Хочу написать свой каунтер чисто на битовых операциях. Двач, побудь моей уточкой.

Считать будем в произвольном куске памяти. Как я себе это представляю.
Смотрим поледний бит,
Текущий бит:
если 0, то меняем его на 1 и закончили
если 1, то меняем его на 0, двигаемся влево, гото Текущий бит

Вы пока отвечайте, а я подробнее распишу.
151 1560104
>>60103
Если подробнее
Стартуем:
ставим курор на крайний правый бит (с = 0х1)
Начинаем считать:
Сравниваем текущий бит с 1 ((b & c) == c)
если он 0, то переключаем его (b ^= c) и заканчиваем
если он 1, то переключаем его (b ^= c), двигаем курсор (с<<=1) влево и гото Начинаем считать.
152 1560105
>>60104
Спасибо, уточка, я нашёл свою ошибку
https://ideone.com/lYCegV
(забыл поставить else)
153 1560106
>>60105
Ан, нет. Числа растут, но повторяются, где-то ещё ошибка.
154 1560107
>>60106
printf надо тоже убрать в else.
Стикер319 Кб, 512x512
155 1560110
Так, а битовые операции с произвольными кусками памяти нельзя проводить что ли? Эх, а я-то думал...
156 1560118
>>60110
Как нельзя? Почему нельзя?

char c[128];
long ∗p = (long∗) &c;
for(int i = 0; i < 128/8; ++i) {
∗p &= 0x7F7F7F7F7F7F7F7F;
p++;
}

Код выше, к примеру, применяет битовый AND (И) по отношению к массиву чаров (по 8 байт/чаров за раз). Если конкретнее - очищает старший бит каждого байта.
157 1560120
>>60118

>по отношению к массиву чаров


Ну так я и говорю, что вопрос в произвольных кусках. Например, шифтануть влево на два байта 3000-битное число. Понятно, что его можно разбить на массив и двигать по кускам, но я надеялся, что руками этого делать не придётся.
158 1560125
>>60120
Так зачем руками-то? Напиши функцию. В Python и Haskell к примеру, есть шифт битов в числах произвольного размера, но работы с памятью нет, да и скорость работы этих возможностей далеко не потрясающая (в питухоне особенно, на небольших числах даже умножение дороже шифта битов). Алсо учитывай, что работать удобно сможешь только с числами, кратными байту, а та же функция на ассемблере будет не намного сложнее (если ты, конечно, знаешь x86-64), но в разы эффективнее.
159 1560126
>>60125

>дороже


Дешевле

быстрофикс
160 1560129
>>60125
Даже функции потребуют использования обычных чисел, а я хотел этого избежать. Вон выше, произвольный счётчик пытался сделать исключительно на битовых операциях, но он ограничен самым длинным целочисленным типом, хотя в самой архитектуре счётчика я этого ограничения не вижу, можно просто ползать влево-вправо по битам и всё. Хотел расширить до работы с произвольным отрезком памяти.
161 1560130
>>60110
Если я правильно тебя понял - бери ассемблер&лови сегфолты.
162 1560131
>>60130
Сегфолты предполагались. Просто пытался понять, достаточно ли сишка низкоуровневая, чтобы настолько с битами играться, но, судя по всему, для такого необходимо городить огороды из массивов, чем заниматься не хочется. Финальная идея была в том, чтобы в лоб побитово производить всякие большие математические операции, типа умножить 200 значное число на 300 значное. Посмотреть, как современные процессоры с таким справляются.
163 1560132
>>60129
Смотри, на чистой архитектуре x86 нет опкодов для работы с числами большей битности, чем машинное слово этой архитектуры, так что под капотом без извращений это по другому реализовать не выйдет. На ассемблере можно, конечно, было бы поизвращатся со всякими там AVX, но это тоже не универсальная оптимизация. Вообще не понимаю твоего бугурта, т.к. функции подобного плана без оптимизаций пишутся достаточно быстро, разве что ты хочешь вообще все битовые операции подобным образом реализовать, и ещё для не byte-aligned по длинне чисел к тому же.
164 1560135
>>60132
Никакого бугурта, друг, спасибо за то, что отвечаешь. Просто пытаюсь нащупать "границы" сишечки.
165 1560137
>>60132

>разве что ты хочешь вообще все битовые операции подобным образом реализовать, и ещё для не byte-aligned по длинне чисел к тому же


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

Я рассчитывал, что просто напишу, как хочу изменять память, а компилятор уже разберётся, как это делать кусками, удобными процессору.
166 1560139
>>60135
Понял. Тащемта сишечка на таком низком уровне все-таки неплохо ограничивает, особенно в плане всяких микрооптимизаций и расширений архитектур x86 по типу SSE. Да и вообще для не битовых операций нужно будет на C дикие костыли городить, а тот же результат умножения на уровне ассемблера помещается в пару регистров (фактически промоутит число до количества битов в 2 раза большего), что уже позволяет набросать более эффективный алгоритм. Вообще, если в проде будешь подобное использовать, и лень будет изобретать велосипеды (т.е. производительность не важна будет) - во всяких там Java и C# есть BigInteger с переопределенными операторами, не говоря уже о всякой функциональщине.

>>60137
Для простых битовых операций (and, or, xor) тебе достаточно просто пройтись по всему числу, применяя оператор к каждому из участков памяти, а остаток без alignment замаскировать and после. А дальше - веселее, даже для шифта битов тебе придется что-то интересное придумывать, а на не битовых операциях уж тем более без интересных алгоритмов никак не обойтись.
167 1560148
>>60139

>Да и вообще для не битовых операций нужно будет на C дикие костыли городить


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

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


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

>во всяких там Java и C# есть BigInteger с переопределенными операторами


Так любая криптобиблиотека для сишки это уже BigInteger. Не говоря уже о всяких специальных, вроде gmp. И, полагаю, они там уже давно таких оптимизаций наделали, до которых мне годы раздумий.

> А дальше - веселее, даже для шифта битов тебе придется что-то интересное придумывать


Всё так. Но я не хочу придумывать интересное, ради обхода ограничений языка. Не в этом моё желание.
sage 168 1560576
>>60139

> Да и вообще для не битовых операций нужно будет на C дикие костыли городить


Посоны-то не знают, и пишут длинную арифметику именно на сишке.

>>60148

> битовые операции над памятью.


Ты какой-то хуйней страдаешь. Битовые операции не нужны, достаточно обычных операций над массивом uint_fast32_t.

> для умножения я ничего тупее, чем сложение и счётчик не придумал


В столбик в школе считать учили?
169 1560583
>>40431 (OP)
Не совсем по C вопрос, но, тащемто, связанный с выполением заданий из K&R.

Как отключить построчную буферизацию в терминале? Ubuntu 18.04, bash.

unbuffer и stdbuf -i0 -o0 -e0 не работают.

А то пошел K&R проходить по порядку перед сессией после семестра гвидопыха, ибо гвидолабы сданы на отл. обгвидку-преподавателю, чтобы повторить основы теор. курса с нормальным языком в руках, а тут такие неприятные мелочи.
170 1560592
>>60583
Разве возможно отключить буферизацию stdio.h извне? Сделай setbuf(stdout, NULL); или fflush(stdout)
подписался на тред
171 1560605
какую программулину написать на сишечке для диплома бакалавра?
172 1560607
>>60583
stty raw
173 1560611
>>60605
Программируемый драйвер клавиатуры.
174 1560626
>>60611
и насколько это актуально? типо мемранки программировать? для diy обычно сами на ардуино лепят
external-content.duckduckgo.com.gif2,9 Мб, 805x451
175 1560627
>>60576

>Посоны-то не знают, и пишут длинную арифметику именно на сишке.


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

>Ты какой-то хуйней страдаешь.


Это очевидно.

>В столбик в школе считать учили?


Так, а чем принципиально умножение в столбик отличается от, так сказать, обобщённого умножения? 3 на 5 умножить, и 42154352345 на 3467645645745 для меня одно и то же.

>Битовые операции не нужны



Так, я пожалуй объясню, что я пытаюсь сделать с нуля. Представь себе человека, который вообще ничего не знает о математике и, тем более, программировании. Даже таблицу умножения. и ты его учишь, начиная с двоичной системы счисления. Мне попался хороший ученик в виде компьютера, он уже понимает, что такое 0х0, 0х1, =, ==, ^, <<, и &. И я хочу из этого научить его считать. Для начала просто считать вверх, что я относительно успешно реализовал, учитывая ограничения C.

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

Понятно, что я могу это реализовать просто в виде операций над строками, написать свои реализации 0х0, 0х1, =, ==, ^, <<, и & для '0' и '1', но это получится пикрелейтед, не уверен, что я этого хочу.
176 1560631
>>60607
>>60592

Спасибо!
Дело действительно в организации современных, и не очень, *nix.

http://man7.org/linux/man-pages/man4/console_codes.4.html

Ctrl-D для вызова EOF
Ctrl-H для вызова backspace
Ctrl-? для вызова Delete
sage 177 1560781
>>60627

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


Ты не можешь менять биты в памяти, ни просто, ни сложно разве что row hammer какой-нибудь притащишь, и это, наверное, единственный рабочий способ менять именно биты в современных компах. Процессор читает/пишет память даже не байтами, и не двордами, а целыми кэшлайнами. Даже сама DRAM не читает по одному биту.

Но я понял, чего ты хочешь, и думаю, что тебе нужна не сишка, а какой нибудь digital circuit simulator, вот там ты развернешься. Можешь, например, в nandgame.com поиграть, оно как раз для тебя. А когда наиграешься, вернешься в сишку реализовывать арифметику не в base-2, а в base-232.

> Так, а чем принципиально умножение в столбик отличается от, так сказать, обобщённого умножения?


Ну я так понял, что ты сейчас просто суммируешь первый множитель n раз. Это медленно. А вот если ты попытаешься двоичные числа умножить в столбик, как в школе, ты получишь log(n) уже (и это не самый быстрый способ). С бумажки на комп этот алгоритм переносится очевидным способом: если очередной (от младшего к старшему) бит второго множителя равен единице, ты прибавляешь первый множитель к результату, если равен нулю - не прибавляешь. А потом сдвигаешь первый множитель влево на один бит и повторяешь.
178 1560799
>>60781

>Процессор читает/пишет память даже не байтами, и не двордами, а целыми кэшлайнами. Даже сама DRAM не читает по одному биту.


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

>digital circuit simulator


> nandgame.com


Спасибо, посмотрю.

>ты сейчас просто суммируешь первый множитель n раз. Это медленно.


Да. Я понимаю. Но хотел в начале обойтись как можно меньшим числом концептов. Любому очевидно, что счётные палочки для первоклассников гораздо медленнее, чем множество других способов, но начинают всё равно с них.
179 1560934
>>60799
Биты близко к железу, когда же далеко от железа биты не нужны. Таким образом, не бывает близко к битам и далеко от железа.
Стикер255 Кб, 512x512
180 1560935
>>60934
Это и есть моя проблема!
181 1560965
как решить какуро без бинарного дерева, никто не знает? я тян, пруфов не будет.
182 1561060
Учу C по книге Stephen Prata "C Primer Plus, 6th Edition" (2014) страниц 300 прочитал, упарился уже весь и мой внутренний голос коварно говорит мне:
бросай это дело, всё равно ничего не выйдет

Есть ли вообще смысл учить язык C в маленьком областном центре если мне уже почти 33?
183 1561068
>>61060
Там дальше интереснее.
15768420737950.jpg46 Кб, 620x620
184 1561196
>>61060

>всё равно ничего не выйдет


Хуевый у тебя внутренний голос, он так тебе по любому новому делу говорит? Я вот в электротехнику на старости вкатываюсь, вот там жесть-пиздец, заливаю внутренний голос пивасом и потихоньку иду дальше.
185 1561218
>>61060
хочешь - учи, не хочешь - не учи. какой еще "смысл"? если вкатиться в ойти, съебать из мухосрани и начать зарабатывать 300кк/сек, то сишечка этому способствует больше, чем бухать с друзьями, гулять на природе и вести полноценную жизнь быдла. но если ты ожидаешь вкатиться не выучив ничего, кроме сишечки, то в 2к19 у этого охуенно маленькие шансы. я советую не сдаваться и идти к цели, особенно в плане навыков, которые денег не стоят и другим людям не мешают.
186 1561219
>>61196
Я так то уже 3 года и 2 месяца вкатываюсь, если считать с момента когда я впервые эту книгу читать начал. Вот летом в 20-х числах июля решил жёстко взяться. Почти полгода прошло, а я только 300 страниц одолел. Вот и начали меня одолевать смутные сомнения, на фоне полного отсутствия соответствующих вакансий в моём городе. Я как то ожидал большей от себя скорости, но то ли я тупой, то ли книга написана так чтобы дочитать её до конца смогли не только лишь все
187 1561232
>>61219

>соответствующих вакансий


Так учи то, что востребованно, Джаву например, она С++ на минималках.
188 1561248
>>61218
Да как то дел с вот этим "вкатиться в ойти" всё нарастает и нарастает. Сначала я начал читать книгу, потом решил что и английский знать надо и взялся за курс на дуолинго. Потом решил что в книге маловато упражнений и добавил курс С на степике. Потом заметил что в книге как то совсем не объясняются возможности современных IDE. Да и вообще спецы рекомендуют командную строку линукс и вим. А там ещё прочитал что постоянное переключение взгляда с экрана на клавиатуру быстро утомляет и надо научиться слепой печати и как то это всё прямо снежным комом нарастает
189 1561251
>>61248
Ну с С вкатиться в айти нельзя, разве что сразу с него на пхп перескочить, вакансий для вкатывальщиков нет. Имеющиеся это наверняка НИИ, где сам С дело десятое, а главное матеша.
190 1561255
>>61248

>переключение взгляда с экрана


Ээээ, ты там двумя пальцами печатаешь? Лол. У нас был ведущий инженер, старый пидор с бородой, он двумя указательными пальцами печатал глядя на клавиатуру, мнил себя гуру ИТ, а раньше был геологом, пока их контору к хуям не разогнали, да.
191 1561260
>>61251
Да я как ступеньку С расценивал. Типа план себе как мне показалось хороший составил:
-язык Си (курс Степик, Прата, К&R)
-ассемблер (курс Степик)
-язык Си++ (два курса Степик, Страуструп)
-алгоритмы и структуры данных (два курса Степик)
А потом уже с наработанным знанием и пониманием вышеизложенного за что то более близкое к наличным вакансиям браться
192 1561263
>>61255
Не двумя, но и не десятью. Не глядя на клавиатуру вообще печатать не могу. Судя по тому что за клавиатурой я уже более 12 лет сам собой навык слепой печати у меня не появится
193 1561305
>>61260
Там бесплатные курсы? Дай ссылки пожалуйста.
image.png72 Кб, 622x491
194 1561309
>>61248

>надо научиться слепой печати


С сегодняшнего дня выдели 15 минут в день на это. Я вот, например сейчас учу её. Трачу 15 минут в день. За месяц поднялся с ~80 символов в минуту до ~160. Ничего сложного не, главное заниматься постоянно. Это ещё учитывая, что я максимум бездарь.
196 1561326
>>61248

>слепой печати


Зачем? Большую часть пишет за тебя иде, бойлерплейт нормальные люди генерируют на питоне/перле/т4 что ближе.
>>61251

>Ну с С вкатиться в айти нельзя


У нас железячники только на нем и пишут, навигационное оборудование.
мимокрестовик
image.png219 Кб, 583x929
197 1561361
>>61323
А сам курс какой? Я не могу ассемблер найти.
198 1561366
>>61260

>ассемблер (курс Степик)


>алгоритмы и структуры данных (два курса Степик)


Нинужна, ты в отрыве от реальных задач ни хуя не поймешь
199 1561450
>>61361
Я сам только такой нашёл: https://stepik.org/course/253/reviews Я просто предположил что курс по ассемблеру там есть, или появится за то время которое я потрачу на си
image.png193 Кб, 379x385
200 1561462
>>61263
нужно ПРОСТО не смотреть. если не делаешь себе постоянный челлендж, то нихуя не научишься. равно как смотреть кинцо с оригинальной озвучкой, но с сабами - нихуя не поможет, если ты постоянно сабы читаешь. нельзя 12 лет с тренировочными колёсами ездить и потом жаловаться, что ты не научился на велосипеде держаться.
201 1561483
>>61450
Благодарю, анончик.
202 1561589
>>61462
Ну я ж научился, лол. Заметил, что колесики висят в воздухе, снял, поехал дальше.
>>61309
Что за прога?

Мимо
203 1561602
>>61589
а я сразу взял и поехал, спасибо маме за айкью
204 1561609
>>61589

>Что за прога?


Stamina
205 1561747
>>61309
По-моему, надо просто заставлять себя нажимать каждую клавишу правильным пальцем, необязательно вслепую, но всегда, в любом повседневной печати, большого перерасхода времени не будет. Только поначалу идет медленнее, чем 2-пальцевый набор, как на печатной машинке, но очень скоро привыкаешь и понимаешь, что так НАМНОГО быстрее. А глаза сами перестанут смотреть на клавиатуру.
206 1561822
>>61309
Я уникальный долбоеб - двупальцевая слепая печать. Лол.
Мимо
image.png51 Кб, 666x366
207 1561826
>>61747
умею печать вслепую, но не умею в правильные пальцы. обычно недоиспользую указательные и мизинцы. мне кажется, это важно, но не самое главное для умения не смотреть на клавиатуру.
208 1561829
>>61822
>>61826
просто так проще "глаза закрыть", потому что не надо плечами работать, а все маленькие группы клавиш развязаны в мозгах по своим пальцам, и нехуй запоминать особо
209 1561852
>>61309
>>61747
>>61826
Советую всем сайт ratatype, максимально удобный. Сам я печатаю ~300 символов с 5% ошибками 3-5 пальцами, но пальцы пиздец как устают. За неделю осилил слепую печать всеми десятью, ~150 символов и 1% ошибок, руки почти не напрягаются. Думаю за пару месяцев на те же 300 выйду.
210 1562068
сап сишники с нг,вопрос к вам
есть двухмерный массив(ака матрица),надо узнать какие числа повторяются больше трех раз,и при этом находятся в разных столбцах
например в матрице 1 2 3 4
1 3 1 3
5 3 4 5
это число 3
с меня как всегда нихуя :3
211 1562071
>>62068
1 2 3 4
1 3 1 3
5 3 4 5
проебался чутка
212 1562100
>>62071
Массив не ограничен по ширине/высоте?
213 1562101
>>62068

>матрице


Она в памяти ленейно, бежишь по указателю и сравниваешь.
214 1562105
>>62071
А если один раз встречается два раза в ряду, то это значение уже не может считаться, или даже если встречается больше 3 раз по одному, но один раз — два раза, то все равно считается? Я пьяный если что извини если не понятно
215 1562115
>>62068
Счетчик для каждого числа. Ну, не для всех 18 секстилионов сразу, конечно, а по разрядам идешь. 256-элементный массив, который запоминает, во скольких разных колонках встречаются числа, начинающиеся на байт 0x00, во скольких - 0x01, ..., а во скольких - 0xff. Сразу выкидываешь все, что не дотягивает, и рекурсивно идешь по отобранным, считая уже вторые байты. Ну, можешь сразу по 2 байта брать, тогда массив 65536, сам смотри, сколько у тебя памяти. Глубина рекурсии больше 8 не будет. Хотя, может быть большой флоат, там кстати тоже все вполне дискретно. Пробуй, анон. Ничего лучше за 5 минут не придумал.
216 1562131
>>62068
для каждого символа алфавита делаешь аррей длиной равной длине строки, проходишь по строкам и отмечаешь в новых арреях появление соответствующего символа. потом просто ищешь арреи, в которых больше трех ячеек отмечено.
217 1562216
>>62100
[5][6]
но желательно на неограниченный
>>62101
знаю,но мой тупой мозг не понимает как это сделать
>>62105
может,считается как одно значение
>>62115
пасиба но сложна,мой ньюфажий мозг расплавился
>>62131
пасибо попробую

типо например тут ответ будет 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}
218 1562221
>>62068
Какие-то ограничения по наполнению массива есть? Могут быть отрицательные, дробные?
219 1562244
>>62221
синайлы как обычно хотят байтоебствовать и сдвигать разряды. общий алгоритм пиши для произвольного содержимого, для которого определена операция равенства.
220 1562246
>>62244
Хочу сдвигать разряды, и ты мне не помешаешь!
221 1562247
222 1562286
>>62244

>синайлы


Тупорылый даун, зачем ты используешь англицизмы, ты, что, крэйзи?!?!?
223 1562294
По умолчанию при объявлении целочисленной переменной без указания спецификатора signed/unsigned, переменная будет signed или unsigned типа? Регламентируется ли это стандартом? Зависит ли это от реализации?
image.png123 Кб, 647x943
224 1562319
>>62294
Вот тебе скрин из стандарта. Каждый пункт содержит идентичные объявления.

Если вкратце, то char зависит от реализации, а остальные по умолчанию signed
225 1562369
>>62286
беторды на бордах всю жизнь пиздили англицизмы, ньюфаг. а вообще потому что я не знаю русских аналогов и вместе с тем ожидаю, что пипл, посещающий данный сайт, способен меня андерстенд без того, чтобы я снисходил до кальки или адаптирования.
226 1562642
>>40444
Зачем вообще const, если есть define?
227 1562660
>>62642
Конст в объявлении параметра функции говорит о том, что функция не будет менять то, что лежит по указателю, например. При чем тут дефайн? Ты говоришь про константы в терминах маш.кода (адресные операнды, регистровые и константы), а тут документационный смысл.
228 1562702
>>62642
Чтобы не плодить копии.
229 1562720
>>62642
Зачем вообще define, если есть enum?
230 1562789
>>62720
макросы с дженериками
изображение.png4 Кб, 934x74
231 1563022
Как правильно написать вот это упражнение, а то мне кажется что я написал хуйню https://pastebin.com/Kp9Kgdkd
232 1563037
>>63022

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


Всё так.

>for(int i = 0; c == ' ' && i != 1; ++i) putchar('\b');


Эта строка вообще ничего не делает, если что.
233 1563079
>>63037
она забивает пробелы, если их больше одного
234 1563104
>>63079
Ну давай посмотрим, что она делает:
i = 0;
проверяет c == ' ' && i !=1; //тут виноват, я прочитал там ==
Если да, то стирает последний символ. Так как пробел мы ещё не напечатали, то это предыдущая буква. Поднимает i на 1; Возвращается к началу цикла for. Проверяет c == ' ' && i !=1. Так как i тут всегда 1, то дальше она ничего не делает.
Если нет, то просто заканчивает for и ничего не делает;

Дальше печатает сохранённый пробел. Возвращается к началу цикла while;
i = 0;
проверяет c == ' ' && i !=1;
Здесь она сотрёт предыдущий пробел, это правда. Но буква уже стёрта то есть for не ничего не делает, а портит, а цикл for никогда не повторяется больше одного раза. Зачем тогда цикл?
235 1563126
>>63104
https://pastebin.com/sAZQ7ES9
А что тут исправить?
236 1563144
>>63104
>>63126
https://pastebin.com/W0ZRGNa3
Вот, наисправлялся.
Спасибо большое.
237 1563153
>>63126
Это сработает. Но у тебя 3 if'а в которых ты проверяешь на одно и то же условие. Скомбинируй их в одно. Можешь сделать сам, а потом сравнить со спойлером
https://pastebin.com/TrXzqzRM

Ещё твоя конструкция развалится, если, например, использовать 10 миллиардов пробелов, а условия это не ограничивают. И постоянная печать, а потом удаление тоже странное решение, не проще изначально не печатать?
изображение.png6 Кб, 329x252
238 1563162
>>63153

> не проще изначально не печатать


Вот так?
239 1563176
>>63162
Да. Но это всё ещё не решило вопрос с неприличным числом пробелов.
240 1563181
>>63176
Можно просто выходить из цикла по достижении некоторого их числа.
241 1563183
>>63181
Тогда тебе нужно делать ещё одну проверку. Не проще их изначально не считать? Тебе же не важно, сколько их было, 3 или 12000? Тебе важно только был ли предыдущим символом пробел.
243 1563211
>>63200
Например так, да. Но я бы сделал с помощью флага, чтобы не перекладывать каждый цикл переменную.
244 1563573
>>63022
https://pastebin.com/mxeX9UQx
Хули там писать-то.
Ещё пукнул с того, как оно выглядит на ассемблере.
https://pastebin.com/8aavgL8j
https://pastebin.com/JRwShhj1
245 1563579
>>63573
Один for для единственного прохода цикла разворачивает, второй switch для единственного условия. Зачем вы это делаете?
246 1563580
>>63579
Потому что могу.
15782728864220.jpg29 Кб, 600x476
247 1566328
Хочу написать автокликер клавиатуры для одной ммо дрочильни, но у этой игры, похоже, есть защита. На текущий момент смог написать только вялый 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...


Но я что-то не понял нихера его. Хз, мб от этого как-то оттолкнуться можно? Или есть другие решения?
15782520912920.jpg123 Кб, 484x591
248 1566603
На что ругается компилятор?
структура формата {uint8_t (hour), uint8_t(minute), uint8_t(second)}
249 1566604
>>66603
и почему он не ругается на это:
if ((time_heater_delay_gap.watch.hour && time_heater_delay_gap.watch.minute && time_heater_delay_gap.watch.second))

немощный компилятор не может работать с структурами в логических операциях, только с элементами?
250 1566616
>>66603
Ты там структуру чтоли сравниваешь?
251 1566617
>>66604

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


включи режим плюсов и допиши оверлод оператора==
ты блядь как будто не знаешь в какой язык ты пришел
252 1566619
>>66604

> с структурами


справа у тебя кстати не структ, ты просто надеешься на имплицитную конверсию
253 1566639
>>66328
Что за дрочильня? Обход античита это тот ещё рокетсаенс
33.mp412,2 Мб, mp4,
300x360, 1:48
254 1566642
>>66328
Не можете? Беда, беда
Screenshot70.jpg157 Кб, 1263x922
255 1566644
>>66328
Чтобы совсем красиво было надо хук использовать, но тогда антивирус срабатывает. Потому что..
а раскладку кто переключать будет? А спец символы итд итп
256 1566661
>>66603
Поехавший, любой конпелятор сей не позволяет это делать, потому что ты долбоёб.
Если там одни целые и ты 100% уверен, что структуры хранятся одинаково - можешь сравнивать через memcmp()
257 1566665
>>66644

>срать сасемблером там, где можно обойтись 5 строчками на сишке

258 1566721
>>66665
Чем мечтать о работающих 5 строчках лучше бы помог человеку.
>>66328
Слушай сюда, для sendinput нужен дескриптор окна/процесса которому будет посылаться сообщение. То что ты там нашёл дескриптор с помощью Spy++ это всё хуйня, надо дескриптор определять в реалтайм, и именно тот дескриптор, именно этого подокна. Для это нужно использовать хуки(перехват сообщений), ты перехватываешь сообщение, выдёргиваешь оттуда дескриптор и потом уже sendinputом посылаешь сообщение этому дескриптору. Но хук замутить это пиздец проблема, это уже типа взлома, будет срабатывать антивирус ессно, и вообще надо сильно изловчиться чтоб сделать(но вполне можно).
Второй способ, кривой но работает. Черех keybd_event, ты в программе делаешь модальное окно(которое поверх всех окон), делаешь в программе хоткей посредством GetAsyncKeyState.
Потом ставишь курсор куда тебе надо(наводишь фокус клавиатуры), зажимаешь хоткей, и мышкой наводишь курсор на окно своей программы. У нее срабатывает GetAsyncKeyState, а фокус то остался в твоей иггре, поэтому всё печататься будет туда. Вот такой вот способ. Не знаю глюк ли это или нет, на win7 работает.
259 1566730
>>66721
В последних шиндах днинпут является оберткой над сообщениями для окон. То есть опять же должен хукаться через винапи. Inb4: держу в курсе.

>чем мечтать


Мань, на том скрине тупо switch/case, который нет смысл таким образом маняоптимизировать - конпелятор уже давно развернет как минимум не хуже, чем васян с книжкой по асму 1995 года выпуска.
260 1566735
>>66730
Асм это мышление, Асм -это движение, Асм -это жизнь. Асм это способ заставить серое вещество работать. Поэтому я не обломаюсь скопипастить одинаковый код, руки не отсохнут.
261 1566743
>>66730

>Мань, на том скрине тупо switch/case, который нет смысл таким образом маняоптимизировать


Ты не заметил invoke sleep? Что если в его игре поставили ограничение на время нажатия? Что тогда?
262 1566744
>>66721
Ух бля... Ну попробую... Кстати, мне советовали один драйвер 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, мол он уже не работает. Твой способ для меня тоже не совсем понятный, надо пробовать.
263 1566752
>>66744

>https://pastebin.com/NN4Bdefj)


) в конце надо убрать.
264 1566753
Не проще ардуинку взять и сделать из неё клавиатуру?
265 1566758
>>66753
Тоже советовали (stm32 и USB HID), что имелось ввиду под usb hid мне тот анон так и не ответил, программатор? А потом я подумал: есть ли смысл тратить на все это по 500рублей, чтобы попердеть вместе с ней, вероятно, не получить никакого результата и отправить ее на полку? К тому же, там столько всяких kitов, хер поймешь что нужно, а потом, еще эти проводки нужны, а может еще что нужно, о чем я даже не могу представить?
266 1566762
>>66744
Да мы с тобой в разных плоскостях. Ты сильно всё преувеличиваешь, всё гораздо проще, ты пойми сам принцип.(я не шарю в ваших крестах, но примерно понимаю).
1 Послать сообщение из одной программы в другую - это гемор, это взлом и все вытекающие. Это можно сделать только посредством hook. Это единственная задокументированная возможность винды, других нет. Нет никаких драйверов, всё это спокойно делается самой виндой(но сработает антивирус).
И ещё есть второй способ обхода который я написал.
267 1566763
>>66644
Может показаться, что я ною и не хочу решать свою проблему... Но я, от слова совсем, не хотел бы иметь дело с ассемблером... Вот, вообще.
268 1566768
>>66744
ХУЛЕ НАПИСАНО ТО БЛЯТЬ!! НА ЗАБОРЕ ТОЖЕ НАПИСАНО.

>>keybd_event


Просто эмулирует событие клавиатуры. Конечно мелкомягким нахуй чтобы была такая возможность. А ты пробуй, у тебя же задача.
269 1566774
>>66762

>Нет никаких драйверов


Ну, допустим, в какой-то момент я хотел собрать цепь таймера на микроконтроллере NE555, который запускал бы реле, а та в свою очередь замыкала/размыкала контакты кнопки, к которой бы я просто подпаялся. Сигнал бы поступал в ос сразу после драйвера клавиатуры и все бы работало, я уверен, только, если в том античите стоит какая-то проверка на интервалы нажатия кнопки, то мб и это обошла бы игра, но можно ведь попытаться как-то сделать эти интервалы случайными, чтобы имитировать ручное нажатие. Вот, поэтому я думал, что тот драйвер он просто перехватывает сигналы от драйвера клавиатуры (до обработки самой ос) и с помощью его api можно все что угодно сымитировать на "аппаратном" уровне, а ОС ничего не остается, как принять эти все сигналы и посчитать их ручным вводом.

>но сработает антивирус


Ну, ок, это проблема? Может его выключить/удалить на время? Я просто не понимаю что сложнее: обойти антивирус или написать хук.
270 1566786
>>66774
Ты вот в этом месте заморочился. Их игра просто принимает сообщения от стндартного драйвера клавиатуры. А не работает у тебя, потому что меняется дескриптор процесса или тераяется фокус клавиатуры, в игре же много чего происходит, и если ты сам не тыкнул, то всё будет происходить само-сабой, всё будет само переключаться, как предусмотренно разрабами.
А вот чтобы "ткнуть из своей программы" нужно использовать хук, тогда гемор и антивирус. Или второй вариант: ты сам ткнёшь и программа всё доделает.
Тут главный вопрос: пользователь ткнёт или программа.
271 1566798
keybd_event сообщает системе о событии которое произошло с клавиатурой. А приложения сами решают, обрабатывать это событие или нет.
И приложение конечно не будет обрабатывать это событие если фокус клавиатуры на нём не установлен.
А sendinput отправляет сообщение. Но чтобы отправить должен же быть адрес, логично?
272 1566809
>>66763
У вас системное программирование, и у нас сис. программирование.
Тебе же это надо? Ну я рассказываю что и как. Можешь поссать на своих англоязычных друзей от моего имени.
не деаноньте плиз, я с хорошими намерениями
то ли ещё будет
tipizdec.png277 Кб, 717x393
273 1566916
>>66763
Решая задачи ты будешь пользоваться инструментами, асм один из них, не хочешь, найди того кто захочет
274 1566950
>>66721
Окно модальным должно быть в контексте всей ОС? Что-то я не могу найти инфы о том, как это можно сделать. Везде пишут только о том, как сделать дочернее окно модальным в контексте приложения.
275 1566955
Сап. Есть у мня массив шестнадцатиричных чисел, его нужно записать в бинарный файл ("wb"). Я это делаю так: fwrite(array, sizeof(array), 1, FILE_OUT); Но в самом файле, например, числo 0xaf01 записанно как 0x01af (проверял hexdump'ом). Как сделать так, чтобы числа записывались в bigendian'е? вариант с модификацией массива не катит
276 1566956
>>66955
А обратно читает как?
277 1566961
>>66956
Читает в биге
278 1566965
>>66961
Тогда зависит от имплементации получается, правильно? Попробуй альтернативные stdio
279 1566966
>>66809
Да я ничего против не имею, просто я не готов вот так взять и начать изучать один из сложнейших яп для какой-то своей хуйни. На это явно уйдет дохера времени, которого нет + явно не достаточно просто понять синтаксис языка, нужно понимать еще архитектуру процессора (наворачивать 1к страниц таненбаума не хочу), под который ты пишешь и наверняка еще дохуище подводных. Моя жопа к такому еще не готова. Я ж, блядь, молодой и шутливый еще...

А вообще, интересно. В чем преимущество этого языка? Тот код, который ты кидал, он как-то связан с чат-ботом в POE? И как так получается, что при использовании С/С++ потребовалось бы ебаться с хуками, вылавливать адреса функций и т.д. А ты взял ASM и написал код в длину высоты экрана и у тебя все работает?
280 1566967
>>66965

>>Попробуй альтернативные stdio


А проще никак? Ну в духе передать какой-нить дополнительный аргумент fwrite() или fprintf()?
281 1566997
>>66955
Для долбоёбов, которые не осиливают сами - придумали network endianness. htons()/htonl() из netinet/in.h, для тех кто даже куколдугл не осилил.
282 1567006
>>66997
Ну и при чтении - ntohs/ntohl.
283 1567016
>>66966
Так мне тоже надо ебаться с хуками. Ты меня не понял до сих пор, есть два стула:
1 правильный с хуками и ебатьнёй, от которого я отказался
2 кривой с модальным окном и keybd_event, который я выбрал. Там на видосе просто не видно окна программы(fraps не захватывает, надо было сразу указать).
Или просто DeskPins заюзай, главное чтобы окно программы было поверх, чтобы можно было тупо курсор навести на это окно во время удержания хоткея. Потому что фокус клавиатуры у тебя останется в игре, а твоя прога примет GetAsyncKeyState и начнёт выполняться, то есть хуячить keybd_event'ы.И всё будет автокликаться.

Да я сам деревянный, просто беру что надо и использую, не замарачиваюсь.
284 1567020
>>66721
Да я вот, сейчас пытаюсь написать на winapi твой 2 способ, пока не выходит. Ты про модульное окно так и не ответил >>66950 И еще не совсем понятен этот момент:

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


Т.е. нажимать на лкм для захвата окна не надо? Достаточно только навести? Звучит парадоксально.
285 1567022
286 1567026
>>66955
Никак. Тебе ведь поDWORDовый реверс нужен. Можно сетевой хедер взять, но не знаю, как htonl/ntohl в плане инлайнов. По-хорошему, если на целевой архитектуре endianness совпадает с сетевой, то "вызовы" htonl/ntohl должны опускаться при конпеляции, то есть безопасность бесплатна. Можно макросами условную компиляции сделать, чтоб одним fwrite/fread все делалось в последнем случае. Хотя, если писать/читать неглядя, а дрочить массив, то цикл сам опустится.
287 1567028
>>66966

>asm


>один из сложнейших


укатился в каштановый лес с этого господина
98ac0f36a5854b5d0a7e06140b26f50b.jpg19 Кб, 400x400
288 1567029
>>67020

>Звучит парадоксально.


Похуй, главное работает.
Да, зажимаешь хоткей, твоя прога как бы на паузе, потом просто наводишь курсор, она как бы снимается с паузы, принимает GetAsyncKeyState и начинает исполнять keybd_event'ы которые тебе надо. НО фокус клавиатуры то остался в игре, поэтому твоя игра будет принимать эти keybd_event'ы.
289 1567036
>>67029
Ясно, но у меня так не захватывает фокус, нужно нажимать, а после нажатия фокус сбивается. Пробовал пока в блокноте. Но я не делал еще никакое окно модальным, ибо ты уже 3 раз не можешь про него ответить. Я могу сделать это окно модальным только в контексте приложения.
290 1567049
>>67036

>ибо ты уже 3 раз не можешь про него ответить.


Ну просто указываешь в ресурсах DS_SYSMODAL и всё, никаких сложностей у меня не было.
Не должен фокус сбиваться, этот кривой способ должен везде работать. Может надо код писать в оконной процедуре.. из за этого может теряется фокус хз.
Щас с deskpins попробую.
291 1567055
Вы ебанаты не советуйте ему эту хуйню. Она может и заработает, только игрушка его сразу отключит/забанит потому что модуль античита 100% вшит в клиент
292 1567056
>>67049

>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 нахуй...
293 1567061
>>67055
А за что забанит-то? За то, что кнопку зажал в игре?
294 1567074
>>67056
Короче.. используй deskpins. Щас проверил, закоментил DS_SYSMODAL, работает.
Я не буду тут разбираться в тонкостях, ты просил способ обойти хуйню с sendinput, я тебе сказал как это сделал, прогу сам собирай. Главное пойми основной принцип:
1 Запускаешь свою прогу, закрепляешь её deskpins'ом
2 Кликаешь в то место куда тебе надо(устанавливаешь фокус клавиатуры)
3 Зажимаешь хоткей который указал в GetAsyncKeyState
4 При зажатом хоткее наводишь курсор на окно своей програмы
Она как бы снимается с паузы и начинает хуячить keybd_event'ы, а фокус клавы остался там, и там где он остался, то и будет принимать эти keybd_event'ы.

Как сделаешь, отпишись. :)
.webm1,5 Мб, webm,
1920x1080, 0:40
295 1567105
>>67074
Хз, у меня не получается. Вроде, все правильно делаю. Фокус при наведении не захватывается, нужно нажимать мышкой. После захвата фокуса в консоль выводится инфа о том, что хоткей (стрелка вверх) была нажата, как отрабатывают keybd_eventы не известно (пытаюсь сымитировать нажатие и отпускание клавиши Z).

Код: https://pastebin.com/8gHq99fH
296 1567107
>>67105
Попробую завтра семерку накатить на виртуалку и там проверить.
297 1567113
>>67105
Кстати, попробовал горячую клавишу тоже на Z заменить, keybd_event с этой кнопкой зацикливает хендлер, значит keybd_eventы работают. Проблема с этим фокусом.
298 1567127
>>67113
Ты может используй системные клавиши для GetAsyncKeyState , у меня F6
bandicam.mp4307 Кб, mp4,
1272x776, 0:14
299 1567142
>>67105
Чудеса)
Может в 10-ке исправили этот баг
300 1567149
>>67127
А ты мой код можешь скомпилить и у себя запустить? Там надо пролинковать только -lgdi32. Или я могу скинуть свой exeшник.
301 1567156
>>67149
Кидай экзешник.
302 1567159
Мне проще в отладчике посмотреть где не она срабатывает.
304 1567164
>>67161
Там горячая клавиша - стрелка вверх, печататься должна только z
305 1567166
>>67164
Да я похоже понял. у меня окно делается DialogBoxParam. И GetAsyncKeyState c keybd_event внутри оконной процедуры.
306 1567173
>>67166
Т.е. у тебя не заработал фокус?
307 1567182
>>67173

>libstdc++-6.dll не найден


Да впизду(или завтра уже). Делай через DialogBoxParam, будет работать.
308 1567185
>>40431 (OP)
Анчоусы, добрый вечер. Хочу вкатиться в C++(опыт погромирования есть), но вот задумался. Может сперва с C начать? Или с C++ сразу. Как вы считаете?
309 1567186
>>67185
Плюсы сразу.
310 1567188
>>67186
А почему не СИ сперва? В чём отличия в назначениях между C и ++? Разные цели использования?
sage 311 1567190
>>67188

> А почему не СИ сперва?


Потому что тебя троллят. Кресты на порядок сложнее, запутаннее, а предпочтительный стиль программирования на крестах меняется с каждым стандартом. Но тем не менее их все равно придется выучить. Потом.
312 1567192
>>67190
спасибо понял. начну с си.
dll.png62 Кб, 607x651
313 1567193
>>67182
Завтра попробую. Вот, если что, все dll с которыми приложение взаимодействует. Если что, думаю, могу тупо все из списка в один архив с exeшником засунуть и залить на хостинг.
314 1567199
>>67185
Начни с книжки по языку си от их авторов, прочитай ее полностью, пока не поймешь каждое слово. Там база баз. Если типы данных и массивы покажутся примитивными, то веселье может начаться на структурах, указателях. Так же есть полно всяких деректив define, pragma и тд обязательных к ознакомлению. После этого всего уже можно изучать плюсы, начиная с ооп, std библиотека, потом шаблоны, stl библиотека и тд. Там уже сам поймешь куда лезть, а куда нет.
315 1567204
>>67199
Спасибо большое, понял. Я так понял нужно искать книгу последней редакции от Дэниса Ритча?
316 1567207
>>67204

>Дэниса Ритча


Да

>последней редакции


Не обязательно. Бери, какую найдешь, по последнему стандарту в си (99).
317 1567209
>>67207

>99


С11

В шапке же есть все вроде.
318 1567211
>>67207
>>67209
Спасибо ещё раз, низкий поклон, анчоус.
319 1567213
>>67192
Да эти дауны сишники тебя тролят, плюсы это другой язык. Вон тетка поясняет что надо сразу плюсы учить.
https://www.youtube.com/watch?v=YnWhqhNdYyk
320 1567215
>>67209
Хотя, я сейчас посмотрел, они C11, вроде как, и не выпускали. А там многопоточность, которую ты в любом случае затронешь, когда плюсы будешь изучать. Так что бери любую редакцию или поновее, какую найдешь.
sage 321 1567300
>>67213
Тетки на cppcon - это отдельная история. Одно выступление охуительнее другого. Недавно вон тянка рассказывала дядям, что такое таблица виртуальных методов, и где она лежит в энтих ваших классах. >>1503195
322 1567321
Си это та самая облегченная версия крестов? Няшный язычок, мне нравится. Лайтвейт йет паверфул...
323 1567323
>>66762

>1 Послать сообщение из одной программы в другую - это гемор, это взлом и все вытекающие. Это можно сделать только посредством hook


П Р И Д У Р О К

SendNotifyMessage()
324 1567327
>>67321
Это кроссплатформенный ассемблер, вась.
А трупстрауса++ - это ассемблер, в который зачем-то добавили унитаз, кухонную раковину, несвежий труп страуса и миниган для стрельбы по ногам и прочим конечностям. Ещё можно сконпелировать пушку boostАК-630, если минигана нетостаточно
325 1567329
>>67193

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


Месье знает толк.
326 1567331
>>67329
Алсо, особенно смищно, учитывая что плюсов там и нет. Такой-то PIERDOLIENG ради использования cout вместо printf.
0.PNG78 Кб, 721x747
327 1567358
>>40431 (OP)
Сап, няши, такой вопрос - в шиндовс (win7) x64 процесс может загружать x86 библиотеку с ресурсами (иконки)?

Тут такое дело - мигрирую 32 битной на 64 битную систему, захотел себе и тотал коммандер 64 битный, но вот старый у меня тщательно настроен и мною кастомирзирован, в частности я когда-то нарисовал+надергал иконки и захерачил их в библиотеку в VS6.

Теперь я давно не прогаю, никаких студий у меня не стоит и я подумал пиздец, придется либо просить кого-то пересобирать библиотеку, либо редактировать каким-нибудь редактором ресурсов.

Но с удивлением обнаружил, что эта библиотека WCMICONS.DLL в 64-битном тотале осталась 32-битной. Это законно вообще?
328 1567361
>>67358
Если там кода нет - можно хоть PowerPC или Alpha библиотеку от NT4 подсунуть, приложению похуй.
329 1567363
>>67361
Да там кода нет, там одна секция с ресурсами. Я тоже так же подумал, но закралось сомнение, что шиндовс может зарубить это дело. Спасибо, лучей добра.
330 1567370
>>67363
Спецом поискал ISOшник PowerPCшной шенды и проверил на 10 x64.
image.png15 Кб, 946x718
331 1567371
>>67370
Вдогон: отклеился пик самого окна проги с иконкой из набора NT4.
332 1567465
Как создать диалоговое окно без VS и MFC? Просто не понимаю: что надо передать вторым параметром? Документация в msdn нихуя не говорит о MAKEINTRESOURCE(). Я только понял, что проект MFC в VS генерирует файл ресурсов каких-то .rc и заголовок с константами .h. А как без этого всего?

>DialogBoxParam(hInstance, MAKEINTRESOURCE(????), NULL, (DLGPROC)DialogProc, 0);



GetlastError() говорит о коде 1812, который, как я понял, как раз связан с этим аргументом. Я туда пробовал в цикле передавать числа от 0 до дохуя, пока функция не вернет > 0, но один хер ничего не вышло.
333 1567504
>>67465
Все, разобрался.
334 1567552
Я хз, один хуй не работает с DialogBoxParam. Попробовал даже на семерке.

Вот весь проект вместе с исполняемым файлом и dll библиотеками:
https://mega.nz/#!dQNgmISS!LvFJT7ff-hQHDJhAaA4uk9virqz1Q2hRkU8xqshOVmI

Если не сложно, попробуй у себя запусти или хотя бы код глянь. Пробовал так же и без DS_SYSMODAL (с diskpins) - тоже самое.
335 1567554
336 1567585
двощ, решил я войти в айти, поставил 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? ведь, если не пиздят книги, впроцедуру копируются значения глобальных переменных а сами они не изменяются.
337 1567588
>>67585
Потому что ты перевод строки \n не сделал и тебе 2 результата в одну строчку записало.
338 1567589
>>67588
да это понятно. почему функция изменила значение глобальной переменной?
339 1567590
>>67589
это законно вообще?
340 1567593
>>67589
Та к а с хуя ей его не изменять? У тебя переменная глобальная.
341 1567598
>>67593
т.е. я жопочтец, так и должно быть?
342 1567604
>>67598

>жопочтец


Если ты прочитал, что глобальная переменная не должна меняться в функциях, то - да.
343 1567608
>>67604
ок, няша :3
344 1567613
>>67552
Поверхностно глянул, думаю вот тут проблема:
case WM_COMMAND:
if (GetAsyncKeyState(VK_SPACE)) {

Тут у тебя прога ждёт сообщение WM_COMMAND. Не надо завязывать GetAsyncKeyState на WM_COMMAND, надо чтобы GetAsyncKeyState просто выполнялась с параметром хоткея. У меня на скрине она просто выполняется без WM_COMMAND, хотя тоже можно завязать на WM_COMMAND(77h-код клавиши).
Screenshot72.jpg58 Кб, 822x447
345 1567615
>>67613
скрин
я на 99% уверен что в этом проблема, потому что я бы тоже через WM_COMMAND сделал.
346 1567618
>>67615
Т.е. ты предлагаешь вынести GetAsyncKeyState из switch, либо в default засунуть?
347 1567626
>>67618

>вынести GetAsyncKeyState из switch


Наверно да, попробуй, я хз как это сделать. Надо чтобы она самостоятельно проверяла клавишу, без сообщений.
348 1567633
>>67626
Лол, вроде, сработало. Надо в игре попробовать. Алсо, я правильно понимаю, что это работает только с удержанием клавиши? А если нужна определенная периодичность, то надо свои костыли для обработки keybd_event писать?
349 1567636
Меня убивает местный рандом. Вот надо написать программу, решающую задачу о встрече.
Я пишу так
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) выдает верные результаты. Почему?
350 1567638
>>67633

>то надо свои костыли для обработки keybd_event писать?


Ага.. я беру текст из текcтового файла и подставляю в keybd_event
я там немного перепутал, sendinput тоже должен работать по идее
sage 351 1567643
>>67636

> double z = 0

352 1567650
>>67638
С игрой не выходит) Приходится вручную отпускать кнопку и нажимать снова, чтобы keybd_event/sendinput отработали 1 раз. Но это я просто посылаю сотни событий за раз. Надо будет еще как-то обработать эти нажатия, ограничив число вызовов.
353 1567655
>>67643
Код просто для примера. Так то там нет такой ошибки.
Вообще результат отличается на сотые, хотя должен в худшем случае на десятитысячные.
354 1567673
>>67650
Тебе надо сделать условие - если GetAsyncKeyState возвращает что хоткей не нажат, то тупо выход из процедуры.
355 1567826
Хелп! Почему ((i & 0x0F00) >> 8)&0xf != (i >> 8) & 0xf ???
i пробегает зачения от 0x1111 до 0x10000
356 1567906
>>40431 (OP)
Интересно а как распознователи всякие пишут? Я погромист-ньюфаня и крайне с трудом представляю как это. Вводят чтоли определённый диапазон геометрический на соответсвие какой либо области пределам формы? Цвет детектят по попаданию пикселей в тот или иной цветойо диапазон?

Ну допустим программа отличает где кошка где собака. Очевидно что у собаки более длинный нос чем кошки, меньше глаза чем у кошки и есть программа которая сверяет размеры + старается прогнать это всё под какой-то готовый шаблон похожей на кошчий нос формы. Сложно на словах это объяснять, ну я думаю вы понели.
357 1567916
>>67826

> i & 0x0F00


> i


Хмммм.... Блядь, действительно, почему же так?
358 1567956
359 1567960
>>67906

Чтобы в этом разобраться, тебе надо разобраться в алгоритмах, которые для этого используются. Бери какую-то книжку по алгоритмам распознавания и читай.
360 1567973
>>67906
нейрон_очки же.
361 1568131
А можно как-то переписать функцию scanf() чтобы можно было делать так: scanf("%Y", &struc), где struc - мной определенная структура?
362 1568141
>>68131
конечно! если ты новичек, это будет еще и интересной задачкой на программирование
делать примерно так: пишешь свою-функцию обертку my_scanf (или как ты ее назовешь), в ней парсишь первый параметр, как встретишь свою спецификацию формата, разбираешь ее по полям структуры, подготавливаешь новую форматную строку и передаешь дальше в стандартный scanf
363 1568146
>>68141
бля, перепутал с printf
маразм уже старческий
364 1568148
>>68146
хотя прокатит для scanf тот же подход
365 1568152
>>68148
my_scanf(char *s, ???)
А что идет вторым параметром? Я хочу чтобы она не только со struct работала, а как scanf(), с примитивами тоже.
Алсо, а без определения своей ф-ции никак? Ну, типо питоновский overriding.
366 1568154
>>40542
а в эту хуйню встроен компилятор или это как просто редактор кода и компилятор отдельно нужно качать?
367 1568158
>>68152

>???


Название твоей структуры

>overriding


Можешь её назвать scanf и она заменит обычный сканф, но зачем?
368 1568162
>>68158

>>Название твоей структуры


А мне надо чтобы она и с интами и чарами работала, вотъ!

>>Можешь её назвать scanf и она заменит обычный сканф


Разве я не получу ошибку?
369 1568172
>>68162

>она и с


Тогда пусть принимает указатель на войд и уже сама как-то решает, что это за указатель. Сканф парсит для этого форматную строчку.
>Разве я не получу ошибку?
Проверь. Но опять же, зачем так делать?.
370 1568177
>>68172

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


Можно поподробнее?
371 1568181
>>68177

>my_scanf(char ∗s, ???)


my_scanf(char ∗s, void ∗ v)
372 1568185
>>68162

>А мне надо чтобы она и с интами и чарами работала, вотъ


are you dolboeb?
https://pastebin.com/wrytAs4b
373 1568203
Ананасы, кто что знает о SDCC компиляторе для 8-битных мк (в частности мне он нужен для stm8)? Оно вообще пригодно для нормальной работы?
Я гоняю сейчас с ним тестовый код. Скомпилировал и слинковал код с отсутствующей реализацией функции - так оно сгенерировало финальный бинарь, а несуществующую функцию установило как будто она размещена на 0x0, лол. Ворнинг (не ошибку, а именно блять ворнинг) оно, конечно, напечатало, но из-за подобного долбоебизма пришлось добавить костыль в makefile. Теперь думаю - продолжать работать с этим говном или уж лучше юзать бесплатный IAR (при этом мне нужно будет его запускать на линуксе под вайном).

Читаю их списки рассылки - чувстсво, будто компилятор пишут какие-то отбитые индусы.
374 1568212
>>68185
Так меня интересует именно функция.
>>68181

>>void ∗ v


не знал про такую штуку, надо будет попробовать она во всех стандартах есть?
375 1568217
>>67636
Бамп
376 1568225
>>68217
>>67636
А ничего что максимальный инт = 32767??
У тебя в цикле переполнение.
377 1568236
>>68225
Анон, это все мелочи, говорю же, в самом коде нет таких ошибок. Результат то почти верный, отличается на сотые, тогда как в пистоне на десятитысячные.
378 1568240
>>67636
Сама задача о встрече к слову
Есть 2 человека. Они договариваются встретиться в промежуток времени от часа до двух. После прихода они ждут не более 15 минут. Найдите шанс их встречи.
И в цикле должно быть <=15
379 1568295
Помогите, пожалуйста, с установкой Visual Studio Community Edition. Что именно нужно установить для СИ. Не хочу ничего лишнего загружать просто.
380 1568298
>>68295

>Не хочу ничего лишнего загружать просто.


мало места на диске осталось?
381 1568300
>>68298
нет. просто там если всё без разбора груизть 6гб будет загружаться. алсо я вот прочитал описание всех этих пакетов и не увидел там ни одного упоминания C только C++ и шарп.
382 1568304
>>68152

>А что идет вторым параметром?


функции с переменным числом параметров умеешь писать? это и будет
383 1568310
>>68300
Будет грузиться меньше гигабайта.
>>68295
Визуалка не предназначена для си. Там суржик вместо сишечки.
384 1568315
>>68310

>Visual Studio 2017 Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.


из оп поста.
385 1568337
Устанавливаю визуал студио. Уже не терпится высрать свой первый хеллоуворлд на си.
386 1568341
>>68337

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


Хех, мда
387 1568343
>>68341
А на чём погромировать? На досе? Если ты о unix то иди со своей сектой в /s/ и там агитируй. Я хочу учить язык программирования, а не сосноль пердоли.
388 1568354
>>68343
Такому чму как ты не место в рядах сигоспод.
389 1568355
>>68343

>ещё не начал, но уже всё знает


>но секта это вы


Мда, хех
390 1568357
>>68354
>>68355
пердоли порвались.
391 1568361
>>68240
Разве это не обычная задача на геометрическую вероятность?
392 1568372
>>68361
Да, обычная. Но надо провести моделирование, что я и пытаюсь сделать. На питоне все сходится, на си нет.
Capture.PNG8 Кб, 971x472
393 1568450
Итак, господа, СИшники в вашем ряду пополнилось. Только что высрал свой первый хеллоуворлд. Нравится вам это или нет, но теперь такая ньюфажная хуета как я с вами в одном треде будет сидеть.
394 1568455
>>68450

> вниманиеблядь


> вендосектант


> олигофрен


Тебе бы js учить с таким то набором качеств.
395 1568457
>>68455
когда я в прцоессе обучения увижу что мне НУЖНА ПЕРДОЛЯ ИНАЧЕ НИКАК, вот тогда и поговорим.
396 1568458
>>68457

> мелкобуква


Ммм, продолжай
397 1568474
>>68455

>вендосектант


Вскукарек со стороны столлманопараши. Кроме игрушек, на линупсе нет еще дохуя полезного софта, например, для записи и редактирования аудио и написания музыки. На венде куча вст плагинов на любой вкус и цвет, а на линупсе хуй да нихуя, хотя битвиг и рипер портировали, но какой в них смысл без плагинов? Правда, на маке дела получше, но для этого нужно быть геем. Остальные юниксы начиная со бзди даже рассматривать всерьез смешно.
398 1568477
>>68474
Да не спорь ты сним, это же пердоля. Ты ему аргументы, он тебя гавном поливает. У них секта такая, самые агрессивные и неадекватные в айти сторонники пердоли. Просто игнорируй.
399 1568479
>>68474
Шиз, какая музыка, мы в треде языка си, программировать на котором в юникс системе не в пример удобнее.
400 1568484
>>68479

>программировать на котором в юникс системе не в пример удобнее.


Может ему нужно программировать на Си и параллельно писать музыку, откуда ты знаешь? Современные ОС многозадачные, если что.
401 1568533
>>68372

>>на си нет.


Так а от нас то ты чего хочешь?
402 1568539
>>68455
На самом деле ты зря жс недооцениваешь сам так делал, сейчас JavаScript - полноценный язык программирования, и на нем есть интересные вещи.
403 1568563
>>68474
Ох какие мелочные претензии-то стали. Давно не следил, раньше хоть предъявляли, что игр нет, фотошопа. А сейчас только плагинов для аудиопердоль не хватает? Может и правда пора перекатываться.
404 1568578
>>68563

>А сейчас только плагинов для аудиопердоль не хватает?


А че ты смеешься? Твой любимый репчик и симфо джаз павер металкор в аудиопердолях записывается и сводится целиком, времена оналога давно позади.
405 1568584
>>68578
А потом хранятся и передаются мне тысячей линуксов, как оба этих факта вообще меня касаются?
406 1568591
>>68584
Тебя -- никак, он касается людей, которым нужны аудиопердоли, а на линупсе их нет.
407 1568599
>>68591
Так эти люди и есть аудиопердоли! Желаю им всего наилучшего, кстати, но в отличие от пользователей фотошопа и тем более игорь, их число просто ничтожно. Поэтому я и сказал, что претензии стали мелочными.
sage 408 1568603
>>68295

> Desktop Development with C++


Вот это. Но тебе правильно сказали, запасись местом на винте, там далеко не гигабайт.

>>68310

> Визуалка не предназначена для си


Сохраняешь файл с расширением .c - будет Си. Или можно еще в настройках проекта насильно компилятору язык задать (/Tc).

>>68479

> программировать на котором в юникс системе не в пример удобнее


Особенно удобно пердолиться в gdb, когда source-level отладка не помогает, при том, что на винде есть качественные графические отладчики машинного кода. Или искать файлы find-ом, при том, что в винде есть Everything. Или придумывать, как же сделать программу с GUI, и чтобы не выглядело как Tk. Или изобретать свой формат для хранения настроек, снова. Или собирать чужие некомпилирующиеся утилиты с дохулиардом зависимостей, потому что скачать уже собранный бинарник нельзя. Вернее, скачать-то можно, но у тебя либц не той версии, и вообще иди нахуй.
409 1568608
>>68599
Ну я пользователь аудиопердоль, например, что мешает мне полностью перейти на линупс. Если бы не оно, венду можно было бы держать только для йобы и на черный день (хотя на черный день достаточно ВМ).
410 1568611
>>68608

>Ну я аудиопердоля


Самофикс.
Capture.PNG35 Кб, 978x608
411 1568612
9-е и 13-е строки даёт ошибку как устаревшие функции. формат стоит си. почему так?
412 1568616
>>68612
Всё так. У тебя написано, что строку ввести "upto 100 character", но кто останавливает от введения более длинной? Вот тебе уже и overflow твоего массива. 100 уже будет много, потому что нужно место для '\0'
413 1568617
>>68612
Потому что вижуалка.
Там же написано, что нужно использовать _CRT_SECURE_NO_WARNINGS. Я уже не помню, как это делается, загугли сам.
414 1568619
>>68617
>>68616

Спасибо всем огромное за ответы, я уже отключил это предупреждение. Там по ссылке от визуалки инструкцию дали как его отключить.
415 1568655
>>68617
>>68619
Что вы за люди-то.
Черным по белому написано: "используй scanf_s вместо scanf", а вы тулите устаревшие небезопасные функции и отключаете предупреждения.
416 1568658
>>68655
о спасибо, анон. тогда я включу назад вонинг тот. да я просто нашёл тут один самоучитель ебашу по нему, но он видимо староватый это я уже понял т.к. там новую строку обозначают 'n', а не '\n'.
417 1568665
>>68612
Строки читай так: scanf("%[^\n]", s), вроде даже так можно scanf("%100[^\n]", s) с прописанным ограничением.
418 1568668
>>68665
Спасибо, огромное, анчоус.
419 1568681
>>68665
>>68655
только в отличии от scanf в scanf_s есть ещё третий аргумент - длина буфера её тоже нужно прописать иначе возможны выебоны со стороны системы.
420 1568776
>>68681
Правильно, потому что эта функция безопасна и проверяет, не затронешь ли ты чужую память во время ее выполнения.
А обычная версия может переписать чужой фрагмент памяти и порушить тебе все.
421 1568782
>>68776
Ничего себе. Не знал, что язык такие возможности имеет, спасибо огромное возьму это на заметку.
422 1568800
>>68776
а если не ставить ограничение у строки в 100? просто не ставить скобки, а тупо задать перменную. то будет анлимит?
423 1568857
>>68782
Это, вроде, непереносимый код.
То есть только msvc такое скомпилит, а gcc будет работать с обычным scanf, насколько я знаю - у самого не получилось скомпилить прогу с VS2015 с помощью gcc.

>>68800
Почитай про объявление массивов.
Если ты уберешь квадратные скобки, то это будет обычная переменная. Если поставишь звёздочку - указатель, но нужно будет вручную выделять память под необходимое количество элементов.
Capture.PNG16 Кб, 1062x193
424 1568859
>>68857
я уже загуглил эту тему на одном форуме, да обычно нужно юзать scanf, а scanf_s для безопасности в vs.

анчоус, молю, а как сделать чтобы он пробелы моего импута учитывал, а не обрывал на них?
425 1568867
>>68859
Тут уже сорян, я вообще хуесос из соседнего треда и решил бы эту проблему с помощью std::cout << std::noskipws.
426 1568868
>>68859
Понял. Спасибо, анчоус, что помогал. А из соседнего треда это из cp чтоли?
427 1568872
>>68868
Да, я больше по плюсам, но на си тред тоже подписан, полезно.
scanf.png21 Кб, 687x341
428 1568893
>>68859
классика же
sage 429 1568897
>>68655

> устаревшие небезопасные функции


Только по мнению Microsoft, которая идет с этим мнением и со своим _s-говном в известном направлении.
430 1568912
>>68897

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

431 1568989
>>68612
Для строк юзай fgets и не пердолься. Проще всего.
432 1569075
>>68893
а вот я дегенерат, мне же анон выше уже объяснял это. спасибо, огромноеял.

>>68989
попробую и то и то.
433 1569078
>>68867

>винда


>как добавить пробел


>решил проблему плюсовым ай о


толстота пиздец. Хотя прямо под уровень треда.лайк если учишся в школе 21 и учишся писать код!!!
434 1569081
>>67204
алсо загуглил вчера его биографию, что-то грустно стало. мужик придумал C много в современных кудахтерах сделано благодаря ему, а он умер в своём доме в одиночестве от рака простаты и даже точную дату смерти не знают т.к. не сразу его обнаружили.
435 1569096
>>69078
А что за прикол со школой21?
>>69081
Вроде бы сейчас такое норма. Капитализм же, вот перестал дед деньги делать, на него и положили болт.
436 1569098
>>69096
да не он до последнего был у дел. работал там, его коллека же и обнаружил что он умер когда он долго не выходил на связь. жил там в доме, до последних дней жизни он занимался исследованиями в области кудахтеров. ну жалко, я то думал он ещё живой, обычно авторы предыдущих языков которые я учил все живые.
437 1569101
>>68539

>интересные вещи


Пишешь кароч такой const ya = {sosu: 'hui'}, каким-то хуем меняешь свойство sosu, полагая что это невозможно, на выходе получаешь не то, что ожидал. В итоге не можешь понять где и что могло наебнуться в коде.
438 1569102
>>68539
Джава срипты, питоны, хуйтоны и прочая хуета для детей и веб-клоунов высерающих сайты под ключ это всё несерьёзно. Это всё языки для тех кто не хотели работать на дно работах и ВАШЛИ В АЙТИ лишь бы бабки были. Настоящие тру зароты дрочат Сишечку и крестики.
439 1569103
>>69101
const не существует, тебя обмынывали
440 1569104
>>69101
А еще, а еще... Берешь такой строку, нахуй, и передаешь в аргумент, ожидающий интегер))))000))))00)0
441 1569105
>>69102
Как скажешь, треш из школы 21.
442 1569107
>>69105
Что за школа 21? Это что локальный мемос такой?
443 1569108
>>68310

>Визуалка не предназначена для си.


Ну да. Нахуй Си вообще нужен? На нём пишут только под микроконтроллеры, а там своё IDE есть фирменное. Студия же предназначена для нормальных программ под ПК, а тут Си не всрался совершенно, инвалидный огрызок.
444 1569109
>>69108

>пизданула хуйня с джавы

445 1569110
>>69078
Ты бы хоть потрудился прочесть пост ниже, что я пишу на плюсах, а сюда иногда просто заглядываю.
Но покукарекать же важнее.
446 1569126
>>69110
Что ты скрытый сишник? Вроде бы на крестах пишешь, чего ещё нужно, но нет нужно заглянуть в си... Не скрывай свои желания
447 1569232
Как в СИ график сделать? Есть ли какой-нибудь модуль? Есть группа точек (x;y) и вот по ним нужно построить функцию.
448 1569236
>>69232
Двумерный массив char размером NxM, где N - диапазон по X, деленный на шаг, а M - та же хуйня по Y. Идешь от x0 до xn, но если модуль производной больше 1, то не инкрементишь, а увеличиваешь ровно настолько, чтоб инкреметнулся y. И, собсно, все y, попадающие в вертикальный диапазон, рисуешь в массив (предварительно заполненный пробелами). А потом этот массив печатаешь.
449 1569237
>>69232
Искать какую-то графическую (или гуй с зачаточной графикой) библиотеку. SDL или еще что. Если подойдет что программа будет генерировать svg файл с графиком (а не рисовать его на мониторе), то после беглого изучения описания стандарта (svg) с вики и расмотреных нескольких примеров простых свг можно писать график в свг. Там ничего особо сложного нет, должно хватить часа двух. А если еще найжешь свг с графикомто там вообще все просто - только свои числа подставить.
450 1569238
>>69236
>>69237
Спасибо, я охуел понял
Capture.PNG11 Кб, 470x314
451 1569247
Анчоусы, можно ли этот код как-то более элегантно записать?
452 1569253
>>69247
int a, b;
вместо
int a,
b;
Но это дело вкуса.
453 1569254
>>69253
ну мне в столбик нравится. я имел в виду более такие фундментальные вещи. мало ли какие-то другие методы есть.
454 1569255
>>69247
Ну если сделать так что а всегда больше б (тоесть если б больше а то менять их местами) то можно убрать один printf и оставить проверку только на равенство. Или ввести функции min и max от двух аргументов, тогда тоже можно убрать один printf опставить проверку на равенство и если не равны то там в будет что то типа printf("......", min(a,b), max(a,b));
455 1569256
>>69247
выносишь в функцию, дальше цепочка if-return, последнее условие просто return
456 1569257
>>69256
а точно спасибо, как это я с ретурном то проебался. точно так программа гораздо быстрее будет завршаться. спасибо большое, анчоус.

А можешь подсказать ещё одну вещь.
Вот нужна программа которая бы принимала
x список чисел
y список чисел
который введёт пользователь. Суть в том что пользователь может ввести просто 3 числа, а может 10 ввести. Как это реализовать?
457 1569258
>>69232
я бы сгенерил массив данных для графика в проге, а потом их отдал бы в gnuplot
458 1569262
>>69237
>>69238
SDL ващет могет в окне рисовать.
459 1569263
>>69262
Рисовать тупо или именно графики строить? Хотелось бы готовый модуль с графиками в идеале. Ну или придётся с лицом лягушки пилить график самостоятельно
460 1569271
>>69247
Так мона:
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");
461 1569274
>>69263
А в чем проблема? Передал координаты ф-ции и получил график. Можешь на гитхабе поискать стороннюю либу если такое не устраивает. Ну или пиздуй в какой-нибуть mathematica(?)/PariGP(?)
462 1569299
>>69274

>Передал координаты ф-ции и получил график.


Ну если так то всё шикарно.

А как напечатать содержимое односвязного списка?
463 1569393
464 1569394
>>69299
Обратиться к полю, в котором хранишь данные. Потом вспомогательный указатель на следующий элемент подвинуть в цикле while (p->next != NULL).
IMG20200111025317799.jpg27 Кб, 1280x572
465 1569411
Выродки блядь, вы можете иф стейтмент закрывать скобками? Невозможно вашу кашу из элифов однострочной хуеты с переносами читать. Либо закрывайте либо пишите тело в той же строке в которой стейтмент. И купите себе блять книжку со стайлгайдом
466 1569413
467 1569414
>>69411
jsокал, выкатывайся
468 1569415
>>69414
Ребенок-илитарий, написавший 0 строчек коммерческого кода, плиз, не нужно защищать свой скудный ум такой риторикой. Лестница элифов без скобок ВСЕГДА получается нечитаемой
469 1569416
>>69415
да да да, иди на хуй :)
470 1569418
>>69411

>Либо закрывайте


Нинужно

>либо пишите тело в той же строке в которой стейтмент.


Никрасиво
471 1569419
>>69416
Прости что напомнил о твоей несостоятельности, хуйня из школы 21.
472 1569452
>>69247
А теперь тоже самое без операторов сравнения сделай.
473 1569460
>>69411
Говно, ты? Я тебя узнал. Когда допишешь свой язык программирования? Я устал ждать новое видево!
https://www.youtube.com/watch?v=7VNXP8Njotk&list=PLlJ2XpWJ7m_SyyWc12KXOmhJdNURgParL&index=12
474 1569463
>>69460
шизло, ты? паренек делает учебный проект по приколу заливая видосики на ютуб, че тебе не нравится? Ах да, ты же долбоеб пишешь простынки иф стейтментов без скобок друг под кругом, прости что спросил.
475 1569467
>>69463
Jsошлюха не палица.
476 1569469
>>69467
тебя жс макаки обоссали что ли, или откуда такая нелюбовь к популярному инструменту?
477 1569470

>жс макаки


>откуда такая нелюбовь


>сказала жс макака


?
478 1569474
>>69470

>эти невнятные пуки ребенка-студннтишки не написавшего ни одной строчки коммерческого кода


Не рвись так сильно, илитарий. Сомневаюсь что ты по теме треда вообще хоть что-то кроме хеловорлд левела ответить сможешь.
1231259093278.jpg114 Кб, 281x339
479 1569475

>эти невнятные пуки ребенка-студннтишки не написавшего ни одной строчки коммерческого кода


>Не рвись так сильно, илитарий. Сомневаюсь что ты по теме треда вообще хоть что-то кроме хеловорлд левела ответить сможешь.

480 1569482
>>69475

>очередной пук гринтекстом

481 1569483
>>68857
#ifndef _MSC_VER && !__INTEL_COMPILER && !__STDC_WANT_LIBC_EXT1__
// тут у нас типа костыль
int scanf_s() {
...
}
#endif
482 1569486
А вам тоже не понятно что забыли жсбляди итт, и нахуя они так рвутся?
483 1569488
>>69486
Я не жсблядь, но про if без скобок в одну строчку он правильно бомбанул.
Никто уже не редактирует код в 80x40 терминалах, и твои лесенки в хуй никому не упали, они просто нечитабельны в нормальной IDE.
484 1569489
>>69486
Отбились от своего стада, видимо.
485 1569490
>>69488
Еще один жопоглазик, лол. Ты сам-то веришь в хуйню, которую несешь? Вот смотри, тупа логика и нихуя более: когда ты пишешь в строчку, твой ретурн/принтф или что ты там обычно на своем жскале высираешь, просто сливаются с условием. Понимаешь? Т.н. "лесенка" позволяет тебе увидеть разницу в слоях. Так вот, когда эта лесенка одна, тебе на хуй не нужны никакие скобки, они тупо не играют никакой роли. А теперь съебал, шизоид ебаный. Подрочи на свой читабельный тс, лол.
486 1569491
>>69488
Я те больше скажу братиш, тут жсблядей ваще нет. Просто ребенку НЕПРИЯТНО, и в жизни он стремных вещей видел настолько мало, что считает жс чем-то плохим.
487 1569492
Ясно, жсблядь семеновна итт. Я пошел спать.
488 1569493
>>69490

>этот разрыв жопы долбоёба со сломанным детектором.

489 1569494
>>69490
Ты чё несёшь дегенерат? Ещё раз тебе говорю, по тому что ты пишешь уже видно что опыта у тебя просто ноль. Ниче ещё годик повкатываешься в школе 21, может вкатишься на галеру писать на жсе который ты так ненавидишь (причина наверное даже самому тебе не понятна)
490 1569495
>>69492

>мам симёны сматли мам

1231259093278.jpg114 Кб, 281x339
491 1569496

>Я не жсблядь, но про if без скобок в одну строчку он правильно бомбанул.


>Никто уже не редактирует код в 80x40 терминалах, и твои лесенки в хуй никому не упали, они просто нечитабельны в нормальной IDE.


>Я те больше скажу братиш, тут жсблядей ваще нет. Просто ребенку НЕПРИЯТНО, и в жизни он стремных вещей видел настолько мало, что считает жс чем-то плохим.


>Ты чё несёшь дегенерат? Ещё раз тебе говорю, по тому что ты пишешь уже видно что опыта у тебя просто ноль. Ниче ещё годик повкатываешься в школе 21, может вкатишься на галеру писать на жсе который ты так ненавидишь (причина наверное даже самому тебе не понятна)


>этот разрыв жопы долбоёба со сломанным детектором.


>мам симёны сматли мам

492 1569498
>>69496

>это буйство школомаксималиста в этом итт


Как там лабы по "плюсам" с cdin/cout вместо printf?
493 1569499
>>69495
Тоже мне, блядь, притащил пруфы, лол. Ору с тебя - дауна. Алсо, скрины делать научись, говно позорное. И про лесенки свои иди затирай своим одноклассникам, за одно код стайлом похвастаетесь друг перед другом и подрочите на брудершафт, попивая смузи. Хррррртьфу!
494 1569504
Кстати как раз в жыесе и практикуется эта хуйня с однострочным ифом без скобок. Работая с си я такое видел только в либо стрёмном впопенсорце/всратом эмбеде из 90-ых (ну где нет никаких норм по кодстайлу), либо в коде который писали вчерашние студенты, так что господа сверху правы - с буйствующим гринтекстером все понятно.
495 1569527
Ты можешь быть истинно свободным только в рамках существующей системы правил. Либо это будут твои внутренние нравственные ограничения, либо навязанные обществом законы. Существующие правила позволяют не думать и не выбирать из множества альтернативных выборов. Так как выбора нет. Это повышает твою продуктивность и эффективность в конечном счете. Об этом, кстати, еще депутат Музулина постоянно толкует.
Поэтому если вы примете правило 80 символов в строке, функции в 25 строк, плюс строгий код-гайл, вы только выиграете. Вот.
496 1569614
>>69394
Спасибо. Ну и сложно пиздец это конечно.
497 1569967
>>69504
Нахуя ты сам себе противоречишь? Пизда, жсобляди все такие тупые?
498 1569983
>>69967
говно спорило с мочей
499 1570017
>>69983
А ты, ебать, кто такой? Из какой параши залетел?
500 1570067
>>69527
Иди в тред Паскаля, хомяк.
501 1570228
>>69614
Что там сложного? Инфы про указатели полно. Вот односвязный список (LIFO): https://pastebin.com/mbmLj3ty
502 1570299
>>70228
А можно создать список и сразу в нём инициализацию переменных сделать? а то у меня получается только создать их, а инициализацию нельзя. ну типа создать список с интеджерами уже известными.
503 1570304
>>70299
Не понял твой вопрос. Ты когда память новому элементу выделяешь, тогда и "инициализируешь" его. Если тебе нужно его каким-то дефолтным значением после создания забить, то берешь и указываешь нужное. Но только нахуя это? Когда элемент добавляешь, тогда и выделяй память + значение нужное вбивай.
504 1570314
>>70304
Ну щас объясню тебе. Подожди, пожалуйста, открою визуалку.
Capture.PNG4 Кб, 340x156
505 1570318
>>70304
вот. у меня список я туда могу поместить какие-то переменные, но сразу им значения присовить не могу. не даёт. почему?
506 1570320
>>70318
Про структуры почитай. Это не список. Список - это колбаса из элементов типа этой структуры, которые связаны между собой.
507 1570322
>>70320
я так понимаю мне нужно прочитать самую первую книжку из оп поста от двух авторов?
508 1570326
>>70322
Ты тролль? Я тогда вообще не понимаю, как ты до списков дошел. Инфы, повторю, дохуя. Не обязательно книжку, можно статьи по мере надобности читать. Но для тебя, похоже, лучше действительно книжку от корки до корки прочитать, если цель изучения стоит. А если написать список, то читаешь про структуры, указатели, функции.
509 1570329
>>70326
Я слез с питона недавно и там списки очень просто делались,а здесь я охуеваю. Да, хочу выучить язык нормально.
510 1570335
>>70329

>Керниган,Ритчи - Программирование на C

511 1570342
>>70335
понял. съебался уже отсюда читать книгу. там кстати ещё и перевод на русский есть вообще шикарно и упражнения это всё радует.
513 1571562
>>69411
Чё посоветуешь? где качать?
Тред утонул или удален.
Это копия, сохраненная 27 февраля 2020 года.

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

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