М.Двач / Программирование

Двач.hk не отвечает.
Вы видите копию треда, сохраненную 26 мая 2019 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

78 Кб, 792x1023
C Programming Language #44 /clang/ # OP 18 апр, 19:51 1383604 В конец треда | Веб

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

Пожалуйста, пользуйтесь https://ideone.com/ или 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 (драфт)
- 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://www.iso-9899.info/wiki/Books#Learning_C

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

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

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

- №41: https://arhivach.ng/thread/434018/
- №42: https://arhivach.ng/thread/438066/
- №43: https://arhivach.ng/thread/441686/ >>1377621 (OP)

Ответы8362292749

169 Кб, 1080x897
2 18 апр, 20:11 2 1383622

>>1383604 (OP)
Сколько ещё детей, прочитавших про ссылки полезут с ними в си?

3 18 апр, 20:34 3 1383650

>>1383560
Аа, кажись я понял где проеб. Этот & надо писать в переменной которую передаешь в функцию, а не в описании самой функции. Верно?

Ответы8365783695

4 18 апр, 20:43 4 1383657

>>1383650
А ещё звёздочки нужны, в общем ты не понял.

5 18 апр, 21:22 5 1383694

Насрал в тред
мимо C++ господин

6 18 апр, 21:24 6 1383695

>>1383650
В описании (на самом деле это называется объявление функции, declaration - учись говорить правильно сразу), не забудь аргументу указать, что он указатель на int.
>& надо писать в переменной
Ну пока хотя бы так понимай

Ответы85951

7 18 апр, 21:42 7 1383709

Пацаны, такой вопрос, изучив основы СИ, что делать дальше? Заучивать алгоритмы? А что дальше? Есть ли смысл оставаться на СИ, или уже особо ловить нехуй и переходить к крестам и ООП?

Ответы8371383717837198373083736

8 18 апр, 21:51 8 1383713

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

Ответы83717

9 18 апр, 22:10 9 1383717

>>1383709
http://sijinjoseph.com/programmer-competency-matrix/
Читаешь, смотришь чего не знаешь - узнаешь. Дрочи структуры, алгоритмы, матан, солид, работу компилятора, архитектуры и тд.
>>1383713
Щас бы нубам советовать книги на англише.

Ответы8373383741

10 18 апр, 22:12 10 1383719

>>1383709
Изучать ООП на примере С++ - это обрекать себя на впитывание худших девелоперских практик и на обязательное и мучительное переучивание в будущем.

мимоскрыл

Ответы83746

11 18 апр, 22:18 11 1383730

>>1383709
>Заучивать алгоритмы
Вообще не айс. Ты перед этим тупо заучивал разновидности хеллоуворлдов на Си? То-то же. Вот и с алгоритмизмом все поинтереснее.
http://index-of.co.uk/Algorithms/Introduction to Algorithms 3rd Edition Sep 2010.pdf
Вникай, не пожалеешь. Если и убьешь время, то не на "заучивание".
>переходить к крестам и ООП
Тоже ошибочное разочарование, якобы предстоит все только самое скучное. ООП - в первую очередь парадигма, а не всякие бесовские языковые конструкции, подлежащие запоминанию. Возможно, так будет ближе к сути:
http://index-of.co.uk/Algorithms/Introduction to Algorithms 3rd Edition Sep 2010.pdf
Неплохо еще покодить под Линукс, системные вызовы, сокеты-хуёкеты, вот это все. Доступный вариант:
https://richard.esplins.org/static/downloads/linux_book.pdf
И приятность испытаешь, когда не сферический хеллоуворлд в вакууме, а какая-то прикладнуха с реальными взаимодействиями запустится.
Можно ASM пощупать, осилить не слишком сложную теорию, позалипать в дебагере, понаступать на грабли, поизвлекать уроки, эмоции обеспечены.
Лично я не стал бы отворачиваться в сторону современной движухи так рано. Как минимум еще кайф половить, а как энтузиазма и усидчивости достанет, то, глядишь, и не доведется уходить.
мимо нетрудоустроенный студент

Ответы83736

12 18 апр, 22:21 12 1383733

>>1383717
>Щас бы нубам советовать книги на англише.
Удивительная взаимосвязь. Не находите?

13 18 апр, 22:22 13 1383736

>>1383709
>>1383730
бля, со второй ссылкой промахнулся, вот быстрофикс
https://www.cs.rit.edu/~ats/books/ooc.pdf

14 18 апр, 22:36 14 1383741

>>1383717
И скинул ему статью на "англише", просто гениально.

Ответы83846

15 18 апр, 22:48 15 1383746

>>1383719
> Изучать ООП на примере С++ - это обрекать себя на впитывание худших девелоперских практик
Поэтому лучше взять gcc-objc и привыкать к правильному ООП на Си. Да, на Windows/Linux, да, без маковых фреймворков, потому что суть не в этом.

> мучительное переучивание в будущем
Этого не избежать никогда.

16 19 апр, 07:54 16 1383846

>>1383741
Таблица то проще чем книга, тем более там с юмором написано.

17 19 апр, 11:07 17 1383911

Можно ли на чистом С сделать игру уровнем вроде контры с nes и насколько это геморно? Правильно ли я понимаю, что для этого SDL используется?

Ответы8392784005

18 19 апр, 11:27 18 1383927

>>1383911
Так толсто, что даже тонко.

Ответы83983

19 19 апр, 12:56 19 1383983

53 Кб, 1080x192024 Кб, 1080x1920

>>1383927
Что в моем вопросе толстого? Писали же тот же дум 1-2 на чистом С.

Бтв, вопрос по книжке. Хули компилятору не нравится? Я же точно как в книжке все написал.

Сменил компилятор с GCC на G++ и заработало. Какого хуя?

Ответы8400184003

20 19 апр, 13:31 20 1384001

>>1383983
> Писали же тот же дум 1-2 на чистом С.
Тому шо ты сам ответил на свой вопрос.

Ответы84059

21 19 апр, 13:34 21 1384003

>>1383983
Определение getline покажи (где реализыуешь).

Ответы84059

22 19 апр, 13:37 22 1384005

>>1383911

Спойлернуть, чтолле

https://github.com/andwn/cave-story-md/tree/master/src

Ответы84059

23 19 апр, 14:25 23 1384059

>>1384003
Вот целиком
https://pastebin.com/PLTqn7pY

>>1384001
>>1384005
Я про сложность спрашивал и sdl. То, что это возможно, я в курсе.

Ответы8406284072

24 19 апр, 14:26 24 1384062

>>1384059
OpenGL + GLut

Ответы84078

25 19 апр, 14:35 25 1384072

>>1384059
>https://pastebin.com/PLTqn7pY
Переименуй свой getline хотя бы в mygetline. В stdio.h есть своя версия getline.

Ответы84078

152 Кб, 1920x1080
26 19 апр, 14:40 26 1384078

>>1384062
Почему именно opengl? И что такое glut?

>>1384072
Боагодарю. И это не мой гетлайн, так в книжке написано. Неужели книга так устарела, что уже некоторые примеры не работают? Это же не первое издание.

Ответы84080841128412584126

27 19 апр, 14:44 27 1384080

>>1384078
Нет, это разработчики компиляторов за тебя изобретают велосипеды.

Ответы84117

28 19 апр, 15:16 28 1384112

>>1384078
Можно и не опенджл, но будешь свои методы писать взаимодействующие с директиксом. С опенджл же уже все написано за тебя. Ну и добавь уже гугл в закладки блджад

Ответы84117

29 19 апр, 15:19 29 1384117

>>1384080
Причем тут компиляторы, если дело stdio.h?

>>1384112
А что насчёт SDL2 то?

Ответы84123

30 19 апр, 15:29 30 1384123

>>1384117
А stdio.h и библиотеку под него кто реализует?

Ответы84148

31 19 апр, 15:32 31 1384125

>>1384078
OpenGL - это такой опенсорсный кроссплатформенный DirectX. Грубо говоря, интерфейс между тобой и видеокартой, чтоб все, что надо, в память видюхи загружать, запускать там нужные вычисления, и чтоб выводилось куда надо. Сам процесс обработки тоже пишешь ты на языке GLSL, похожем на Си, с нативной поддержкой матриц и векторов. Эти маленькие программки называются шейдерами, и с недавнего времени как минимум 2 шейдера - vertex и fragment - тоже должен предоставить ты, то есть даже крутящийся кубик не сделаешь без базовых знаний, как вектор с координатами множить на матрицу с синусами-косинусами-хуёсинусами, а потом еще в перспективу переводить, а потом еще z-buffer юзать, чтоб не насквозь все было. GLUT - набор кое-каких вспомогательных инструментов поверх OpenGL, чтоб не проделывать вручную ОС-зависимые прелюдия и еще кое-что. Короче, OpenGL - это интересно, OpenGL Programming Guide (большая красная книга) в помощь, остальное от лукаваго.

Ответы8415184277

32 19 апр, 15:36 32 1384126

>>1384078
Найди возможность поставить какой-нибудь линукс, хотя бы ноут из серии 1 гигло 1 ядро и поставить там gdb и юзать nm. Много вопросов отпадет. Ну или аналоги под шиндос как-нибудь, или на ведро или на чем ты кодишь.

33 19 апр, 16:14 33 1384148

>>1384123
Красноглазый линуксоиды из опенсорса?

34 19 апр, 16:15 34 1384151

>>1384125
Чет как-то оверкилл. Синусы хуинусы для платформера уровня Марио с нес?

Ответы84275

35 19 апр, 16:29 35 1384160

В OpenGl можно в взять адрес памяти видеокарты(glMapBuffer()) и использовать memcpy между cpu и gpu. Насколько это безопасно? memcpy же заоптимизирован по самое, комп знает что это указатель на другое устройство или указатель как-то пометить нужно?

Ответы8427584514

36 19 апр, 16:48 36 1384174

(uint64_t) - 1;

Си знаю плохо, переписываю код с него на другой язык, никак не могу понять что в этой строчке происходит. Результат у нее всегда -1. Поясните пожалуйста механику.

Ответы84189

37 19 апр, 17:11 37 1384189

>>1384174
Это такой хитрый способ написать максимальное uint64_t число. А пишет -1 наверное потому, что ты печатаешь знаковые инты.

Ответы84198

38 19 апр, 17:32 38 1384198

>>1384189
Спасибо.

39 19 апр, 19:05 39 1384275

>>1384151
Ну в марио синусы разве что для прыжка, но и то без них можно. И базовый кубик в OpenGL можно вывести, вообще ничего кроме арифметики не зная, вся математика есть готовая в либах. Но да, для платформера более чем достаточно SDL, а уж как выводить, оно там само разберется.

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

40 19 апр, 19:08 40 1384277

>>1384125
>OpenGL

Уже не нужен, так как его выпилят из следующей макоси полностью

Ответы8427984283

41 19 апр, 19:10 41 1384279

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

41 Кб, 588x216
42 19 апр, 19:10 42 1384280

Зачем на пикрил объявляется алиаст с таким же именем для объявленной структуры? Это чтобы в случае чего можно было сменить приватную реализацию или зачем?
Или это чтобы в объявлении типа можно было писать CGRect без слова struct?

Ответы84281

43 19 апр, 19:11 43 1384281

>>1384280
> Или это чтобы в объявлении типа можно было писать CGRect без слова struct?
Именно.

44 19 апр, 19:12 44 1384283

>>1384277
Я что-то такого не слышал, можно ли ссылочку анон? А то больше похоже на один вася сказал.

В мохаве opengl можно включить. В ios 12 он вообще по дефолту включен.

Ответы84288

45 19 апр, 19:16 45 1384288

>>1384283
https://developer.apple.com/macos/whats-new/
Deprecation of OpenGL and OpenCL

46 19 апр, 21:58 46 1384419

А я могу делать forward declaration для указателя на тип?

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

Ответы8444584488

47 19 апр, 22:35 47 1384445

>>1384419
>в своем заголовочном файле

заголовочные файлы не нужны вобщето

Ответы86333

sage 48 19 апр, 23:39 48 1384488

>>1384419
> А я могу делать forward declaration для указателя на тип?
Можешь либо typedef struct struct_name type_name; у себя, и в функции type_name ∗argument. Либо ты можешь просто struct struct_name ∗argument без предварительных плясок. Естественно, все это работает, если тебе нужно только имя типа, но не его содержимое/размер. Вариант с typedef - это обычный для си способ положить наружу апи и скрыть реализацию.

49 20 апр, 01:00 49 1384514

>>1384160
CPU пишет в память так же, как обычно, только попадает всё не в раму и кэши, а в GPU.
Обычно эти участки памяти Write-combining, подробнее в https://fgiesen.wordpress.com/2013/01/29/write-combining-is-not-your-friend/

88 Кб, 1920x1040
50 20 апр, 06:52 50 1384551

Пытаюсь прикрутить SLD, но нихуя не выходит. В чем проблема?

Ответы8456184654

51 20 апр, 08:15 51 1384561

>>1384551
Проиграл с последней ошибки. Слон в посудной лавке.

Ответы84580

100x16
52 20 апр, 08:49 52 1384571

Всем привет.
Недавно понадобилось одну простейшую программку написать на Си.
И у меня тут-же возникла пара-тройка вопросов к этим вашим Си.
Серьезно за время всего существования языка, которому уже более 40 лет, никто не решился реализовать НОРМАЛЬНУЮ работу со строками ?
Что это за хуйня ? Пик 1

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

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

Второй вопрос без RAGE будет, скажите как мне правильно что-то запустить в командной строке ?
ShellExecute ?
system ?
Причем нужно чтобы консолечка не появлялась, но команда отработала.
Причем наибольший вопрос составляют кавычки, для выполнения команды нужно много двойных кавычек использовать, но я ебал слеши добавлять.

Ответы845958467684750

53 20 апр, 09:23 53 1384580

>>1384561
Так в чем проблема то?

54 20 апр, 10:25 54 1384595

>>1384571
>НОРМАЛЬНУЮ работу со строками
Ебать, еще один вылез, дови его111

Ответы84603

55 20 апр, 11:04 55 1384603

>>1384595
Ну хорошо
Со строка я вроде как разобрался
Теперь вот вопрос
Как уменьшить размер выходного файла ?
Одной только опцией -s файл почти в 10 раз меньше стал, но я хочу еще меньше.
У меня использовались windows.h и stdio.h
Первая для ShellExecute и создания Win32 application штоп консоль не создавалась.
Решил я не пользовать stdio.h для создания файла, потому что в windows.h есть CreateFile, размер уменьшился всего на 5 килобайт -_-

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

Ответы846048467684746

56 20 апр, 11:07 56 1384604

>>1384603
Например -o2 в gcc.

Ответы84605

57 20 апр, 11:09 57 1384605

>>1384604
Пробовал когда были обе либы вместе, ничего не дает. И Os тоже.

58 20 апр, 11:54 58 1384654

>>1384551
Какой же блять говнокод вырвиглазный, даже на превью глаза горят от этой хуйни. Ну неужели нельзя сразу писать красиво и удобно, чтобы даже 5 строчек твоего кода не вызывали смех и ярость?

Ответы84657

59 20 апр, 11:57 59 1384657

>>1384654
Этот код - пример с сайта SDL, хули доебался?

Ответы84658

60 20 апр, 11:58 60 1384658

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

Ответы84663

44 Кб, 1920x463
61 20 апр, 12:02 61 1384663

>>1384658
Все у меня скачано, я содержимое папки поместил куда надо( к mingw) и линки -lSDL2main and -lSDL2 сделал, как и показано на скрине в ошибке.

Ответы84668

62 20 апр, 12:06 62 1384668

>>1384663
Ты пьяный? Может быть разархивируешь, блять?

Ответы84670

47 Кб, 1155x534
63 20 апр, 12:06 63 1384669

Скинул 32битную версию SDL, а не 64. Теперь выдает это.

Ответы84680

64 20 апр, 12:06 64 1384670

>>1384668
Аутист, это не архив блядь.

Ответы84679

65 20 апр, 12:08 65 1384676

>>1384603
Cам никогда не уменьшал размер исходников, поэтому вот мой поток сознания с идеями:
Попробуй LTO. Попробуй не весь windows.h, а только нужные подхедеры. Попробуй вообще не инклюдить ничего, а самому объявить нужные функции. Посмотри с depends.exe от чего лишнего зависит. Посмотри насчёт структуру получаемого PE, может там что-то лишнее что можно с помощью настроек линкера убрать. Попробуй вообще отключить CRT и написать свой, легковесный (ЕМНИП. венда так позволяет).

>>1384571
>Причем нужно чтобы консолечка не появлялась, но команда отработала.
С CreateProcess можно. В винде есть аналоги линуксовых exec и друзей (https://docs.microsoft.com/en-us/cpp/c-runtime-library/exec-wexec-functions?view=vs-2019), но я ими не пользовался.

Ответы84741

66 20 апр, 12:10 66 1384679

>>1384670
Аутист тут только ты, съебись в школу 21, где тебя даже либы собирать не научили. Эх! Ты-то наверное думал, уже программист!

Ответы84682

67 20 апр, 12:11 67 1384680

>>1384669
Сделал Rebuild Project и стало вот такую хуйню выдавать и какой-то <stddef.h> открывать в новой вкладке.

Ответы84681

97 Кб, 1920x1040
68 20 апр, 12:11 68 1384681

>>1384680
Забыл пик.

69 20 апр, 12:13 69 1384682

>>1384679
Долбоеб, что за 21 школа, какие лабы? Что ты несешь, поехавший блядь.

Ответы84686

70 20 апр, 12:16 70 1384686

>>1384682
Иди, сука, хеловорлды пиши уебан глупый, и свои дырявые посты пиши в один блядь. И блядь добавь гугл в закладки

Ответы84693

71 20 апр, 12:19 71 1384693

>>1384686
Хули ты рвешься, долбоеб?

72 20 апр, 12:24 72 1384698

Вот подключение SDL - тот еще дроч. Начиная с того, что там есть два разных бинарных релиза, заканчивая тем, что оно иногда просто блять не линкуется и все тут.
Алсо, есть ли на Гитхабе или еще где пример небольшого полноценного приложения, где GUI создается только с использованием WinAPI?

Ответы8470284868

73 20 апр, 12:34 73 1384702

>>1384698
>есть ли на Гитхабе или еще где пример
Есть

Ответы84704

74 20 апр, 12:35 74 1384704

>>1384702
Заебись. А ссылочку на него предоставишь?

Ответы84705

75 20 апр, 12:36 75 1384705

>>1384704
Да

76 20 апр, 13:25 76 1384736

Пункт 5.10 у кернигана ритчи только для линукса?

Ответы84749

77 20 апр, 13:32 77 1384741

>>1384676
>Попробуй не весь windows.h, а только нужные подхедеры. Попробуй вообще не инклюдить ничего, а самому объявить нужные функции.
То есть я могу каким-то образом получить доступ к ShellExecute без windows.h ?
Как это работает ?

Ответы84868

78 20 апр, 13:35 78 1384746

>>1384603
Конпеляй в tcc.

Ответы847568475984797

79 20 апр, 13:37 79 1384749

>>1384736
Ты про параметры из командной строки? Win+R cmd

Ответы84881

80 20 апр, 13:38 80 1384750

>>1384571
>>реализовать НОРМАЛЬНУЮ работу со строками
Еще один. Ты почитал бы хотя бы причину появления именно такой строки.

81 20 апр, 13:48 81 1384756

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

Ответы84759

82 20 апр, 13:52 82 1384759

>>1384746
>>1384756
А, разобрался, шикарно, вместо 18 килобайт всего 2.

29 Кб, 840x317
83 20 апр, 13:54 83 1384761

Теперь выдает вот такую хуйню. В чем дело?

Ответы84764

84 20 апр, 13:56 84 1384764

>>1384761
Приложение оконное, нужна WinMain

Ответы84774

85 20 апр, 14:06 85 1384774

>>1384764
Это ты сейчас про что и где искать?

86 20 апр, 14:27 86 1384797

>>1384746
>#include <windows.h>
>#include <stdio.h>

>ShellExecute(NULL, "open", "text.txt", NULL, NULL, NULL);

>main.c:25: warning: implicit declaration of function 'ShellExecute'
>tcc: error: undefined symbol 'ShellExecute'

Почему так ?

Ответы84850

87 20 апр, 15:24 87 1384850

>>1384797
>>ShellExecute
>>shellapi.h
https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-shellexecutea

Ответы84854

88 20 апр, 15:43 88 1384854

>>1384850
>>>main.c:3: error: include file 'shellapi.h' not found

Ответы8485684868

89 20 апр, 15:46 89 1384856

>>1384854
Windows SDK ставил?

Ответы84857

90 20 апр, 15:47 90 1384857

>>1384856
Для TCC ?

Ответы8485984860

91 20 апр, 15:52 91 1384859

>>1384857
Тогда через вызов КОМка ебашь

92 20 апр, 15:53 92 1384860

>>1384857
Или вообще откажись от нее и используй CreateProcess

Ответы84865

93 20 апр, 15:58 93 1384865

>>1384860
Так, допустим я от неё отказался, как мне тоже самое сделать используя CreateProcess ?

Ответы84869

94 20 апр, 16:01 94 1384868

>>1384698
Примеры есть на сайте Microsoft, где-то рядом с описанием функции CreateWindowEx.

>>1384741
Он хуйню тебе советует. Выходной размер exe-шника увеличивается из-за патчей для msvcrt, которые гцц статически линкует. Если собирать вообще без CRT, будет очень мало, но очень неудобно.

>>1384854
Спизди нужное из гцц. А дефки для библиотек там встоенная утилита делает, tiny_impdef, кажется.

Ответы84879

95 20 апр, 16:03 95 1384869

>>1384865
Лезешь на MSDN и смотришь пример. Я не знаю, что ты хочешь конкретно сделать ShellExecute

96 20 апр, 16:03 96 1384870

В вузике изучаем графику в консоли с использованием windowsx, насколько мне это пригодиться в будущем?

Ответы84874

sage 97 20 апр, 16:09 97 1384874

>>1384870
Очень маловероятно, что пригодится. Но навыки ебли Windows API пригодятся если MS внезапно не дропнет совместимость, лол, а они могут, у них совсем крыша едет.

98 20 апр, 16:14 98 1384879

>>1384868
Я спиздил нужное с официального сайта TCC, там есть файл winapi full, и там есть shellapi.h.
Почему-то та же самая ошибка.

Ответы84885

3 Кб, 300x164
99 20 апр, 16:17 99 1384881

>>1384749
Не понятно, вот есть программа https://ideone.com/ooIlwc из книги, которая в теории должна выдать строку если она содержится в образце, на деле она выдает любую введенную строку, почему?

Ответы8488584886

sage 100 20 апр, 16:19 100 1384885

>>1384879
> Почему-то та же самая ошибка
Быть не может. Покажи содержимое tcc/include и tcc/include/winapi. У тебя INCLUDE правильный стоит в переменных окружения?

>>1384881
> >= NULL
Проиграл в голос. Убери это или замени на != NULL.

Ответы8489184892

101 20 апр, 16:19 101 1384886

>>1384881
Может быть это if (strstr(line, argv[1]) >= NULL ?

Ответы84892

102 20 апр, 16:23 102 1384891

17 Кб, 572x1985 Кб, 727x31

>>1384885
В tcc/include/winapi shellapi есть
В tcc/include только что скопировал, выходит тоже самое.
TCC нужно использовать переменные окружения для include ?

Ответы8489384896

103 20 апр, 16:26 103 1384892

>>1384885
>>1384886
Тогда программа выдает строку, только если она полностью идентична образцу

Ответы84894

sage 104 20 апр, 16:27 104 1384893

>>1384891
Так это другая ошибка! Сделай: tcc -impdef shell32.dll, получившийся деф положи в lib, и собирай потом с -lshell32.

Ответы84900

105 20 апр, 16:27 105 1384894

>>1384892
А, все, я разобрался

sage 106 20 апр, 16:29 106 1384896

>>1384891
А ворнинг, потому что ты NULL (указатель) вместо инта в последний параметр передал. Скажи SW_SHOWDEFAULT.

Ответы84900

107 20 апр, 16:31 107 1384900

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

Ответы84906

sage 108 20 апр, 16:36 108 1384906

>>1384900
Это список экспортов дллки, чтобы линкер (в случае tcc - встроенный линкер) знал, где лежит функция. kernel32/user32 оно вроде автоматом подтягивает, а остальные нужно указывать явно. Вот ты и указал. На другой пеке нужна будет только shell32.dll, из которой ты ShellExecute дергаешь, но она системная и есть в каждой винде последние лет 30.

Ответы84918

109 20 апр, 16:47 109 1384918

>>1384906
А вот допустим нужно мне будет туда сокет прикрутить, какой тогда список указывать ?
Где бы на русском языке почитать об этом всем, что-то я очень мало информации найти смог.

Ответы84942

110 20 апр, 17:02 110 1384934

Так, не понял - как заставить Code::Blocks с MinGW сожрать файл манифеста?

Ответы84943

sage 111 20 апр, 17:19 111 1384942

>>1384918
> Где бы на русском языке почитать об этом всем
В машинном переводе MSDN, сука ненависть! На русском есть какие-то левые переводы MSDN. Но даже с нулевым скиллом английского можно посмотреть в MSDN внизу в описании каждой функции, из какой она длл и какой хедер инклудить. Для длл проделываешь ту хуйню с impdef, которую для shell32 делал, линкуешься с -lимядлл. Через десяток итераций ты таким образом сгенерируешь дефы для всех основных либ, и настанет счастье, но можешь написать скрипт и хоть всю system32 сразу обработать, если заняться нечем.

> А вот допустим нужно мне будет туда сокет прикрутить
#include <winsock2.h> перед windows.h
И линковаться с ws2_32.dll.

Ответы85004

sage 112 20 апр, 17:21 112 1384943

>>1384934
Сделать .rc-файл (у них там вроде редактор ресурсов есть, не?). Манифесты кладут в ресурсы, а не просто компилируют как исходник.

113 20 апр, 19:39 113 1385004

>>1384942
>ненависть
Ну чего ты это, сердишься то ?
MSDN я читаю, я не о WinAPI почитать хочу, а о тонкостях работы с TCC.

Ответы85030

114 20 апр, 20:28 114 1385030

>>1385004
> сердишься то
Да Microsoft заебала автоматически переводить технические статьи своим говнопереводчиком уровня "массив ворот дисплея" только потому, что у меня в браузере локаль русская. А кукисы с выставленным языком у них рандомно протухают, и опять все по новой.

> о тонкостях работы с TCC
Там есть doc/tcc-win32.txt, но tcc - это такая локальная редкоиспользуемая штука, поэтому читать лучше исходники.

Ответы85040

115 20 апр, 20:44 115 1385040

>>1385030
Эх исходники, понимать бы еще што там.
Я так понял при компиляции иконку нигде не всунуть, всунул Resource hacker'ом.
Ща буду туды сокеты засовывать.

Ответы85053

116 20 апр, 20:56 116 1385053

>>1385040
Можно засунуть через MinGW'шную утилиту windres.

>TCC can link windows resources in coff format as generated by MinGW's windres.exe.
>For example:

>windres -O coff app.rc -o appres.o
>tcc app.c appres.o -o app.exe

Ответы85103

25 Кб, 408x343
117 20 апр, 22:09 117 1385103

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

Ответы85105

118 20 апр, 22:14 118 1385105

>>1385103
А ты пробовал вообще возвращаемые значения функций проверять? Ну хоть изредка? WSAGetLastError() там, да просто 0 или не 0 хотя бы?

> memset(buf)
> recv(sock, buf)
Ты уверен, что это у тебя вообще собирается?

Ответы851068510985111

119 20 апр, 22:14 119 1385106

>>1385105

Хм, а если убрать windows.h и так называемую точку входа
>WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
То он ожидает и подключения и передачи каких-либо данных.

120 20 апр, 22:17 120 1385109

>>1385105
Он работает когда я просто отправляю с сервера строку, помещает в буфер и выводит.
Просто я хочу отправить файл, и что-то он его отказывается видеть.
Обычный exe'шник принимается не полностью, а лишь его часть, я так предполагаю что это из-за наличия /x00/ в передаваемых данных. Это же вроде как символ того что строка закончилась.

Ответы85111

121 20 апр, 22:19 121 1385111

>>1385109
>>1385105
Ну да, точно, записывает всего 3 байта до /x00/, и как мне с этими нолями быть ?

Ответы85115

122 20 апр, 22:24 122 1385115

>>1385111
Выложи исходник нормальный, телепаты из треда за несколько лет разбежались. Но оставшиеся намекают, что \0 тут роли не играет (ну разве что ты не выводишь файл printf()-ом), а вот recv() нужно вызывать в цикле.

Ответы85118

123 20 апр, 22:28 123 1385118

>>1385115
https://ideone.com/rCQJ3o
Насчет recv не знал, файл я не вывожу, но вот в файл пишу fprintf'ом

Ответы85121

124 20 апр, 22:43 124 1385121

>>1385118
> fprintf
Ну да, он останавливается на первом же \0, он для строк, а не для бинарных данных. Пиши fwrite-ом. И файл открой wb, а не w, а то на \x1a еще споткнешься.

Ответы85203

125 21 апр, 09:17 125 1385196

Помогите разобраться, в чем отличие между (++argv)[0] и ++argv[0], то есть я понимаю, что у [] более высокий приоритет, но вот что из этого следует для меня загадка

Ответы8519885230

126 21 апр, 09:18 126 1385198

>>1385196
Во втором варианте инкрементируешь значение. В первом указатель.

127 21 апр, 09:27 127 1385203

>>1385121
С файлами все получилось, додумался даже как имя файла сначала отправлять, понял для чего существует memset, без него в буфер имени файла попадал какой-то мусор.
А зачем нужно recv в цикле делать, и какую делать проверку все отправлено было или нет ?

Ответы8520685801

128 21 апр, 09:39 128 1385206

>>1385203
Мусор не попал, он там и был, без причины память никто не очищает. И смысла чистить никакого нет, ведь ты всё равно туда свою строку пишешь.

Ответы85224

129 21 апр, 09:41 129 1385208

Кстати, каким IDE вы пользуетесь? Или тут все только в консольку пердолятся?

Ответы852148521685220852488580187917

130 21 апр, 09:54 130 1385214

>>1385208
Кодблокс.
У олдов наверное самописные макросы под вим или емакс.

131 21 апр, 09:58 131 1385216

>>1385208
С++билдер, вижуал студио.

132 21 апр, 10:11 132 1385220

>>1385208
Сетевые бобы

133 21 апр, 10:43 133 1385224

>>1385206
Откуда тогда в конец имени файла берется рандомный символ, если я туда свою строку пишу ?
Типа мне надо как-то ограничивать кол-во символов которые во всем буфере составляет определенная строка, прежде чем строку из буфера куда-то вывести ?

Ответы85316

134 21 апр, 10:50 134 1385230

>>1385196
по идее, если параметры запуска - перечень какой-то однородной хуеты, то одноразово собрать их можно так
while(--argc) chtoto_sdelat(*argv++);
Но это какой-то gavnokod

Короче, argc - это число параметров, с которыми запущена прога (включая саму само название проги "./proga"), argv - массив указателей на эти строки, то есть указетелей на первый указатель, и инкременируя его вместо индексации, ты делаешь его указетелем на второй указатель и т.д. Вообще, изначально все запускается не так, и стэк пушится не указатель на массив указателей, а прямо на месте все эти указатели складываются, но поскольку потом это первая хуерга вызывает main, то ему уже указатель на это место в стеке надо передать.

135 21 апр, 11:25 135 1385248

>>1385208
Венда: студия
Линупс: прокачанный вим. YouCompleteMe + ClangCompleter реально классная вещь.

136 21 апр, 13:22 136 1385316

>>1385224
Сишные строки заканчиваются нулевым символом. Ты сам должен заботиться чтобы так и было. А ты вместо одного нуля записал ВОСЕМЬ ТЫСЯЧ ненужных нулей. Макакин говнокод хуже этого трудно себе представить.

Ответы86104

137 21 апр, 15:22 137 1385801

>>1385203
> А зачем нужно recv в цикле делать, и какую делать проверку все отправлено было или нет
Именно. send() может отправить не все твои данные, recv() может получить не весь кусок, который отправил send(). TCP - это поточный протокол, ему похуй на границы сообщений.

>>1385208
Студия на работе, саблайм дома, потому что в мелких-средних проектах иде не нужны.

Ответы8584585900

138 21 апр, 15:36 138 1385845

>>1385801
Ну не в блокноте же прогать.

Ответы85873

139 21 апр, 15:46 139 1385873

>>1385845
Если есть подсветска синтаксиса, вкладки и возможность прикрутить переход к строке с ошибкой, то можно и в блокноте. Раньше было модно в Notepad++ кодить, например.

Ответы858798591185912

140 21 апр, 15:58 140 1385879

>>1385873
Подсветка это одно, а компилировать и запускать из блокнота ты как будешь? А показ ошибок?

Ответы85885

141 21 апр, 16:08 141 1385885

>>1385879
> а компилировать и запускать из блокнота ты как будешь
> показ ошибок?
Плагины же, запуск компилятора по хоткею, парсинг выхлопа регэкспами и подсветка строк. Хотя в том же npp все это уже из коробки.

142 21 апр, 16:17 142 1385900

>>1385801
>дома в мелких-средних проектах иде не нужны
Консольное барахло поди, только непонятно зачем оно дома, что за проекты такие, или у тебя линукс дома? Я даже в школе в 80-х годах писал игры в графике и в прогах гуй рисовал, тупо удобнее и приятнее чем "введите номер для выбора" как инвалид. И до сих пор, честно, из прог что написал не припомню ни одной без нормального оконного гуя. А рисовать окошки в блокноте, даже не смешно.

Ответы85909

2 Кб, 401x234
143 21 апр, 16:31 143 1385909

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

> или у тебя линукс дома
Да.

> и в прогах гуй рисовал, тупо удобнее
Специально для тебя скриншот самого лучшего в мире компилятора с гуем. А fasm file.asm в консольке пусть дебилы вбивают!

Ответы85928

144 21 апр, 16:32 144 1385911

>>1385873
Ебать ты фрик.

Ответы85916

512x512
145 21 апр, 16:34 145 1385912

>>1385873
>Раньше было модно в Notepad++
Это же сеньеоры так джунов тролили, мол не кодишь в нотепаде - не программист. Ты правда на это повелся?

Ответы85916

146 21 апр, 16:39 146 1385916

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

>>1385912
> Это же сеньеоры так джунов тролили
Ты про тех самых джунов, которые вопили "у вас тут нет пхпсторма, я не знаю пхп без него"?

147 21 апр, 16:54 147 1385928

>>1385909
>Специально для тебя скриншот
Спасибо, забавно. Судя по картинке, уж тут-то окошки/кнопочки нужны в последнюю очередь, лол.

70 Кб, 1917x1036
148 21 апр, 17:18 148 1385948

двач тут фронтенд макака в си пытается вкатится, объясни как так вышло?

Ответы8595085981

149 21 апр, 17:24 149 1385950

>>1385948
Что случилось то у тебя, макак?

150 21 апр, 17:26 150 1385951

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

Ответы85964

151 21 апр, 17:38 151 1385964

>>1385951
Потому что у тебя говнокод на Си. Ты int сравниваешь с long double. Там такая ебанина потом будет после 232-1 при сравнении с твоей переменной iterations. Компилятор за тебя производит смену типов для корректной обработки...

Ответы85973

152 21 апр, 17:50 152 1385970

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

60 Кб, 1834x942
153 21 апр, 17:55 153 1385973

>>1385964
да тут я проебался, почему-то думал, что double есть макс. целочисленный

ок, объявил i и iterations как unsigned int

Ответы8597485979

59 Кб, 1491x881
154 21 апр, 17:56 154 1385974

>>1385973
не тот скриншот

Ответы8597985984

155 21 апр, 17:59 155 1385979

>>1385973
>>1385974

rand(); нет в stdlib.h. Не понимаю как компилятор без ошибок собрал. Ну и нода у тебя тупо из кеша берет результат.

156 21 апр, 18:00 156 1385981

>>1385948
Попробуй написать не i, а i=0, дружок.

Ответы85985

157 21 апр, 18:04 157 1385984

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

57 Кб, 1845x914
158 21 апр, 18:05 158 1385985

>>1385981
> а i=0, дружок.
да сорян только сейчас заметил

> Ну и нода у тебя тупо из кеша берет результат
хм, впервые слышу про то чтобы нода что-то кэшировала

Ответы85996

sage 159 21 апр, 18:40 159 1385996

>>1385985
Ты сравниваешь V8 (с оптимизацией) и gcc (без оптимизации). Сделай -O3, и gcc выкинет весь твой говнокод нахуй, будут нули.

Ответы85997

160 21 апр, 18:41 160 1385997

>>1385996
Правильнее будет отключить оптимизацию и жс и сравнить.

Ответы85999

sage 161 21 апр, 18:43 161 1385999

>>1385997
Я не фронтенд-макака, и не знаю, что именно в V8 отключается (что-то отключается, да). Может оно этот пустой цикл еще на этапе парсинга выкидывает. Тем более, что там let i, и результаты вообще никак наружу не протекают.

Ответы8600286422

162 21 апр, 18:47 162 1386002

>>1385999
Я вообще жс не знаю, делал какую-то лабу в универе по веб-программированию и всё, так что тоже не могу сказать, что там можно отключать и как это делается.
алсо убери сажу, в тематике же

163 21 апр, 21:30 163 1386104

>>1385316
Ну теперь позаботился, отправляю в конце "сообщения" \x00.
Я отправляю небольшой файл 2кб размером по сокету
Он помещается в буфер размером 8кб
При записи, файл имеет размер 8кб, что соответствует размеру буфера, но не реальному размеру файла
Как это решить ?

Ответы86110

164 21 апр, 21:45 164 1386110

>>1386104
Размер отправляй, ну! Весь твой протокол может выглядеть примерно так (send_all - send в цикле, пока все не отправится или соединение не будет закрыто, а recv_all, соответственно, recv в цикле):
send_all uint32_t filename_length, content_length;
send_all uint8_t[filename_length];
recv_all uint8_t status; // Опционально можно просить у клиента подтверждение, что ему нужен такой файл такого размера.
send_all uint8_t[content_length];
recv_all uint8_t status; // Опционально, подтверждение, что клиент все принял и записал.

Никакие нуль-терминаторы в коммуникациях, в общем-то, не нужны. Можешь после приема втыкать.

Ответы8611387135

165 21 апр, 21:49 165 1386113

>>1386110
Понял-принял

166 22 апр, 04:39 166 1386302

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

167 22 апр, 06:42 167 1386322

Объясните пожалуйста принцип работы comp
https://ideone.com/qouvhq

Ответы86355

168 22 апр, 07:54 168 1386333

>>1384445
Как не нужны? Это троллинг или реально у вас там дохуя все поменялось и теперь не нужны?

169 22 апр, 09:36 169 1386355

>>1386322
Ты про numcmp?
Два указателя типа char приводятся к double.
Затем сравниваются и возвр-ся -1, если первое меньше второго, 1, если наоборот и 0, если не то и не то(равны).

Ответы86369

170 22 апр, 10:18 170 1386369

>>1386355
Это то ясно, я именно про comp спрашиваю, вот эта вот конструкций меня угнетает
(int ()(void,void*))(numeric ? numcmp : strcmp)

Ответы8639486411

171 22 апр, 10:36 171 1386379

Шланг или гсс?

Ответы8638986653

172 22 апр, 10:41 172 1386389

>>1386379
Смузи или чай?

173 22 апр, 10:46 173 1386394

>>1386369
Это обычное приведение типа указателя, только не простого, а указателя на функцию. Ты можешь заметить, что sort принимает функцию с параметрами void, а реальная подаваемая функция с char, поэтому нужно приведение типа. Ну а справа оператор ?, с ним всё ясно.

174 22 апр, 10:59 174 1386411

>>1386369
У тебя чекается нумерик, в зависимости от него, выбирается функция, имя функции это ее адрес, по факту, можно ещё и адрес взять, все равно разницы не будет, так вот, теперь вы определились с функцией но qqsort, принимает указатель на функцию другого вида, поэтому мы берём и кастуем указатель имеющейся. Нас функции к функции вида, которую ожидает qqsort, все достаточно просто.

Ответы86734

175 22 апр, 11:12 175 1386422

>>1385999
Бэкэнд node-js макак вкатывается в Си? Вот это комедия!

Ответы866438665386869

176 22 апр, 15:12 176 1386643

>>1386422
Пропал калабуховский дом!

177 22 апр, 15:30 177 1386653

>>1386379
Шланг и гцц с перекосом в сторону первого, если есть выбор.

>>1386422
Я не вкатываюсь в Си, а на ноде вообще никогда не писал. Но не знать JS в 2019 стыдно.

Ответы8665486809

178 22 апр, 15:33 178 1386654

>>1386653
А нахуй мне его знать?
Мимо

Ответы86665

179 22 апр, 15:42 179 1386665

>>1386654
Чтобы иметь возможность взаимодействовать с окружающим миром, пропитанным жаваскриптом чуть более, чем полностью.

Ответы8667286676

180 22 апр, 15:45 180 1386672

>>1386665
>стыдно не есть говно
>зачем мне есть говно
>вокруг столько говна как ты можешь его не есть
Окей.

Ответы86674

181 22 апр, 15:47 181 1386674

>>1386672
Приятного аппетита.

182 22 апр, 15:47 182 1386676

>>1386665
Например?

Ответы86682

183 22 апр, 15:54 183 1386682

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

Ответы86685

184 22 апр, 15:56 184 1386685

>>1386682
>Например, ты пишешь это из браузера
Dashchan
>а в вокруг тебя приложения на электроне
Вайбер на ноутбуке и все.

И нахуя мне знать жс - ты так и не смог ответить.

185 22 апр, 17:40 185 1386734

>>1386411
> У тебя чекается нумерик, в зависимости от него, выбирается функция
Это я понимаю
> имя функции это ее адрес
Это тоже вроде бы ясно
> можно ещё и адрес взять, все равно разницы не будет,
А тут хотелось бы поподробнее
А дальше вообще ничего не понимаю. Почитал тут http://www.c-cpp.ru/books/ukazateli-na-funkcii и тут https://metanit.com/cpp/c/5.11.php, но подобных примеров там нет

Ответы86739

186 22 апр, 17:51 186 1386739

>>1386734
А вообще я так понял можно переписать отдельно
int (cmdd)(void,void*)=(numeric ? numcmp : strcmp);
и в вызове функции просто указать cmdd, это ведь то же самое? Только почему при таком задании нужно равно, а при изначальном все писалось слитно, и строка указателя была пуста?

Ответы86752

187 22 апр, 18:12 187 1386752

>>1386739
Да, можно.
Равно потому что ты объявляет новую переменную - указатель на функцию.
А там ты передаешь параметр, который кастуется, тоже самое что
int i = 0;
double d = (double)i;
Обычный каст, ни больше, ни меньше.

Ответы86757

188 22 апр, 18:15 188 1386757

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

189 22 апр, 19:25 189 1386809

>>1386653
Нахуя мне знать js? Если надо что-то написать на этом говне копипащу втупую с stackoverflow. Зависимости нет, брат жив.

190 22 апр, 19:39 190 1386820

Собсна помоги.
UKR: Ввести масив дійсних чисел. Зробити копію масива та впорядкувати їх.
1) Деяким звичайним методом
2) (Рекурсивного розділення, або методом хуара)
3) Підрахувати та порівняти кількістьсть операцій порівняння
та присвоєння у першому і другому методі.
Примітка - рахувати тільки операції в яких бере участь елемент массиву.

RUS: Ввести массив действительных чисел. Сделать копию массива и упорядочить их.
1) Некоторым обычным методом
2) (рекурсивный разделения, или методом Хуари)
3)Подсчитать и сравнить количество операций сравнения и присвоения в первом и втором методе.
Примечание - считать только операции в которых участвует элемент массива.

Сделал программку - https://pastebin.com/pLyV3VRu
Там какбє нужно было выбрать 2 метода и написать тупо код, но ЙА сделал так чтобы учитель погладил по головке.(тупро через switch)
Но Я не єбу як зробити (3) пункт. Козаче, допоможи.

191 22 апр, 20:31 191 1386869

>>1386422
хз откуда такая помпезность и самолюбование вкачусь как-бы без особых проблем язык не выглядит сильно сложным. Может ты переоцениваешь его мальца?

Ответы868748690687465

192 22 апр, 20:36 192 1386874

>>1386869
Это просто школьник, который в реальном мире, за пределами своей комнаты, ещё не был, и думает что языки как-то "по интеллекту" делятся

193 22 апр, 21:28 193 1386906

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

Ответы86944

194 22 апр, 21:35 194 1386909

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

Ответы8694287021

195 22 апр, 21:41 195 1386913

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

Ответы86932

196 22 апр, 21:59 196 1386932

>>1386913
Huh?

197 22 апр, 22:09 197 1386942

>>1386909
typedef struct anus
{
struct *next
} list;

198 22 апр, 22:14 198 1386944

>>1386906
> сложные программы, уже проблематично
ну кому как, может тебе стоит шаблонам/проектированию ПО уделить внимание ?

Ответы869538695586999

199 22 апр, 22:21 199 1386953

>>1386944
Раз уж ты тут недавно, то скажу, не отвечай вкатывальщикам, троллям и выебщикам из школы 21, со временем, ты научишься их замечать по первому предложению. Если ответ надо получить быстрее, любой вопрос можешь дублировать в крестотред, а лучше, с большинством вопросов или сразу туда. Потому что в изучении языка там помогут лучше.

Ответы8702187121

200 22 апр, 22:22 200 1386955

>>1386944
А посоветуйте, чего прочитать? Я на задачах объемнее чем "laba_12.c" уже теряюсь и если и начинаю хорошо - рано или поздно забрасываю из-за роста сложности кода.
Мимо

Ответы8695986992

201 22 апр, 22:24 201 1386959

>>1386955
Большинство си кода исторически всегда шло с документацией. И сейчас на Гиты в ридми/отдельным пдф, тхт их складывают

202 22 апр, 22:43 202 1386992

>>1386955
начни с совершенного кода. Сложной технической информации почти нет, читается как бульварный роман. Есть 5-7 суперполезных советов.

Думаю на двощах должен быть тредик аркитектов наверное остальную инфу стоит искать в шапке этого треда.

Ответы87018

203 22 апр, 22:46 203 1386994

Сап программач, нужно написать функцию поиска слова с помощью bsearch, щито делать?
char word;
char ept;
printf ("word:");
scanf ("%c", &word);
ept = (char) bsearch(word, MyArray, stroks, sizeof(char), compare);
if(ept!=NULL)
printf("%c find", ept);
else
printf("not find", word);

int compare (const void, const void,int stroks,char MyArray)
{
//чего тут надо?
}
с меня как обычно

Ответы87021

204 22 апр, 22:50 204 1386999

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

205 22 апр, 23:12 205 1387018

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

206 22 апр, 23:14 206 1387021

>>1386909
google: rosetta code

>>1386953
Вы только посмотрите на эту крестоблядь! Хочет затащить ньюфагов из няшной и простой сишечки в свое болото!

>>1386994
Для начала тебе нужно отсортировать массив, иначе оно искать не будет. Потом неплохо было бы читать более одного символа с помощью scanf(), если тебе нужно искать именно слово. И %c - это неправильный спецификатор для вывода найденного слова.

> compare
> чего тут надо?
Тут надо удалить лишние аргументы, оставив только первые два, дать им имена, скастить каждый в const char * и сравнивать с помощью strcmp.

Ответы87041

207 22 апр, 23:38 207 1387041

>>1387021
>Для начала тебе нужно отсортировать массив
готово
>Потом неплохо было бы читать более одного символа с помощью scanf(), если тебе нужно искать именно слово. И %c - это неправильный спецификатор для вывода найденного слова.
исправил на %s
>Тут надо удалить лишние аргументы, оставив только первые два, дать им имена, скастить каждый в const char и сравнивать с помощью strcmp.
эээ так?
int compare (const voidsos, const voidhelp) {
const chars=(char)sos;
const charh=(char)help;
return strcmp((const char)s,(const char)*h);
не работает

Ответы87046

208 22 апр, 23:45 208 1387046

>>1387041
> не работает
Потому что я еще sizeof(char) не заметил в вызове bsearch. У тебя MyArray либо массив указателей на строки (тогда в compare надо их объявлять как указатель на указатель на char и дереференсить для strcmp()), либо это двумерный массив с каким-то максимальным размером строки, тогда ты вместо этого твоего sizeof(char) передаешь этот размер.

209 23 апр, 00:10 209 1387055

Товарищи, как запилить горячие клавиши на Си?

Типа нажал я "Ctrl + L" - у меня какая-нибудь фича сразу же вылезла.
А то я нажимаю "Ctrl + L" - у меня вылезает "^L". Это еще и энтеры жамкать!

Как оно вообще реализуется?
Если есть, кидайте ссылку
Гугл явно не оценил моих запросов

Ответы870608706187109

210 23 апр, 00:16 210 1387060

>>1387055
WinApi

Ответы87066

211 23 апр, 00:16 211 1387061

>>1387055
cyberforum.ru/win-api/thread42653.html

Ответы87066

5 Кб, 271x93
212 23 апр, 00:18 212 1387062

Объясните почему не работает ?
char [] ведь объявляет массив, элемент массива нельзя получить по его индексу ?

Ответы87070

213 23 апр, 00:25 213 1387066

>>1387060
>>1387061

А без WinApi никак? А то я, вообще говоря, обитаю на Линухе.

Ответы87069

214 23 апр, 00:26 214 1387069

>>1387066
У линуха тоже есть Api
У тебя программа откуда-то должна знать что ты эти Ctrl+C нажал.

215 23 апр, 00:26 215 1387070

>>1387062

символ (char) печатается на %c.

Если же ты хочешь напечатать строку начиная с первого символа:
printf("%s", &str); // или printf("%s", str + i);

Ответы87080

216 23 апр, 00:47 216 1387080

>>1387070

Долгий фикс

в первом принтфе взятие адреса от str(i).
Какие-то проблемы с форматированием.

217 23 апр, 02:44 217 1387109

>>1387055
Никак. С это универсальный язык для любой кофемолки, поэтому не поддерживает клавиатуры, только текстовый терминал - получение набранного после нажатия Enter.Ссылка на поржать:
http://forums.codeguru.com/showthread.php?340202-C-Equivalent-of-BASIC-s-INKEY

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

218 23 апр, 06:33 218 1387121

>>1386953
Пизданутый, тебя в этой 21 школе ебали на переменах что ты ее забыть никак не можешь?

10 Кб, 251x243
219 23 апр, 08:15 219 1387135

>>1386110
Так, а теперь можно подробнее насчет uint8_t, uint32_t ?
На Си я пишу клиента, которому сервер на питоне должен отправить файл.

Я пытаюсь обойтись 1 сообщением содержащим имя_файла|размер, потому что думаю что 2 раза тянуть функцию recv() это ресурсозатратнее чем 1 раз получить строку и разделить её по разделителю.

Strtok это еще одна функция, которая потратит определенное кол-во памяти и немного увеличит размер выходного файла, поэтому ее использовать я не хочу.

Разделитель получился на пике.

Не говнокод ли это ?

Ответы8713687436

220 23 апр, 08:21 220 1387136

>>1387135
>1 раз получить строку и разделить её по разделителю.
Передавать числа в виде строк это типа модно и не ресурсозатратно?

Ответы87138

221 23 апр, 08:23 221 1387138

>>1387136
Я просто не ебу как мне со стороны питона отправить int.
struct ?
А что ресурсозатратнее, 1 раз отправить строку или 2 раза отправить имя размер ?

Ответы8714087436

222 23 апр, 08:34 222 1387140

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

Ответы87141

223 23 апр, 08:37 223 1387141

>>1387140
Конверчу atoi
Это похоже на оптимизацию больше чем отправка данных в 2 этапа ?

Ответы87142

224 23 апр, 08:38 224 1387142

>>1387141
Да, ты прав.

Ответы8726887286

225 23 апр, 09:54 225 1387177

Как Си в плане самоудаления .exe ?
Из примеров со StackOverflow и achat самый адекватный по-моему это удалять через cmd.exe.

Вызывать cmd через exec/spawn, чтобы не ждать завершения процесса, выставлять задержку (секунды может 2, чтобы программа нормально работу завершила), и удалять.

Нормальная задумка или нет ?

Ответы8718987436

226 23 апр, 10:24 226 1387189

>>1387177
Не проще ли реализовать это средствами ос, например шела?

Ответы87196

227 23 апр, 10:39 227 1387196

>>1387189
Какими средствами?

Ответы8719887209

228 23 апр, 10:41 228 1387198

>>1387196
>например шела
>Какими средствами
Ты дебил?

Ответы8720987215

229 23 апр, 11:18 229 1387209

>>1387198
>>1387196
Ну так я и говорю о cmd.exe, это не шелл чтоли ?

230 23 апр, 11:32 230 1387215

>>1387198
Я спросил какими, а не чьими. На вопрос ответить можешь?

231 23 апр, 13:29 231 1387262

Пацаны, реализую функции для односвязного списка без удаления пока что, https://pastebin.com/XVjge32Q
Ввожу элементы все нормально, но выводятся только последние 2, где я проебался?

Ответы87266

232 23 апр, 13:39 232 1387266

>>1387262
Зачем тебе в add указатель на указатель, есть хоть одна причина не передавать указатель на лист просто?
Ты его даже именно как двойной указатель нигде не используется, везде разыименовываешь.
А ещё у тебя нарушена логика, add должен делать, внезапно только add, он не должен являться конструктором в том случае, если получил null, загугли любую реализацию списка, братишка.

Ответы87267

233 23 апр, 13:42 233 1387267

>>1387266
Ну я же передаю адрес узла в функцию, то есть адрес указателя, поэтому указатель на указатель

Ответы87273

234 23 апр, 13:43 234 1387268

>>1387142
Вот в питоне есть struct.
Возможно с его помощью создать пакет который будет до разделителя содержать строку, а после число ?
Или мож трюк какой выдумать с числами, типа посылать букву, ASCII код которой равен длине файла ?
Или еботни больше будет чем с преобразованием ?

235 23 апр, 13:48 235 1387273

>>1387267
У тебя структура лист это текущий узел, чтобы передать его адрес нужно передать указатель на структуру лист, разве нет?

Ответы8727987297

236 23 апр, 13:59 236 1387279

>>1387273
Сделал через обычный указатель, с возвратом значения https://pastebin.com/wZUWKEQw
Вообще ничего не выводит)

141 Кб, 640x967
237 23 апр, 14:08 237 1387286

>>1387142
На питоне такая тема работает

238 23 апр, 14:40 238 1387297

>>1387273
https://pastebin.com/SxQ5ZtGq
Сделал так, все хорошо выводит, в аргументах двойной указатель, потому что в этой функции я сразу инициализирую, так как, чтобы поменять значение какой-либо переменной, нужно передавать ее адрес, как я понял, в моем случае эта переменная указатель, и я передаю адрес указателя.
Остался только один вопрос, почему
я вместо этого:
ptr = ★temp;
while (ptr->next != NULL)
{
ptr = ptr->next;
}
ptr->next = t;

Но если я запишу так, то у меня выводятся только 2 последних элемента, почему так нельзя записывать?
while ((★temp)->next != NULL)
{
★temp = (★temp)->next;
}
(★temp)->next = t;
У меня есть догадки, но думаю они неправильные

Ответы87428

10 Кб, 368x161
239 23 апр, 16:58 239 1387360

Объясните как так.
Почему питон может пикрелейтед, а Си нет ?
Словом как выводить символы <256 или вообще что-либо с ними делать ?

Ответы8739987436

sage 240 23 апр, 17:54 240 1387399

>>1387360
томушо питон проектировался позже няшной с поддержкой юникода. В Си юникод нужно поддерживать ручками и подцеплять wchar.h
Широкие символы в два раза жирнее простых ascii-символов. Где-то это плюс, если нужна переносимость, где-то это минус, если нужно меньше памяти потратить.

Ответы87436

241 23 апр, 19:15 241 1387428

>>1387297
Попробуй так.
https://pastebin.com/D7u2B7i7

242 23 апр, 19:48 242 1387436

>>1387135
Передавать имя_файла, размер_файла плюс какие-то разделители тоже можно. Это вопрос вкуса.

> Не говнокод ли это ?
Говнокод. strchr()/strtok().

> увеличит размер выходного файла
Ты же тот анон, что tcc на винде использовать пытался? На память похуй, ты либу все равно уже загрузил. Что касается размера файла... то можешь сам посчитать - импорт функции из длл - это, грубо говоря, 4 байта (sizeof(uintptr_t)) + 2 байта (sizeof(uint16_t)) + длина имени фукнции, считая \0. Мне кажется, твой говнокод больше весит в любом случае.

>>1387138
> что ресурсозатратнее,
Сериализовывать и парсить числа ресурсозатратнее. Но сначала скажи, сколько миллионов файлов ты собрался передавать, и где, в таком случае, твой конечный автомат и асинхронный IO?

>>1387177
> Как Си в плане самоудаления .exe ?
Зарепортил начинающего малварщика.

>>1387399
> томушо питон проектировался позже няшной с поддержкой юникода
Лучше так: после того, как Си уже обосрался с поддержкой многобайтовых кодировок, питон нихуя не научился на чужих ошибках и тоже обосрался. Потребовалось изобрести целый новый питон 3, чтобы это исправить. У Си такой возможности не было.

>>1387360
> как выводить символы <256
{b]Возможно, вы имели в виду > 256[/b]
Кодировать эти символы в UTF-8 и выводить стандартными сишными средствами. Сейчас проблема терминалов в KOI8-R, к счастью, исчезла, и осталась лишь (решаемая) проблема терминалов в CP866.

Ответы87445

243 23 апр, 19:51 243 1387437

Ну то есть все что >256 кода ASCII Си никак не воспринимается без сторонних либлиотек ?
А используя wchar можно будет получить код символа ASCII выше 256 ?
1488 например.

Ответы87441

244 23 апр, 20:04 244 1387441

>>1387437
а тебе оно вообще нахуя надо-то? Просто u_char удобно читать дампы. Что-то можно сразу в полноценные строки перевести, а что-то давным-давно стандарт в вебе.
И на твой вопрос: Да. wchar может получить код символа 1499 в юникоде. Но вот только Си не про это.

245 23 апр, 20:08 245 1387445

>>1387436
Почти все на что ты ответил это я тот анон.

Насчет strtok
>либу ты все-равно уже загрузил
А я string.h и не загружал, strtok вроде там находится
Памяти она и не занимает, но вот работает всяко труднее говнореализации по разделителю.

Файл должен отправляться 1.
Я подумал что изобрел вариант нееботы с преобразованием строки в число.
Так как любой символ (char) это в принципе уже число, почему бы со стороны сервера не отправлять строку с файл_нейм|chr(len(файл)) ?

Типа например если файл весит 2048 байт, отправлять символ с ASCII кодом 2048.

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

Я не делаю никакой малвари, просто программа-загрузчик после загрузки уже не нужна.

Ответы8745087458

246 23 апр, 20:15 246 1387450

>>1387445
>ASCII кодом 2048
хм....
Аноны, а когда ascii-кодировку успели так нихуёво расширить, а то я только что подъехал и чота видимо пропустил.

Ответы87452

247 23 апр, 20:19 247 1387452

>>1387450
https://asecuritysite.com/coding/asc2?val=2048,2304
Как бы

Ответы87454

248 23 апр, 20:22 248 1387454

>>1387452
це юникод.
Ты напутал ASCII - это соседня там кодировка.

249 23 апр, 20:24 249 1387458

>>1387445
> А я string.h и не загружал, strtok вроде там находится
Это хедеры, они не влияют на размер, по большей части в них находятся только объявления. Можешь вообще их не подключать, а объявлять функции в своем .c файле, ничего не изменится. А вот либа, которая все это реализовывает - одна и та же: tcc линкуется к msvcrt.dll (можешь взять http://www.dependencywalker.com/ и посмотреть сам, если не веришь). И эта либа не может грузиться частями, поэтому ты ничего не экономишь.

> Типа например если файл весит 2048 байт, отправлять символ с ASCII кодом 2048.
Символ с кодом 2048 кодируется двумя байтами: 00 08 (или тремя e0 a0 80, если у тебя UTF-8). Теми же самыми двумя байтами может кодироваться число 2048, никакой магии.

> Файл должен отправляться 1.
Так что ж ты концентрируешься на таких мелочах, которые абсолютно не играют никакой роли ни в быстродействии твоей программы, ни в потреблении памяти, а даже если бы и играли, это сотни байт, а не сотни мегабайт.

> просто программа-загрузчик после загрузки уже не нужна
Сделай как человек тогда: MoveFileEx("govnokod.exe", NULL, MOVEFILE_DELAY_UNTIL_REBOOT). После ребута винда все сама отлично грохнет.

Ответы87460

250 23 апр, 20:32 250 1387460

>>1387458
Насчет веса/размера понял.

>символ с кодом 2048 кодируется двумя байтами
На путхоне я это уже понял, не понял только как на Си эти байты...декодировать чтоли обратно в 2048.

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

Где с тобой почятиться можно, заебало гидранты искать.

Ответы87468

251 23 апр, 20:47 251 1387465

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

252 23 апр, 20:52 252 1387468

>>1387460
Посылка файла в питоне:
filename = 'проверка.txt'
filedata = b'...' # Читаешь из файла.
filename_bytes = filename.encode('cp1251')
s.sendall(struct.pack('<II', len(filename_bytes), len(filedata)) + filename_bytes + filedata)

Прием в сишке:
struct file_header { uint32_t nbname; uint32_t filesize; } header;
recv_all(s, &header, sizeof(header), 0);
char ∗filename = malloc(header.nbname + 1);
recv_all(s, filename, header.nbname, 0);
filename[header.nbname] = '\0';
uint8_t ∗filedata = malloc(header.filesize);
recv_all(s, filedata, header.filesize, 0);
FILE ∗fp = fopen(filename, "wb");
fwrite(filedata, 1, header.filesize, fp);
fclose(fp);
free(filename);
free(fileadata);
Вот и все. Плюс валидация имени файла, проверка ошибок в каждой строке и все такое прочее. Плюс реализация recv_all. Ну и я наверняка какую-нибудь скобку где-нибудь проебал. Это будет работать на всех little-endian машинах (читай: пока ты не найдешь какую-нибудь MacOS 9 на PowerPC).

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

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

252 23 апр, 20:52 252 1387468

>>1387460
Посылка файла в питоне:
filename = 'проверка.txt'
filedata = b'...' # Читаешь из файла.
filename_bytes = filename.encode('cp1251')
s.sendall(struct.pack('<II', len(filename_bytes), len(filedata)) + filename_bytes + filedata)

Прием в сишке:
struct file_header { uint32_t nbname; uint32_t filesize; } header;
recv_all(s, &header, sizeof(header), 0);
char ∗filename = malloc(header.nbname + 1);
recv_all(s, filename, header.nbname, 0);
filename[header.nbname] = '\0';
uint8_t ∗filedata = malloc(header.filesize);
recv_all(s, filedata, header.filesize, 0);
FILE ∗fp = fopen(filename, "wb");
fwrite(filedata, 1, header.filesize, fp);
fclose(fp);
free(filename);
free(fileadata);
Вот и все. Плюс валидация имени файла, проверка ошибок в каждой строке и все такое прочее. Плюс реализация recv_all. Ну и я наверняка какую-нибудь скобку где-нибудь проебал. Это будет работать на всех little-endian машинах (читай: пока ты не найдешь какую-нибудь MacOS 9 на PowerPC).

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

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

Показать весь текст
Ответы88073

25 Кб, 1152x515
253 23 апр, 20:55 253 1387473

Уебищнее этого я наверное уже ничего не смогу написать.

Ответы8748087567

254 23 апр, 21:02 254 1387480

>>1387473
А что не так, кроме избыточной вложенности? Сделай отдельную фукнцию/функции, утащи туда внутренний цикл/циклы, и будет норм.

Ответы87516

255 23 апр, 22:11 255 1387516

>>1387480
Ну кроме того, что это не читаемо вообще да, но можно прихорошить и все будет ок.

256 23 апр, 23:03 256 1387567

>>1387473
>entry = &(ef->entries)
Делай просто "entry = ef->entries + i". Офигенный стиль, всем рекомендую. Сам пару лет назад начал так писать.

Алсо, инициализируй entry и slot при первом упоминании. Всё равно у тебя не ANSI C, как я вижу.

1 Кб, 250x68
257 24 апр, 03:20 257 1387650

Что могло сломаться тут? Почему на одном конкретном файле fseek перестает работать? С другими все нормально. Кодировки одинаковые, ANSI, везде обычный CR/LF. Тупо после одного успешного срабатывания больше ничего не делает.

Ответы87651

1 Кб, 231x54
258 24 апр, 03:22 258 1387651

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

Ответы8765387665

259 24 апр, 03:34 259 1387653

>>1387651
Там скобка может быть юникодовская

Ответы87654

260 24 апр, 03:54 260 1387654

>>1387653
Проблема в том, что позиция в файле не откатывается, хотя есть куда. Он должен уходить на два байта назад - но с этим конкретным файлом не хочет. Кодировкам там тот же ANSI.

Ответы8765787658

261 24 апр, 04:14 261 1387657

>>1387654
Значит неправильно делаешь что то, смотри что фсик возвращает

Ответы87659

262 24 апр, 04:17 262 1387658

>>1387654
Ты в конец файла в начале переходишь, или сразу читаешь с текущкй позиции?

Ответы87660

263 24 апр, 04:20 263 1387659

>>1387657
Ноль он возвращает. На всех остальных файлах все нормально. Я уже и в хекс-редакторе их сравнил, нет аномалий никаких.

264 24 апр, 04:21 264 1387660

>>1387658
Сначала там считывается вся строка. Потом откат до открывающей скобки (и гарантируется, что она есть).

Ответы87661

265 24 апр, 04:26 265 1387661

>>1387660
Прочитай побайтово в цикле с конца

266 24 апр, 07:14 266 1387665

>>1387651
Дай угадаю, fseek() не сбрасывает ни ошибку, ни EOF, и поэтому тебе fgetc() возвращает EOF всегда. Попробуй сделать clearerr() внутри цикла ради разнообразия. И вообще, seek - дорогая операция, зачем так делать, неужели не проще прочитать в память и ебаться в указатели?

267 24 апр, 15:49 267 1387822

Лол, проще за него все сделать. Ощущение, что человек вообще про гугл не слышал и наступает на все возможные грабли.
мимопроходил

Ответы87834

268 24 апр, 16:14 268 1387834

>>1387822
Ну, в данном случае гугл не помог. Лучше, наверное, переписать с нуля, но я ж заебусь. Да и в целом, писать парсер текстовиков на сишке - выбор такой себе. Мне просто страшно даже пытаться начать прикручить гуишку на винапи

Ответы87853

269 24 апр, 16:41 269 1387853

>>1387834
>писать парсер текстовиков на сишке
Хобби не хуже прочих, десяток точно написано.
Или больше, не помню уже.

270 24 апр, 18:34 270 1387917

>>1385208
Нотепад++

271 24 апр, 22:16 271 1388073

>>1387468
У меня все-же не отпал вопрос касательно получения кода символа.
Вдруг в будущем какие-то заебы с этим возникнут.
Приведу вопрос к конкретике.
Я с питона отправляю сокетом символ с ASCII-кодом 200.

>s.sendall(chr(200).encode('utf-8'))

В Си для приема сообщения из сокета выделяется буфер char размером предположим байт 20.

>char buf[20];
>recv(sock, buf, sizeof(buf) , 0);

После того как сообщение было отправлено, как мне в Си вывести код символа который был принят ?

Ответы88101

272 24 апр, 22:54 272 1388101

>>1388073
> s.sendall(chr(200).encode('utf-8'))
Ну короч идешь открываешь википедию и читаешь, как устроен UTF-8 и... сложно это все, в общем. Или берешь iconv. Но если у тебя исключительно винда, то ты можешь: MultiByteToWideChar(CP_UTF8, ...), чтобы получить из последовательности байтов последовательность wchar_t, и опционально обратно WideCharToMultiByte(CP_ACP, ...), чтобы отмапить юникод в MBCS (например, чтобы получить имя файла, которую прожует fopen). Естественно при этом символы, которых нет в активной кодовой странице (Windows-1251) проебутся.

Ответы88104

215 Кб, 267x418
273 24 апр, 23:01 273 1388104

>>1388101
Ладно, как пригодится так буду думать, а то у меня щас голова лопнет.
Если ты тот анон который весь тред мне помогал, то спасибо тебе, ты не просто очень здорово помог мне, ты пробудил интерес к изучению Си, до этого я скриптовал на питоне и был доволен, а сейчас у меня открылись глаза.
Ня.

274 25 апр, 00:23 274 1388158

Пишу калькулятор с умножением/делением, плюсами/минусами и скобками, для парсинга собираюсь использовать рекурсивный спуск. Как я понимаю, сначала в спуске идет функция, проверяющая на плюсминус, затем на дивмул, затем на скобки, затем на числа? Есть где-то вразумительное гайд? Просто в нагугленном не могу понять, что означает такая запись, например:
выражение ::= слагаемое [«+» или «-» слагаемое]
слагаемое ::= множитель [«» или «/» множитель] *
множитель ::= число | переменная | (выражение) | +множитель | -множитель

Ответы8818688190

275 25 апр, 01:37 275 1388186

>>1388158
>рекурсивный спуск
в хаскель, быдло.

276 25 апр, 01:39 276 1388187

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

277 25 апр, 01:46 277 1388190

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

278 25 апр, 01:48 278 1388191

как всегда, в этом итт треды одни студенты помогают делать laba3 другим студентам
как скучно

Ответы88252

279 25 апр, 09:06 279 1388252

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

280 25 апр, 09:21 280 1388257

Почему tcc не хочет компилировать ?
Хочу скрыть появляющуюся при запуске программы консоль.
Делать это через WinMain можно, но мне надо без дополнительных проблем получить argv, поэтому я подумал использовать обычный main с:
>ShowWindow(GetConsoleWindow(), 0)
Перед инклюдом <windows.h>
Указал #define _WIN32_WINNIT 0x0500
Собираю с -lkernel32 -luser32

Ошибка: undefined symbol 'GetConsoleWindows'

Ответы88262

281 25 апр, 09:29 281 1388262

>>1388257
>Делать это через WinMain можно, но мне надо без дополнительных проблем
Без дополнительных проблем используешь WinMain и функции получения аргументов.

Ответы88266

282 25 апр, 09:36 282 1388266

>>1388262
То есть всякие GetCommandLine нормальное явление чтобы получить нулевой элемент argv, то бишь имя файла.

Ответы88276

283 25 апр, 09:41 283 1388276

>>1388266
Для имени программы есть отдельная функция, гугли, так смаху не помню.

Ответы88367

16 Кб, 437x227
284 25 апр, 12:17 284 1388367

>>1388276
Возвращает код ошибки 2.
Если указываю имя файла напрямую, то удаляет без проблем
Почему так

Ответы88379

285 25 апр, 12:37 285 1388379

>>1388367
Кодировка может быть?
Попробуй распечатать то имя, что ты получаешь.

Ответы88395

286 25 апр, 13:04 286 1388395

>>1388379
Разобрался, надо было DeleteFileW вызывать.
Как в windows создать процесс и не ожидать его завершения(exec в линукс) ?

Ответы8839988664

287 25 апр, 13:10 287 1388399

>>1388395
Виндодрочер, ты заебал, читай книги

Ответы884518847988576

288 25 апр, 14:49 288 1388451

>>1388399
нахуй мне книги если я могу тут спросить

289 25 апр, 15:34 289 1388479

>>1388399
>программист
>пергаментный мусор в эпоху цифровой информации и поисковых систем

Ответы8849788766

290 25 апр, 16:07 290 1388497

>>1388479
тащемта книги можно на компе читать.

291 25 апр, 18:03 291 1388576

>>1388399
Чукча не читатель, чукча вирусописатель.

Ответы88617

292 25 апр, 18:40 292 1388617

>>1388576
Ведь когда-то вирусы писали лучшие, а теперь вот такое тупое говно.

Ответы88647

293 25 апр, 19:10 293 1388647

>>1388617
>писали лучшие
это когда?уже с нулевых годов малвари - рынок только для бабок и школьников

Ответы88713

294 25 апр, 19:20 294 1388664

>>1388395
Опрашивай статус процесса

295 25 апр, 19:44 295 1388689

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

Ответы88711

296 25 апр, 20:08 296 1388709

Чет я запутался в указателях. Вот я передаю указатель на начало строки функции пусть будет *filename
И хочу напечатать эту строку. printf("%s", filename) Почему так? filename это разве не число, не адрес начала строки?

Ответы8871288872

297 25 апр, 20:08 297 1388711

>>1388689
> проект можно написать, чтобы кайфануть от сделанного

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

Ответы88732

298 25 апр, 20:12 298 1388712

>>1388709
Где код, дебила кусок?

299 25 апр, 20:13 299 1388713

>>1388647
>это когда?
В 90-х.

Ответы88730

300 25 апр, 20:27 300 1388730

>>1388713
Под дос?

Ответы88741

301 25 апр, 20:29 301 1388732

>>1388711
Бля, 0 в ангельском, но спасибо

302 25 апр, 20:41 302 1388738

Пытаюсь в рекурсию, объясните, как эта хуйня работает?
Я все понимаю, что выводится 1 2 3 4 4, но дальше какого хуя?
Почему выводится еще 3 2 1, если на последнем выводе было две 4 и все.
void p(int n)
{
printf("%d ", n);
if (n < 4)
p(n + 1);
printf("%d ", n);
}
int main()
{
p(1);
_getch();
}

Ответы8873988747

303 25 апр, 20:44 303 1388739

>>1388738
Рекурсия это бесполезная хуета, которая тебе никогда не понадобится, просто забей.

304 25 апр, 20:54 304 1388741

>>1388730
Разумеется.
Золотые времена, эх.

305 25 апр, 21:17 305 1388747

>>1388738
Тому что у тебя 2 принтфа. И оба выводят ЛОКАЛЬНЫЕ переменные. Которые не меняются при вызове функции. Даже при вызове самой себя. При каждом входе в функцию создаётся новая копия переменных. И при выходе из функции ты продолжаешь работать с набором переменных, которые были созданы при именно этом вызове именно этой функции. И другие вызовы не могут их поменять. если ты не будешь использовать ссылки или ломать стек.

Ответы88755

306 25 апр, 21:33 306 1388755

>>1388747
Дополню. Хотя в твоём случае скорее не допонимание процесса выхода из функции. Ты входишь четыре раза p(1), p(2), p(3), p(4). И при выходе из p(4) продолжается выполнение p(3), при выходе из p(3) продолжается p(2) и так далее, пока не вернётся управление в мейн.

307 25 апр, 21:51 307 1388766

>>1388479
>говорит о технарьской специальности
>топит за клиповую инфу

308 25 апр, 23:27 308 1388833

Аноны, у меня тут охуительная идея...
Вот грубая сортировка строк по принципу radix sort (если ничего не путаю, по introduction to algorithms пока только до chapter 8.2 дошел) https://pastebin.com/j31vAdHU . И тут я подумал, что на big endian архитектуре можно было бы добиться сверхзвуковой скорости работы за счет оперативки. Например, сделать массив всех unsigned short int (всего 65 килобайт) и группировать по парам знаков за раз, кастуя адрес как (short ∗). Но на little endian не канает, т.к. лексикографически старшая буква будет браться как младший разряд. В связи с этим вопрос знатокам, который вряд ли легко гуглится. Используется ли что-то подобное на конских компютерах, ведущих межгалактические базы данных с кучей строчных рекордов, которые периодически надо быстро грубо сортануть?

Ответы8884188842

309 25 апр, 23:44 309 1388841

>>1388833
Причем тут работа оперативки в big-endian?
Это вообще говна кусок ненужный, поэтому он настолько непопулярен.

Ответы888458884788848

310 25 апр, 23:44 310 1388842

>>1388833
ПыСы
ntohs() как-то не хочется дергать

311 25 апр, 23:48 311 1388845

>>1388841
да мне тоже, когда я на асме кодил, little-endian в большинстве случаев казалась более практичной. Я о том, что на big-endian, например, сравнив две строки длиной в 4 знака, как (unsigned )s1 - (unsigned )s2 получишь лексикографически корректный результат. А на little-endian придется дергать ntohs() или что-то вроде того

312 25 апр, 23:49 312 1388847

>>1388841
∗(unsigned ∗)s1 - ∗(unsigned ∗)s2
быстрофикс

313 25 апр, 23:51 313 1388848

>>1388841
оперативка при том, что в count sort различать на 8 бит более длинные значения выйдет дороже в 2^8 раз по памяти

Ответы88852

314 25 апр, 23:58 314 1388852

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

Ответы8885988862

315 26 апр, 00:08 315 1388859

>>1388852
я не говорю, что это плохо. Всего 65кб ведь (или 16мб, если изъебнуться и по 3 байта брать). Просто факт, что проц экономится за счет оперативки, при на 2-кратную экономию проца уйдет в дважды большая степень двойки оперативки (2^16 против 2^8)

316 26 апр, 00:13 316 1388862

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

68 Кб, 604x583
317 26 апр, 00:42 317 1388872

>>1388709
Передаешь char*(звезда) filename?
Внутри функции переменная filename имеет тип указатель на чар.
>filename это разве не число, не адрес начала строки
Это и есть указатель, с подключением, через %x (процент x) можешь его распечатать.
Тред заполонили токсик хуесосы.

318 26 апр, 01:28 318 1388895

Какой язык, такой и тред. Какой тред, такие и юзеры говно кто не понял

Ответы88901

319 26 апр, 01:53 319 1388901

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

Ответы88907

320 26 апр, 02:56 320 1388907

>>1388901
Ну не надо про сипп тред так хорошо, без фанатизма уж давай =)

Ответы8893389033

321 26 апр, 07:49 321 1388933

>>1388907
С++ тред это такой загон для хаскело-дебилов, не осиливших хаскел.

322 26 апр, 12:05 322 1389033

>>1388907
>сипп
Структура и Интерпретация Попьютерных Программ?

Ответы89044

323 26 апр, 12:13 323 1389044

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

Ответы89099

324 26 апр, 14:17 324 1389099

>>1389044
еще приведи сравнение TeX vs. LaTeX

325 26 апр, 15:22 325 1389126

В gcc есть флаг по-умолчанию делающий все указатели restrict?

Ответы89136

326 26 апр, 16:05 326 1389136

>>1389126
Язык, где все указатели restrict - это примерно то же, что и язык без указателей вообще. Нет.

Ответы89145

327 26 апр, 16:17 327 1389145

>>1389136
А в Fortran разве не так по-умолчанию?

328 26 апр, 21:15 328 1389393

Однако, здравствуйте!
Вопрос.
Как открыть корневую папку на Windows?

Суть проблемы:
на "opendir("/")" - мы попадаем в корневую папку !раздела. То есть если программа была запущена из диска "C", то мы попадаем в "C:\". Если программа была запущена из диска "D", то попадаем в "D:\". И т. д.

А как мне попасть в самый корень? Где я бы мог посмотреть, какие диски есть, и открыть нужный.

Ответы8940089409

329 26 апр, 21:29 329 1389400

>>1389393
https://www.oracle.com/technetwork/server-storage/linux/downloads/index.html

Не благодари

Ответы8940389405

330 26 апр, 21:35 330 1389403

>>1389400
>https://www.oracle.com/technetwork/server-storage/linux
Ты кто?

331 26 апр, 21:36 331 1389405

>>1389400

Да я отсюда и пришёл. Но приходится работать с виндой.

sage 332 26 апр, 21:39 332 1389409

>>1389393
А чего ж сразу не opendir("//"), чтобы посмотреть, какие сервера есть в интернете? GetLogicalDrives() используй, тебе хватит.

Ответы89432

333 26 апр, 22:00 333 1389432

>>1389409

Ну, несколько подряд идущих слешей картины никогда не меняли, а за GetLogicalDrives() спасибо.

Ответы89455

334 26 апр, 22:01 334 1389435

макросы - это охуенно!
https://pastebin.com/0ZKqcscR

Ответы894388945589550

335 26 апр, 22:05 335 1389438

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

Ответы8944289444

336 26 апр, 22:08 336 1389442

>>1389438
Ну вообще на макросах можно запилить всё, вообще все.
Только это будет пиздец как нечитаемо, но это уже будет не так важно...

Ответы89448

337 26 апр, 22:09 337 1389444

>>1389438
Тысяча слов "вы приняты" на собесах ничто в сравнении с честью не быть обосранным в богоподобном Си-треде. Лучей добра тебе, анон. Не зря брался за алгоритмы.

338 26 апр, 22:15 338 1389448

>>1389442
>всё, вообще все
Они не Тьюринг-полны, так что нет. Да и циклы на них так себе, вручную приходится писать. Но есть и крутые вещи, да. Например, X-macros.

Ответы89495

sage 339 26 апр, 22:18 339 1389455

>>1389432
> картины никогда не меняли
А ты никогда не задумывался, почему после http: два слеша, а не один? А почему в винде \autoexec.bat - это твой autoexec.bat, а \\SERVER\C$\autoexec.bat - соседский?

>>1389435
Мог бы сделать static inline и не плодить говнокод. Отдельный дизлайк за VLA.

Ответы8949389532

340 26 апр, 23:23 340 1389493

>>1389455
>А ты никогда не задумывался, почему после http: два слеша, а не один? А почему в винде \autoexec.bat - это твой autoexec.bat, а \\SERVER\C$\autoexec.bat - соседский?

Ну в url двойной слеш вроде вообще о другом. Где-то между строками речь в действительности шла о путях в операционных системах...

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

341 26 апр, 23:29 341 1389495

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

342 27 апр, 00:56 342 1389532

>>1389455
>static inline
я использую макрос не в побеге от оверхеда call/ret, а чтоб использовать контекст (во всех трех случаях разный тип указателя). inline ведь впендрюривает маш.код по месту вызова, сохраняя ту же семантику, что и при вызове?
>VLA
ты о том, что не следовало усложнять инструкцию эксплуатации макроса комментарием "k must be a constant", а вместо int b[k] = {}; написать int b[k]; memset(b, 0, sizeof(b));?

343 27 апр, 01:48 343 1389550

>>1389435
всем похуй, но кроме моей совести. Пофиксил:
https://pastebin.com/0FaENjX0

Ответы89551

344 27 апр, 02:14 344 1389551

>>1389550
ммм, переоткрываешь как делать обобщенное программирование на макросах в си?
на, глянь, как бати делают
https://people.freebsd.org/~jasone/jemalloc/progs/rb.h
https://github.com/freebsd/freebsd/blob/master/sys/sys/tree.h

Общее количество альпинистов, поднявшихся на Эверест с начала его истории: 9044 человек, без учета повторных восхождений.

Ответы89553895548955589560

345 27 апр, 02:31 345 1389553

>>1389551
есть еще SGLIB
алсо, все это легко гуглится по запросу generic programming in c macros

346 27 апр, 02:32 346 1389554

>>1389551
Больше балдею от своего велосипеда с адаптацией идеи radix sort для double, все это байтоебство. А про макросы просто лозунг дня выкрикнул.

347 27 апр, 02:35 347 1389555

>>1389551
Вот это ништяк. Читать исходники BSD - боярское занятие. Спасибо, анон.

348 27 апр, 02:55 348 1389560

>>1389551
Выглядит круто. Но есть ли смысл в таком не при написании ОС? Вот, например, хочу ассоциативный массив строка-строка. Может, лучше через функции?

Ответы89909

349 27 апр, 13:51 349 1389763

Сап двач, решаю задачи по си и здесь задание:

"Выведите таблицу, состоящую из десятичного, двоичного, восьмеричного и шестнадцатеричного эквивалентов."

Что это хоть значит и как это сделать? Можете показать пример хоть для одной из систем счисления и объяснить что к чему? Гугл выдал перевод из одной системы счисления в другую или это и нужно сделать?

Ответы8978389785

350 27 апр, 14:13 350 1389783

>>1389763
https://ru.wikipedia.org/wiki/Printf#Спецификатор_типа

Ответы89785

351 27 апр, 14:15 351 1389785

>>1389783
printf() в b не умеет.

>>1389763
> это и нужно сделать
Да.

Ответы8978689794

352 27 апр, 14:15 352 1389786

>>1389785
>printf() в b не умеет.
Должен же он сам хоть что-то сделать.

353 27 апр, 14:22 353 1389794

>>1389785
т.е. я должен ввести число, а через printf() вывести в нужной системе счисления?

Ответы89805

354 27 апр, 14:32 354 1389805

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

Ответы89853

355 27 апр, 15:21 355 1389853

>>1389805
для себя
хз слепил https://ideone.com/HTwGcw
перевод в двоичную скопировал с другого сайта не вникая в подробности

из минусов 0 в двоичной = 1
можно просто с помощью if изменять в таком случае хаха

Ответы89862

356 27 апр, 15:33 356 1389862

>>1389853
> из минусов 0 в двоичной = 1
> b = 1

Ответы89865

127 Кб, 1369x770
357 27 апр, 15:41 357 1389865

>>1389862
исправил на 0, сломал перевод в двоичную.
А чтобы исправить просто перед while() нулевые значения и цикл начал с 1;

358 27 апр, 16:38 358 1389909

>>1389560
в случае когда adt реализуются на макросах есть преимущество в том, что сохраняется контроль типов - в результате препроцессирования сгенерируется набор функций, работающих с конкретным типом элемента в контейнере
альтернатива макросам при реализации идей обобщенного программирования - это работа через нетипизированный указатель, либо через оберки над этим нетипизированным указателем, в любом случае это означает "выключение" контолья типов, а слежение за правильностью того что будет класться в контейнер теперь будет не на компиляторе, а на программисте
но у второго подхода есть другое преимущество - а именно то что это позволяет работать над таким контейнером через границы загружаемых модулей - интерфейс то контейнера в виде набора функций уже определен (пусть и принимает нетипизированные указатели), а значит может спокойно торчать из dll или so
все равно по итогу соображения универсльности перевешивают над соображениями о строгости контроля типов и чаще всего проектируют вторым способом
есть еще и третий способ - для какой-то библиотеки определяется набор допустимых для нее типов и тем-или иным подходом эмулируется в языке тип variant, а дальше уже в качестве элементов контейнеров принимается этот variant

Ответы899118992389926

359 27 апр, 16:40 359 1389911

>>1389909
А еще можно писать конкретные реализации. ADT редко нужны, максимум вот этот самый variant, который ADT не является.

Ответы89927

360 27 апр, 16:51 360 1389923

>>1389909
Еще лет 20 и сишники придумают темплейты С++

Ответы89962

361 27 апр, 16:54 361 1389926

>>1389909
https://apr.apache.org/docs/apr/1.7/group__apr__skiplist.html#ga326fdccaf516e5296969fa03bbda3fca
вот, к примеру, реализация списка с пропусками в apr, элементы через нетипизированные указатели

362 27 апр, 16:56 362 1389927

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

363 27 апр, 17:17 363 1389937

Есть одна функция и она не работает.
https://ideone.com/u59vb0
Есть файл, в нем n строк в каждой 3 символа и знак новой строки. Надо считать их в файл. Что я сделал не так? Когда число строк больше 5 программа выдает ошибку

Ответы89960

364 27 апр, 17:40 364 1389960

>>1389937
>считать их в файл
Это что-то новое.

Ответы89966

365 27 апр, 17:44 365 1389962

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

366 27 апр, 17:48 366 1389966

>>1389960
Считать в массив конечно

Ответы89967

367 27 апр, 17:49 367 1389967

>>1389966
А ошибка какая? А дебагером пошагово пробовал?

Ответы89969

368 27 апр, 17:51 368 1389969

>>1389967
> Process returned -1073741819 (0xC0000005)

Ответы8997990438

369 27 апр, 17:55 369 1389979

>>1389969
Попробуй вернуть что-нибудь из функции.

370 27 апр, 18:22 370 1390020

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

371 28 апр, 02:09 371 1390373

Есть какие-то либы для работы с икпорт протоколами?
Документации чисто технические, гугл названия этих протоколов считает опечатками и ничего не выдает релевантного.
Начинающий ембед-лох

372 28 апр, 02:40 372 1390377

Вот посоветовали вы считать файл в память, и лишь потом обрабатывать. А как, блджад? Мне писать отдельную функцию по получению строки из считанного в файле, копировать в динамический массив нужную подстроку, и только тогда ее использовать (поудалять лишние пробелы и табуляцию, разлепить слова, цифры и другие символы, разбить на токены )?

Ответы90379

373 28 апр, 02:48 373 1390379

>>1390377
> копировать в динамический массив нужную подстроку
Зачем? Она уже в памяти. Если ты ее не будешь по-другому повторно парсить, можешь ее уродовать прямо по месту.
> поудалять лишние пробелы
> разбить на токены
По месту. \0 для разбивки на токены тоже по месту.
> Мне писать отдельную функцию по получению строки из считанного в файле
Да. strtok() называется, ищи \n, убирай возможный \r из конца строки. Алсо, можешь объединить с разбивкой на токены и удалением пробелов, тогда будет один проход, а не два-три.

Ответы90386

374 28 апр, 03:23 374 1390386

>>1390379
>Да. strtok() называется, ищи \n, убирай возможный \r из конца строки
Ох, а вот до такого я не догадался, спасибо. Инерция мышления какая-то.

Ответы90388

375 28 апр, 03:29 375 1390388

>>1390386
Это не обязательно. Я, например, недавно в подобной задаче вручную посимвольно парсил и сразу бил на токены. Конец строки и конец файла - отдельные типы токенов.

376 28 апр, 10:03 376 1390438

>>1389969
>0xC0000005
Access violation же. Читаешь невалидную память (возможно, нулевой указатель?) Запомни эту цифру, она часто встречаться будет.

377 28 апр, 11:31 377 1390462

Сделал программу https://ideone.com/AQZTbv, мне нужно посчитать количество сравнений, каждый цикл я добавляю 2, ведь сравнений чисел 2, но в итоге получаются какие огромные цифры, даже не близкие к nlogn, а ведь столько сравнений должна делать пирамидальная сортировка. В чем моя проблема?

Ответы904659052791645

378 28 апр, 11:33 378 1390465

>>1390462
> чисел
Точнее сравнений строк

379 28 апр, 13:26 379 1390527

>>1390462
Код не читал, O большое не имеет никакого отношения к фактическому количеству операций. Оно показывает, как этот показатель будет расти при росте n. Это не говоря о том, что сравнение строк само по себе нихуя не O(1).

Ответы91463

380 28 апр, 21:53 380 1391221

Сегодня челик из интернета пытался мне прочитать лекцию по поводу того как мой код плох, прога на 40 строк генерящая тхт файл с консоли. На вопросы выдавал ссылки из вики "правила оформления кода", ссылки на хабр типа 100500 способов писать код правильно и тому подобное. о моему мнению у меня пропущена пара пробелов на которые вообще положить. На вопрос конкретные где проблема уходил в затуп. На вопрос на чем писал ответил только писал на крестах на 1ом курсе. Это что вообще было? Ресентимент? Современная айти токсичность или так действительно учат? Ну или я склоняюсь к тому что он все таки мудила.

Ответы9122591252

381 28 апр, 21:58 381 1391225

>>1391221
Ну хоть примеры покажи, телепаты в отпуске.

Ответы91231

382 28 апр, 22:06 382 1391231

>>1391225
https://ideone.com/w2kqmc

Ответы9123491265

383 28 апр, 22:13 383 1391234

>>1391231
Твой код восхитителен. Хочу заниматься его поддержкой и доработкой. Позволь мне это делать, я готов даже сосать тебе за вклад в твой код.

384 28 апр, 22:39 384 1391252

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

385 28 апр, 23:03 385 1391265

>>1391231
1. Индентация. Любой нормальный редактор поможет тебе это сделать. С ней любой код станет в 10 раз более читаемым.
2. Всегда ставь скобки после while/for/if. Сам же видишь, что можешь огрести иначе.
>":regional_indicator_" "%s" ": "
Зачем? Почему не просто ":regional_indicator_%s: "? По мне лишние кавычки добавляют лишний шум.
>/ return to EOF /
Лолват

Ответы9126691352

386 28 апр, 23:15 386 1391266

>>1391265
Ты еще пропустил
> if (fclose ( fp) != 0)
> fprintf (stderr, "error open file\n");

387 29 апр, 07:00 387 1391352

>>1391265
1.Ненужно в микропрограммах. Пруф ми вронг.
2.Окей, тут соглашусь.
3.А мне норм.

Ответы91363

388 29 апр, 07:40 388 1391363

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

Ответы91409

389 29 апр, 09:49 389 1391409

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

Ответы9141491455

390 29 апр, 10:00 390 1391414

>>1391409
if написан правильно, а while нет, нужно писать в одной строке что к нему относится. Строки это отдельные сущности, неправильно так разрезать посередине.

Ответы91419

391 29 апр, 10:17 391 1391419

>>1391414
Какие сущности если while разделяется ;. Че ты несешь?

Ответы91433

392 29 апр, 11:12 392 1391433

>>1391419
И строками же. Строки должны соответствовать ;
А для многострочных сущностей есть фигурные скобки.
Ты же разбиваешь одну сущность ; на две строки, это нарушает смысл написанного кода.

Ответы91444

393 29 апр, 11:29 393 1391444

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

Ответы9149892444

394 29 апр, 12:22 394 1391455

>>1391409
Я не пойму, ты толстишь, или как? Никто с мало-мальским опытом не пишет микрохуйню гавнокодом, а норм прожекты красиво. Это раздвоение личности. Руки сами должны писать всегда нормально, ломать привычку ради "ибо нехуй доебываться" - себе же труднее. Приучивать себя делать что-либо по-людски надо всегда и везде, не существует случаев, где "и так сойдет", это все одна сплошная инвестиция в будущее. Ну, и как анон сказал, это тебе кажется, что норм, потому что ты и чистый, и говнистый код читаешь по слогам. А опытные кодеры умеют "сканировать" глазами, но это умение работает только когда все как следует отформатировано. Никто не станет ехать на спортбайке по говну, потому что на батином Урале один хуй было, что грязь, что автобан.
мимо крокодил

Ответы91460

395 29 апр, 12:30 395 1391460

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

Ответы9146291466

396 29 апр, 12:31 396 1391462

>>1391460
что и требовалось доказать

397 29 апр, 12:32 397 1391463

>>1390527
> алгоритм сортировки, работающий в худшем, в среднем и в лучшем случае за Θ(n log n) операций
Тут прямо написано, что это число операций

398 29 апр, 12:38 398 1391466

>>1391460
ой блядь, мазила, себе ответил. Вот, это тебе было:

что, переходим на маня фантазии? Давай, попытайся убедить меня в том, что я тоже пишу без отступов и фигурных скобок, а на контрпруф кукарекни "чужое скопипиздил". Потом я сфоткаюсь с распечаткой своего кода и сигной /pr/ 29.04.2019 , а ты обозвешь меня социоблядью и вообще "диванооон!!! тгавляяя!!!" Знаю я вас демагогов, вам лишь бы посамоутверждаться. Приперлось на борду пожаловаться, что его в шараге гавнокодеров обозвали, ага...

399 29 апр, 12:40 399 1391469

Буду краток: вы ИТТ все дебилы.
No exception.

Ответы91634

400 29 апр, 13:41 400 1391498

>>1391444
Не важно слегка или нет, это ошибка.
Вот смотри, твой аргумент про ненужность отступов я понимаю и согласен. В этой программе нет длинных или вложенных блоков, поэтому код читаем и без отступов. Тут ошибки нет.
Однако, разбиение на строки двухоператорных сущностей идет против логики кода. Это ошибка.
Если ты специально троллишь, тогда ладно, но если не троллишь, значит плохо понимаешь логическую структуру кода языка С.

Ответы9149991505

401 29 апр, 13:54 401 1391499

>>1391498
Таблетки прими, вкатывальщик. Логические условия переносили ещё 30 лет назад.
>логическую структуру языка си
лол, чё это ваще значит? Иди книжки почитай.
Indentation это просто для глаз. Рантайм парсит только точку с запятой, скобки и ключевые слова, никакой блять разницы нет будешь ты параметры вайл стейтмента писать в одну строчку, или в пять. В школе 21 об этом не рассказали?

И да, код полная хуйня
мимо не-тот-долбоеб

Ответы915019159491602

402 29 апр, 13:55 402 1391501

>>1391499
>просто для глаз
>просто
Ебать дебил и говнокодер.
>мимо не-тот-долбоеб
Тем хуже для тебя, долбоеб.

Ответы91514

403 29 апр, 13:59 403 1391505

>>1391498
Открой Linux kernel code style, дружок.

404 29 апр, 14:08 404 1391514

>>1391501
Пьянь? Тебе нормально говорят, не надо, вкатывальщик, хуйню тут нести.

Ответы91527

405 29 апр, 14:18 405 1391527

>>1391514
>, , ,
Таблетки прими, шизик.

Ответы91530

406 29 апр, 14:20 406 1391530

>>1391527
Хуета из школы 21, я твою мать ебал.

Ответы91555

272 Кб, 992x1080
407 29 апр, 14:27 407 1391534

Привет.
Какой из способов создания процесса не заставляет процесс-родитель ожидать завершения дочернего процесса ?
Ну вот вроде после CreateProcess основной процесс может завершиться, а дочерний процесс продолжит работать.
Но есть еще WinExec и ShellExecute.
Все они позволяют оставить работать дочерний процесс после завершения основного ?

Ответы91887

408 29 апр, 14:58 408 1391555

>>1391530
>школы 21
Твои протыклассники?

409 29 апр, 16:23 409 1391594

>>1391499
Для дебилов демонстрация:

while()
……do_something();
another();
Правильно

while() do_something();
another();
Правильно

while()
do_something();
another();
Неправильно, нарушена логика кода. Такая запись воспринимается как одноранговая, хотя вторая строчка таковой не является. Тут либо невежество в программировании, либо сознательная обфускация.

Ответы91595

410 29 апр, 16:29 410 1391595

>>1391594
Зато я ебал твою мамашу.

18 Кб, 731x564
411 29 апр, 16:34 411 1391598

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

Ответы916019160291607916409188891906

412 29 апр, 16:40 412 1391601

>>1391598
Код как код, а ты старик с деградированным мозгом.

413 29 апр, 16:40 413 1391602

>>1391499
Как же вы заебали. Съебите на ioccc.org, и пишите там хоть в кружочек, хоть по диагонали. А для нормальных людей неотформатированный код - говнокод безотносительно содержания.

>>1391598
> Рейт
Пробелы вокруг операторов пропукаешь. clang-format в помощь. В нескольких return внутри функции нет ничего плохого, но вот мешанина из continue и return разной вложенности так и просит себя отрефакторить. Обращения к токенам через массивы я бы тоже во что-нибудь превратил. Алсо, предпоследний if подозрителен, что будет при i == 0?

Ответы91606

414 29 апр, 16:46 414 1391606

>>1391602
>i == 0
Не будет, старт всегда с единицы.
>Обращения к токенам через массивы я бы тоже во что-нибудь превратил
Да вроде самый адекватный вариант. До вызова этой функции считанный в память файл предварительно подготавливается (убираются комментарии, избыточные пробелы, табуляция, етц) и потрошится на токены, которые в массив и суются. Выглядит вроде терпимо. По мешанине да, надо подумать на рефакторингом, пожалуй.

415 29 апр, 16:46 415 1391607

>>1391598
поясните за switch?

416 29 апр, 17:27 416 1391634

>>1391469
Удвою это дебила.

417 29 апр, 17:40 417 1391640

>>1391598
Что такое токен? Ничего внятного не гуглится, есть какие-то видосы с индусами но там пиздец.

Ответы91641

418 29 апр, 17:41 418 1391641

>>1391640
https://en.wikipedia.org/wiki/Lexical_analysis#Token

Ответы91646

419 29 апр, 17:43 419 1391645

>>1390462
Бамп

Ответы91721

420 29 апр, 17:43 420 1391646

>>1391641
Намного понятнейнет.

Ответы91935

421 29 апр, 19:42 421 1391721

>>1391645
Ссылка мертва, поэтому попытаюсь ответить так. О(f(n)) говорит не о том, что операций ровно f(n), а что их g(n), где g асимптотически растёт так же, как и f. То есть lim(n->inf)(g(n)/f(n)) = const.

На твоём примере. Сложность O(nlog(n)) вполне может означать следующую конкретную функцию числа операций: T(n) = 100500nlog(n) + 5.21n + sqrt(n/2) + pi/log(n).

Ответы91748

422 29 апр, 20:07 422 1391748

>>1391721
> Ссылка мертва,
Не мертва, просто там запятая в конце увязалась

Ответы91753

423 29 апр, 20:10 423 1391753

>>1391748
Я бы всё равно не читал код, лол

424 30 апр, 04:23 424 1391887

>>1391534
Чем тебя CreateProcess не устраивает? ShellExecute и WinExec обертки над CreateProcess, в конечном счете все вышеперечисленные функции вызывают NtCreateProcessEx. У тебя задача какая поставлена?

Ответы92005

425 30 апр, 04:25 425 1391888

>>1391598
Хули тут рейтить-то? Очередная laba.c.

426 30 апр, 08:10 426 1391906

>>1391598
Скажем так, много недочётов.
попробуй checkpatch.pl натрави на свой код

Ответы91944

427 30 апр, 08:59 427 1391935

>>1391646
https://life-prog.ru/view_programmer.php?id=67&page=7
> Анализ (разбор)
Лексический разбор

Лексический разбор выделяют для упрощения построения компилятора. Это линейное сканирование входящей программы, при котором символы группируются в токены - последовательности символов, имеющих определенное совокупное значение. Следующая строка языке Паскаль

len: = 3.14 зв r;

состоит из следующих токенов

Идентификатор len
Символ присвоения: =
Числовая стала 3.14
Знак умножения зв
Идентификатор r
Разделитель операторов;

428 30 апр, 09:16 428 1391944

>>1391906
Да только на одну строку длиннее 75 символов ругнулось и все. Не так запустил?

Ответы91966

429 30 апр, 10:07 429 1391966

>>1391944
Покажи как запускал, тебе как минимум про разделение пробелом всяких if, for и тд должно было ругнуться.

Ответы91984

18 Кб, 549x565
430 30 апр, 10:58 430 1391984

>>1391966
Да разобрался, правда, пришлось cygwin ставить. Но есть ощущение, что длинную строку с условием я разбил не очень хорошо.

431 30 апр, 11:48 431 1392005

>>1391887
Всем уже устраивает, разобрался

432 30 апр, 14:09 432 1392083

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

Ответы92087920989211192142

433 30 апр, 14:16 433 1392087

>>1392083
2 чая. Заебали безмозглые чистокодеры, косплеящие джаву на сишечке.

434 30 апр, 14:43 434 1392098

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

435 30 апр, 14:56 435 1392111

>>1392083
>Посоны, у меня массив не работает, памагити.
>Вот код, но он зашифрован от быдла
)))

Ответы92123

436 30 апр, 15:22 436 1392123

>>1392111
>не работает
У меня почему-то всё и всегда работает.
Проверься на ошибки в ДНК

437 30 апр, 16:10 437 1392142

>>1392083
This. Алсо, меня бесят люди, которые используют фичи компилятора. Например, аллокация переменных на стеке. Ну вот кто знает, как тот же gcc себя поведёт? Никто не знает. Поэтому я всегда делаю alloca и руками управляю переменными. Так намного лучше и понятнее.

Ответы9214492158

438 30 апр, 16:12 438 1392144

>>1392142
>laba5.cpp
ок

439 30 апр, 16:42 439 1392158

>>1392142
Алсо, меня бесят люди, которые используют фичи компилятора. Например, alloca(). Ну вот кто знает, как в тот же gcc это реализовано? Никто не знает. Поэтому я всегда делаю выделяю глобальный массив на гигабайт и руками реализую свой стек, а в нем свою alloca(). Так намного лучше и понятнее.

Ответы92165

440 30 апр, 16:59 440 1392165

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

148 Кб, 1280x1024
441 30 апр, 18:13 441 1392203

двач выручай че за хуйня

Ответы92210922169221794752

442 30 апр, 18:27 442 1392210

>>1392203
> хром

443 30 апр, 18:39 443 1392216

>>1392203
Наркоман? У тебя тип данных флоат, ты задаешь экспоненциальное, и вычитаешь эксп из флот выводя во флот.

Ответы92217

444 30 апр, 18:41 444 1392217

>>1392203
Константу в 7 строке невозможно точно представить во float (мантиссы не хватает), зато вычитаешь ты double, в который константа отлично влезает, вычитание проходит в double, результат кастится в float. Попробуй вычесть 2.0e20f или (float) 2.0e20 и увидишь разницу.

>>1392216
Способ записи константы тут не играет никакой роли. Он мог бы написать и 200000000000000000000.0, ничего не поменялось бы.

Ответы9221892399

445 30 апр, 18:45 445 1392218

>>1392217
Епта, я ему и написал что он написал флот и написал экспоненциальное число.

Ответы9226692274

446 30 апр, 20:47 446 1392266

>>1392218
еще не знать, кто тут наркоман

447 30 апр, 21:04 447 1392274

>>1392218
дядь, ты че. Все нормально я написал

448 30 апр, 22:17 448 1392298

Сисяны, runtime string xor есть у кого ? Найти не могу, только для С++ бояр завезли что-ли?

Ответы92304

449 30 апр, 22:35 449 1392304

>>1392298
Что? Кто тебе мешает взять крестовый код? Зачем тебе что-то ксорить, если оно декриптится скриптом из трех строк?

Ответы92312

450 30 апр, 23:02 450 1392312

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

Ответы92341

451 1 мая, 00:30 451 1392341

>>1392312
> Хочу сишный код на макросах
В Си в таких случаях принято пилить внешние препроцессоры/кодогенераторы. Например, вот: https://fossil-scm.org/home/artifact/331bea4cfc50a1cf (https://fossil-scm.org/home/artifact/05fefd0fecca6a8c пример применения).

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

Ответы92418

452 1 мая, 06:41 452 1392399

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

Ответы924249245592506

453 1 мая, 08:52 453 1392418

>>1392341
Пусть смотрят, главное чтобы сигнатуры не было, поэтому ксорю, еще сверху обфускатором пройдусь. За ссылочки благодарю.

454 1 мая, 09:27 454 1392424

>>1392399
Флоат не записывает биты по десятичному порядку, и даже если бы все 31 бит отдавал на запись, этого бы не хватило на 37 разрядов. На само значение там отведено около 20 битов, в которые ты 37 разрядов никак не запишешь, а ты ещё экспоненту туда пихаешь, которая один-два байта займет, в зависимости от компилятора. Вывод у тебя правильный для того что ты задал. Флоат это относительно точный тип, т.е. для него 37.99999099099 == 38, но 37.0000 + 1.0000 != 37,99999099099 + 0,00000900901, флоат в битах занимает меньше, чем число, на которое его имя указывает, а ты в значение флоата по имени сразу же записываешь многоразрядную хуету свою

Ответы9246992474

455 1 мая, 10:35 455 1392444

>>1391444
То, что код работает, не значит что он написан не через жопу.

456 1 мая, 11:35 456 1392455

>>1392399
короче, float - это 32 бита SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM.
Бит S - знак, 0 - плюс, 1 - минус. Биты EEEEEEEE - экспонента, 01101011 означает m = 2^(01111111-01101011). Биты MMMMMMMMMMMMMMMMMMMMMMM - мантисса, e = 1.MMMMMMMMMMMMMMMMMMMMMMM. Твое число - это знак∗e∗m. В твоем случае 10^20 = 2^20 * 5^20. Степень двойки прекрасно попадает в экспоненту, а вот 5^20 - это 10101101011110001110101111000101101011000110001. Без единицы впереди, которая не идет в запись, 45 знаков. Осталось перенести условную запятую с конца в начало, прибавив 45 к эспоненте. Жирным виделено то, что войдет в запись. Вот тебе и потеря точности. А double 45 знаков прекрасно вмещает (там до 52).

Ответы924579250592506

457 1 мая, 11:37 457 1392457

>>1392455
ну я и уебище, m и e перепутал

458 1 мая, 11:52 458 1392469

>>1392424
>по десятичному порядку
>в зависимости от компилятора
Сколько медитировал, чтоб постичь тонкости дивного типа float?

459 1 мая, 12:01 459 1392474

>>1392424
Я испытал адский кринж, читая твой пост. Четырежды на каждом слове обосрался.

Ответы92497

460 1 мая, 13:02 460 1392497

>>1392474
смешные вкатывальщики.
Как вопросы уровня laba1.cpp задавать, так не "кринж",
а как ответы на таком же уровне получать, так "кринж".
Фу, сука. Я испытал адский кринж читая твою пубертатную парашу.
Надеюсь, когда-нибудь на ваши тупые вопросы вообще перестанут отвечать, глупая школота.

Ответы92505

461 1 мая, 13:21 461 1392505

>>1392497
по моему, без приписки мимо другой анон очевидно, что я не тот вкатывальщик. Если точнее, я вот этот >>1392455. А фантазии про 99090990 и разные компиляторы - это не тот случай, когда можно оправдаться "какой вопрос - такой ответ". Тут не подъеб, а явная переоцененность собственных знаний и умения их излагать.

Ответы92510

462 1 мая, 13:27 462 1392506

>>1392399
Ну blyaaaa, прости анончик, я тут >>1392455 не только m и e перепутал, но еще кое-что. не 2^(01111111-01101011), а 2^(01101011-01111111)

Ответы92587

475 Кб, 1920x1080
463 1 мая, 13:34 463 1392510

>>1392505
Как жаль, что на твое объяснение ссыт первая же строка из выдачи гугла по сабжу.

Ответы9251492587

464 1 мая, 13:37 464 1392514

>>1392510
Он объяснил на конкретном примере, почему число не влезло. А в википедии кроме картинки ничего полезного нет.

> докер, эдж
Все, этот тред проебан.

Ответы92517

465 1 мая, 13:40 465 1392517

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

Этот тред проебан с самого первого треда, бай зе вей.

Ответы9252292591

sage 466 1 мая, 13:48 466 1392522

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

Ответы92525

467 1 мая, 13:50 467 1392525

>>1392522
Занимаюсь любой хуйней(кекаю со школьников), лишь бы не работать, очевидно. А ты?

Ответы92526

sage 468 1 мая, 13:52 468 1392526

>>1392525
А я отвечаю на вопросы вкатывальщиков, улучшая собственные знания. Лишь бы не работать.

Ответы92530

469 1 мая, 13:59 469 1392530

>>1392526
уЛУЧШАЕШЬ знания, помогая сделать laba1488.cpp?
Тут половина вопросов всегда была по банальной ньюфажной хуете типа ошибок с типами и вечным циклам в вечных рекурсиях, а другая половина - сортировки массивов, графики и криво скрепленные проджекты.
Ты лучше сразу как я говори -"Нет настроения, поэтому занимаюсь хуйней."

Ответы92534

sage 470 1 мая, 14:06 470 1392534

>>1392530
> Тут половина вопросов всегда была по банальной ньюфажной хуете
Да. Тем не менее, бывают вопросы, на которые сложно ответить сходу.

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

Ответы92545

38 Кб, 668x481
471 1 мая, 14:25 471 1392545

>>1392534
>Находить хуево описанные ошибки в говнокоде, часто только в его куске, часто на картинке, не имея возможности отладить его и даже просто запустить
Развиваем БЭД ПРАКТИС в себе и ньюфагах.

472 1 мая, 15:34 472 1392587

>>1392510
>>1392506

473 1 мая, 15:40 473 1392591

>>1392517
>скопипастил
из головы
>поменяв все местами
машинальные ошибки
>Пример того же уровня
мне, безусловно, льстит приравнение к надмозговости вроде "в зависимости от компилятора", "по десятичному порядку" и т.п., но моя скромность склоняет полагать, что до ТАКОГО я еще не дорос

Ответы92606

474 1 мая, 16:02 474 1392606

>>1392591
Просто непробивной манямир. Даже для ситреда слишком тупо.
Тебе лучше сменить тред, попробуй руби или джс, ну или что там еще для уровня домохозяек есть? :trollface:

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

Что до компиляторов - я так понимаю, ничем кроме дефолтных шлангов/гсс/вотевер компилира из вижуал студии ты не пользовался?

Ответы926079260992611

475 1 мая, 16:15 475 1392607

>>1392606
float реализован на уровне архитектуры. Что до остальных "аргументов"... тут, как говорится, наши полномочия - все

476 1 мая, 16:22 476 1392609

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

477 1 мая, 16:25 477 1392611

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

478 1 мая, 17:09 478 1392645

358 Кб, 1334x750130 Кб, 1334x282

Чебзели. Кто нибудь русским языком может объяснить что здесь написано? Я вкатывальщик хуятывальщик

Ответы9265193239

479 1 мая, 17:19 479 1392651

>>1392645
Вот это платина, у меня каждый раз дежавю, когда кто-то прилетает с этим вопросом, даже скрины одинаковые лул.это снова ты?

480 1 мая, 19:37 480 1392749

>>1383604 (OP)
pthreads уже - все? Или еще актуально?

Ответы92759

481 1 мая, 19:48 481 1392759

>>1392749
ну хз, даже на крестах без -lpthreads не скомпилится нихуя на линухе

482 2 мая, 08:35 482 1392899

Подкиньте сборник с лабами своими, а то я давно не студентота, а вкатится хочется.

Ответы92908

483 2 мая, 09:43 483 1392908

>>1392899
Держи:
https://github.com/Biiiii/42_piscine/blob/master/day04/d04.en.pdf

Ответы9292792946

484 2 мая, 11:22 484 1392927

>>1392908
thk

485 2 мая, 12:56 485 1392946

>>1392908
что за хуйню ты скинул, долбоеб?

486 2 мая, 20:22 486 1393141

Привет.
Почему отправленный питоном struct не хочет понимать Си ?

>packet = struct.pack("<5si", b"hello", 5)
>socket.send(packet)
Это с питона

>struct header {char packet; int size}; header
>recv(socket, &header, sizeof(header), 0);
>printf("%s:%i", header.packer, header.size)
Это с Си

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

Ответы931499320293264

487 2 мая, 20:27 487 1393149

>>1393141
printf("%c", header.packet)
Выводит h, что собственно соответствует пакету.
Я так думаю типа мне надо после hello еще и /0 добавить ?
Нахуя тогда нужна эта struct ?

Ответы9320293264

488 2 мая, 21:05 488 1393156

Итак. Программа, обрабатывающая 153 килобайта текстовиков, парсящая их и сохраняя в себе данные в виде ассоциативного массива, сожрала 254 мегабайта памяти. Настало время пердолить динамическую память совсем во все поля?

Ответы93158

489 2 мая, 21:10 489 1393158

>>1393156
А, да, точно пора. Один статический ассоциативный массив сжирает в памяти 64 килобайта. В объекте их 17, что итого нам дает 1088 килобайт ~= мегабайт. Пиздец, чо.

Ответы93164

490 2 мая, 21:18 490 1393164

>>1393158
А, и поскольку множественные последовательные реаллоки лично у меня пидорасят кучу - память под каждый набор с объектами выделяется на 16 штук за раз, и если подходит к пределу выделенного - удваивается. Выделилось памяти под 192 объекта, итого съело 208 мегабайт, плюс еще ~40 хрен пойми откуда. Оцените масштаб пиздеца.

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

Ответы93167

491 2 мая, 21:22 491 1393167

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

Ответы93168

492 2 мая, 21:23 492 1393168

>>1393167
У меня Шindows, так что не могу даже тут проебался.

Ответы93203

493 2 мая, 23:21 493 1393202

>>1393141
>>1393149
100% добавляется пэддинг между char и int в сишной структуре. Нужен pragma pack. Насчёт питона не знаю. И, да, /0 нужен.

494 2 мая, 23:22 494 1393203

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

Ответы93206

495 2 мая, 23:31 495 1393206

>>1393203
Да не критично, винапи только для получения списка файлов в папке используется. Но пока переписал, вроде не падает. Хотя помню, как в отладчике сразу SIGSEGV выпадал при входе в реаллок эдак пятый-седьмой подряд.

496 3 мая, 00:55 496 1393239

>>1392645
короче, обертка scanf("", ...) ведет себя, как
fflush(stdout);
fscanf(stdin, "", ...);
На твоих скринах явно ЧСВ автора книги. Непоследовательное объяснение, чтоб вводить искусственные условности и выглядеть гуру философии Си. Сначала надо про fwrite(), потом про fflush(), потом про fprintf(), потом про printf() ящитаю. Раннее ознакомление с последним допустимо для вката в хелловорлды, но когда о буферизации речь заходит раньше, чем о месте printf в иерархии fprintf, fwrite и т.д., это ИМХО маразм. Путанница-хуютанница.

Ответы932489338593388

497 3 мая, 01:43 497 1393248

>>1393239
> На твоих скринах явно ЧСВ автора книги
Один из авторов книги - Деннис Ричи. Кому же, как не ему быть гуру философии Си?

Ответы932779327893367

498 3 мая, 03:50 498 1393264

>>1393141
Про паддинг сказали, не сказали, что должно быть char packet[5], а не просто char packet.

>>1393149
> Я так думаю типа мне надо после hello еще и /0 добавить ?
Можно добавить, можно printf("%.5s\n", header.packet);

499 3 мая, 07:06 499 1393277

>>1393248
Что-то я в K&R такой хуйни не припомню. Быть может, творческая вольность переводильщика.

500 3 мая, 07:19 500 1393278

>>1393248
впрочем, все может быть. Иногда это и норм с точки зрения послойного наложения знаний. Архитектура мозга такое эффективнее усваивает. Просто мы сильны задним умом, и когда сам шаришь, но не педагог, то хочется максимальной последовательности. По ходу, не стоило писать так поздно ночью, какая-то токсик хуйня получилась.

501 3 мая, 12:38 501 1393367

>>1393248
это прата

Ответы93387

502 3 мая, 13:11 502 1393385

>>1393239
чел, спасибо за ответ. Проблема в том что прата дает все эти fflush и fscanf в 13 главе вроде а мне до них еще дохуище, лучше будь добр скажи достаточно ли пока понимания этих функций по принципу черного ящика. ну мол выводят или вводят они и пока достаточно, потом когда с файлами разбираться буду ясень дуб столкнусь со всей этой хуйней, просто сейчас для меня весь вывод представляется просто как тупо вывод на экран а ввод это отправка в некую пиздень введенных символов включая enter и последующее считывание оттуда функциями scanf или getchar и тд и тп. Нахуй ваще эта буферизация?

503 3 мая, 13:13 503 1393387

>>1393367
спасибо, анон. А то у меня уже разгорелся внутренний конфликт между уважением к Кернигану и Ритчи - авторам книги всей моей жизни - и негативным впечатлением от русифицированного фрагмента в треде. Не зря засомневался по поводу "Данные в языке C | 113", память не подвела.
>это прата
многое объясняет

504 3 мая, 13:14 504 1393388

>>1393239
а сам с чего посоветовал бы начать изучение?

ПЕРЕКАТ # OP 505 3 мая, 13:27 505 1393397

>>1393395 (OP)
>>1393395 (OP)
>>1393395 (OP)
>>1393395 (OP)
>>1393395 (OP)

506 6 мая, 10:20 506 1394752

79 Кб, 839x51128 Кб, 870x332

>>1392203
Объясните почему b NULL? Или этому визуализатору нельзя доверять?

Ответы94843

sage 507 6 мая, 19:00 507 1394843

>>1394752
Видимо нельзя. Видимо переменная лежит в регистрах SSE/FPU, а зарезервированное на стеке пространство не используется (а к моменту выхода из функции стековый фрейм вообще уничтожается). Но это просто предположения. Вообще, чего ты у нас спрашиваешь, вон там на твоем же скриншоте ссылка "known bugs/limitations".

Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 26 мая 2019 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion