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

Этого треда уже нет.
Это копия, сохраненная 29 сентября 2016 года.

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

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

78 Кб, 792x1023

C Programming Language #11 # OP 15 Авг, 21:37 #820659 В конец треда | Веб

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

Что читать:

- Классика от Отцов: http://www.ime.usp.br/~pf/Kernighan-Ritchie/C-Programming-Ebook.pdf
- Годное пособие для гуманитариев: http://c.learncodethehardway.org/book/
- Немного примеров хорошего стиля: 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 2015 Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.
- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.
- TCC: очень маленький компилятор с багами и неполной поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.

Что еще почитать:

http://c-faq.com/
FAQ из comp.lang.c. Древний, но все еще актуален.

Stephen Prata "C Primer Plus, 6th Edition" (2014)
Свежая знает про C89, C99, C11, описывает различия, объемная около тысячи страниц, годная хотя есть некоторые шероховатости, с вопросами, упражнениями и ответами. Читать после K&R или до.

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

Ben Klemens "21st Century C: C Tips from the New School" (2012)

Stephen G. Kochan "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://arhivach.org/thread/106153/
- https://arhivach.org/thread/131949/
- https://arhivach.org/thread/140570/
- https://arhivach.org/thread/153698/
- https://arhivach.org/thread/155908/
- https://arhivach.org/thread/173837/
- https://arhivach.org/thread/180461/
- https://arhivach.org/thread/182958/
- https://arhivach.org/thread/188294/
- https://arhivach.org/thread/193780/

Шапка: http://piratepad.net/bJ1SdmkZyu

Ответы>>821577>>825856>>826046>>827682>>828313>>828458>>829565>>831613>>834160

15 Авг, 21:38 #2 #820663

Насру первым.

512 Кб, 960x540

15 Авг, 22:40 #3 #820708

освещаю

Ответы>>820750>>834314

15 Авг, 22:59 #4 #820718

а что это у нас тут?

стандарт ISO/IEC 9899:1999 - http://libgen.io/ads.php?md5=AE47DE5575CD798E7BB355405B0A2080

стандарт ISO/IEC 9899:2011 - http://libgen.io/ads.php?md5=4CC5C8494FDC76ECB56A927E802FF25E

Ответы>>820725>>820751

15 Авг, 23:03 #5 #820725

>>820718
Спасибо. Но ведь нет никаких значимых различий между последними драфтами и этими pdf?

16 Авг, 00:11 #6 #820750

>>820708
Что за бомжевское рыло? Наверно, долго сопли и квашенную капусту из бороды выковыривал перед фотканьем.

16 Авг, 00:15 #7 #820751

>>820718
Bed gaytway

Ответы>>820759

sage 16 Авг, 00:31 #8 #820759

>>820751
Все работает. Скажи спасибо провайдеру?

317 Кб, 736x736

16 Авг, 05:45 #9 #820804

Есть ли в стандартной библиотеке поиск в строке символа из заданного массива символов, или как всегда ручками в цикле?

Ответы>>820805

16 Авг, 05:49 #10 #820805

>>820804
strpbrk()

Ответы>>820806

16 Авг, 06:00 #11 #820806

>>820805
пасиб

16 Авг, 09:29 #12 #820848

Хочу вкатиться в Pelles C, какие подводные камни?

Ответы>>820902>>820903>>820943

16 Авг, 11:40 #13 #820902

>>820848
>какие подводные камни
Pelles C

Ответы>>820911

16 Авг, 11:40 #14 #820903

>>820848
>какие подводные камни?
С

16 Авг, 11:49 #15 #820911

>>820902
Какие еще есть IDE для си?

Ответы>>820917>>820929

16 Авг, 11:55 #16 #820917

>>820911
вижалстудио, куткреатор, клион, нетбинс, кодеблокс

Ответы>>820926

16 Авг, 12:05 #17 #820926

>>820917
так вижуалстудия поддерживает только С89, а остальные требуют гцц

Ответы>>823487>>823490>>823498

16 Авг, 12:08 #18 #820929

>>820911
IAR

Ответы>>820931

16 Авг, 12:11 #19 #820931

>>820929
Я МК не программирую

Ответы>>820933

16 Авг, 12:13 #20 #820933

>>820931
Все так говорят.

Ответы>>820940

16 Авг, 12:26 #21 #820940

>>820933
ну а зачем мне тогда нужен IAR?

16 Авг, 12:30 #22 #820943

>>820848
> какие подводные камни
Никаких. Для вкатывания самое то, если IDE из комплекта не вызывает отвращения.

Ответы>>820954

16 Авг, 12:40 #23 #820954

>>820943
Хорошо, а вкатываться сразу в C11 или можно K&R читать?

Ответы>>820956>>820971

16 Авг, 12:47 #24 #820956

>>820954
Можно читать K&R, второе издание. Если чего-то вдруг не соберется (Pelles C не любит до-ансишный способ декларации функций), спросишь тут, да и все.

16 Авг, 13:16 #25 #820971

>>820954
Можешь и в С11, один хуй там разница минимальна.

192 Кб, 612x380

17 Авг, 11:30 #26 #821577

>>820659 (OP)
Прохожу значит cs50 я и решил выложить код на кодревью, если кому-то захочется покритиковать код, буду очень рад.

Суть кода в том, чтобы залезть в card.raw файл, с которого по заданию были удалены jpg фотки и восстановить их в текущую директорию http://pastebin.com/804RAvLH комментарии есть (первый раз писал комменты реально). Код работает, интересны замечания в реализации.

http://rgho.st/6LtnFPmRJ - исходный файл (если нужно)

Ответы>>821593>>821609>>821916>>821930

17 Авг, 12:10 #27 #821593

>>821577
Это из четвертого псета? Не буду смотреть чтобы не заспойлерить, я еще не осилил его. Слошна было?

Ответы>>821597

17 Авг, 12:19 #28 #821597

>>821593
Да из 4, первые два задания норм, третье (которое я скинул) довольно напряженное для меня было, байтоебство началось во всей красе.

Ответы>>821598

17 Авг, 12:22 #29 #821598

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

Ответы>>821603>>821607

17 Авг, 12:24 #30 #821600

Подскажите, почему так?
Запускаю "time ./heapsort < input", показывает 0.106 s, а второй и последующие разы 0.46 s, причем первый раз всегда зависит от размера input, а при повторном запуске время всегда 0.46 s. Можно от этого как-то избавиться? Это типа оптимизации какие-то?

Ответы>>821602>>821653

17 Авг, 12:27 #31 #821602

>>821600
Хотя как-то странно, на 100000 и 1000000 чисел время 0.46 s, а на 1000 0.60 s

17 Авг, 12:28 #32 #821603

>>821598
Ну да тоже сначала про Девида подумал.

17 Авг, 12:30 #33 #821607

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

17 Авг, 12:32 #34 #821609

>>821577
> если кому-то захочется покритиковать код, буду очень рад.
Что ты хочешь услышать? Насколько читабельный код или насколько правильно задание сделал? Если первое:
1. #define BUF_SIZE 512 нуу или хотя бы sizeof(buffer) вместо указывания размера при каждом использовании. Да и в целом все константы-имена мог бы и задефайнить.
2. Где блять проверка ошибок вызываемых библиотечных функций?
3. Глобальные переменные в main запихнуть зачем ты вообще решил сделать их глобальными?
4. Не используй sprintf если можно использовать snprintf
5. 99% комментариев не нужны, код и так понятен.
6. (-1 * 512 ) - нахуя так делать?

Ответы>>821613

17 Авг, 12:41 #35 #821613

>>821609
По первым пунктам согласен, а в 6 не понял, а как еще сделать было? -sizeof(buffer)?

> Где блять проверка ошибок вызываемых библиотечных функций?

Это проверка на NULL? Просто еще не очень понимаю суть этих проверок.

Ответы>>821616>>821658

17 Авг, 12:43 #36 #821616

>>821613
Суть в том, что если по каким то причинам fopen вернул нулл, то нужно все прекращать. Ну, так в кусре говорили. Же.

Ответы>>821619

17 Авг, 12:44 #37 #821619

>>821616

Да я вот особо и не понял, зачем это надо, с какого он вообще должен NULL возвращать, если файл на месте?

Ответы>>821624

17 Авг, 12:53 #38 #821624

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

Ответы>>821633

17 Авг, 13:14 #39 #821633

>>821624

Просто после питона непривычно все это.

Ответы>>821656

17 Авг, 13:50 #40 #821653

>>821600
Ты ведь не на ОСРВ запускаешь код, чему удивляешься?

17 Авг, 13:52 #41 #821656

>>821633
Да нет же, это после быдлокодерства тебе не привычно. В бидоне тоже нужно исключения ловить.

Ответы>>821687

17 Авг, 13:56 #42 #821658

>>821613
>а в 6 не понял, а как еще сделать было? -sizeof(buffer)?
Ну да, ебать, какой смысл добавлять умножение на единицу если нужно просто добавить минус.

Ответы>>821687

17 Авг, 14:42 #43 #821687

>>821658
Ну я хотел сделать более понятно...

>>821656
Ну да наверное.

17 Авг, 15:13 #44 #821713

вот написал add, авл дерева, и думаю - как же органично. начал писать del - и пиздец, переписал всё без рекурсии. рекурсия не про C.

Ответы>>821729

17 Авг, 15:23 #45 #821729

>>821713
> рекурсия не про C.
Еще бы, стек-то не резиновый.

Ответы>>821736

17 Авг, 15:28 #46 #821736

>>821729
Он нигде не резиновый

Ответы>>821744

17 Авг, 15:36 #47 #821744

>>821736
Ну в лиспе стандартом гарантируется хвостовая оптимизация, например.

Ответы>>821768>>821870

17 Авг, 16:14 #48 #821768

>>821744
>хвостовая оптимизация
где вы блядь такие слова берете?

17 Авг, 18:16 #49 #821870

>>821744
В схеме. А схема не лисп. В общелиспе это зависит от имплементации, поэтому там сплошная ебля с goto, присыпанная сахарком.

17 Авг, 19:37 #50 #821916

>>821577
Кроме того, что уже сказали, что за tens/ones, что за нахуй? Кто запретил %02i сделать?

Ответы>>821923

17 Авг, 19:45 #51 #821923

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

Ответы>>821924

17 Авг, 19:47 #52 #821924

>>821923
В стандарте, в википедии, тут http://www.cplusplus.com/reference/cstdio/printf/ (не смотри на plusplus).

Ответы>>821929

15 Кб, 350x262

17 Авг, 19:52 #53 #821929

>>821924
Спасибо

17 Авг, 19:52 #54 #821930

>>821577
Код как код...

sage 17 Авг, 19:54 #55 #821932

test

17 Авг, 21:01 #56 #821972

Нашел книгу дейтелов по С11, стоит ли ее читать? Или K&R лучше?

sage 17 Авг, 21:51 #57 #822004

>>821993
da

17 Авг, 22:02 #58 #822016

>>821993
>>822012
Возьми pthreads, нахуй тебе winapi? Структуру можно создавать в стеке, ты же будешь дожидаться, пока треды не закончат работу (зделоешь join) и не выйдешь до этого из функции.

17 Авг, 22:03 #59 #822019

>>822018
Говноедствовать интереснее?

17 Авг, 22:13 #60 #822026

>>822024
Объявить переменную?

18 Авг, 04:17 #61 #822160

>>822024
Хуле ты свое говно по двум тредам размазал, уебок? https://2ch.hk/pr/res/821402.html#822061 (М)

18 Авг, 04:25 #62 #822161

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

Ответы>>822178

18 Авг, 07:08 #63 #822178

>>822161
только что что?

18 Авг, 12:16 #64 #822305

> x = (void@@)a ;
> assignment from incompatible pointer type

> x = (void@)a ;
> ...

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

Ответы>>822348>>822350

18 Авг, 13:11 #65 #822348

>>822305
Что не так? Все правильно же.

18 Авг, 13:13 #66 #822350

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

Ответы>>822403

18 Авг, 13:18 #67 #822353

Ах указатели
Да на указатели
Прошу сплоеты писать
Пайду в председатели!

18 Авг, 14:25 #68 #822403

>>822350
бред.
> struct @t = void @t
если это валидно

> struct t @@t = void @@t
то и это должно быть, ведь фактически, это оба void@.

Ответы>>822426

18 Авг, 14:31 #69 #822408

поясните за выражение по типу:

int counter = 0;

char string[10];

string[counter++] = 'a';

Почему 'a' присваивается в string[0], а не string[1]?

Ответы>>822411

18 Авг, 14:33 #70 #822411

>>822408
Потому что надо нормально учить язык и различать count++ и ++count

Ответы>>822461

18 Авг, 14:51 #71 #822426

>>822403
Не бред.
void ∗ - указатель на что угодно. По стандарту, ты можешь без каста присвоить void ∗ любому другому указателю плюс-минус квалификаторы (и обратно).
Грубо говоря, если у тебя указатель на T, и T == void, есть магия. Если у тебя T == int, T == int ∗, T == struct ∗, T == void ∗, T == что-то еще, тогда магии нет.

Ответы>>822433>>822483

18 Авг, 14:59 #72 #822433

>>822426
>void ∗ - указатель на что угодно.
Но void - уже не указатель на что угодно.

Ответы>>822467

18 Авг, 15:47 #73 #822461

>>822411
Пояснишь?

Ответы>>822469>>822472

18 Авг, 15:51 #74 #822467

>>822433
>void ∗∗
фикс

18 Авг, 15:52 #75 #822469

>>822461
Я не эксперт, но наверное потому, что сперва присвоение, а уже потом постинкремент

18 Авг, 15:53 #76 #822472

>>822461
Ты ебанутый? Я же написал - разберись, что значит два плюсика перед переменной (преинкремент) и после (постинкремент). Копипасть инфу с книги я не буду, сам найдешь охуели вообще

Ответы>>822474

18 Авг, 15:55 #77 #822474

>>822472
Да уже нашел)

18 Авг, 16:08 #78 #822483

>>822426
1. ты не хуя не объясняешь, а только путаешь.

2. нахуй ты мне объясняешь стандарт, я и так знаю что такое void@.

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

4. и вообще, если вспомнить asm... короче, плохо.

и ещё, я тут понял для чего нужен + в указании знака числу, чтобы конструкция вида #if (SOMEVER + 0 > 1) работала, даже если SOMEVER не объявлен.

Ответы>>822538>>822613>>822624

18 Авг, 16:47 #79 #822538

>>822483
>и ещё, я тут понял для чего нужен + в указании знака числу, чтобы конструкция вида #if (SOMEVER + 0 > 1) работала, даже если SOMEVER не объявлен.
Ну тут ты уже придираешься, препроцессор не должен вместо отсутствующей директивы лепить какого-то хуя 0).

Ответы>>822624

18 Авг, 18:09 #80 #822613

>>822483
> потому что так наглядней и меньше путает
> я не хочу писать
Посоны, я тут гуманитария поймал. Что с ним сделать?

Ответы>>822627

18 Авг, 18:18 #81 #822624

>>822538
> препроцессор не должен
Как раз таки должен. Все имена, которые #if не смог развернуть, он заменяет на литерал 0. Нахуя >>822483 воткнул +0 в #if - совершенно непонятно.
#if (SOMEVER + 0 > 1) развернется в #if (0 + 0 > 1) если SOMEVER не определен, в #if (что-то + 0 > 1), если SOMEVER определен, ну или свалится, если SOMEVER не разворачивается в число или выражение.

Ответы>>822631>>822648

18 Авг, 18:20 #82 #822627

>>822613
Но ведь он прав. Похожая проблема существует даже в более высокоуровневых языках, например, в жабе при работе с дженериками. Там никто никого гуманитариями не обзывает, но по-другому (не с помощью ебли с приведениями типов) красиво решить проблему в языке нельзя.

18 Авг, 18:23 #83 #822631

>>822624
>он заменяет на литерал 0
Охуеть, я и не знал

18 Авг, 18:55 #84 #822648

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

18 Авг, 18:56 #85 #822649

ну в смысле, потому что +0 - легальная конструкция.

18 Авг, 18:58 #86 #822654

хотя с другой стороны, тоже можно и с -0 сделать. хер короче пойми, пойду я пить водку.

Ответы>>822921

19 Авг, 05:42 #87 #822921

>>822654
Прально, сразу умнее станешьнеа

19 Авг, 06:41 #88 #822927

Тут есть люди, которые имели опыт работы с i2c на stm32? Не могу понять логику работы с HAL, а спросить не у кого.

85 Кб, 1152x648

19 Авг, 18:22 #89 #823317

https://ideone.com/iTScte

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

Ответы>>823318>>823336>>823350

19 Авг, 18:23 #90 #823318

>>823317

посмотрите

fixed

19 Авг, 18:55 #91 #823334

Аноны, совсем нубовопрос. Читаю K&R, и хочу спросить, есть такой кусок кода:

printf ("%2d", a)

Он должен выдать "a" в поле из двух позиций, да? Но оно выводит все число, и трехзначное и четырехзначное. Я предполагал, что мне выдаст два первых разряда только. Чего я не понимаю? Ткни носом, анон. Гугл не помог.

Ответы>>823338

19 Авг, 19:00 #92 #823336

>>823317
Как минимум сделай человеческую проверку на ошибки malloc-а. Если malloc в push фейлится, то при pop будет обращение к нулевому указателю, на что, возможно, ругается valgrind. Ну и на счет free:
temp = real_first;

while (real_first != NULL)
{
// ТЫ ТУТ ОСВОБОДИЛ память по указателю temp и real_first
free(temp);
// А ТУТ ТЫ ОБРАЩАЕШЬСЯ К ЭТОЙ ПАМЯТИ. ЕБАНУТЫЙ!
real_first = real_first->next;
temp = real_first;

}

Ответы>>823345

19 Авг, 19:01 #93 #823338

>>823334
> из двух позиций
из МИНИМУМ двух позиций

> два разряда только
Подели или возьми остаток или форматни в строку и сделай %.2s.

Ответы>>823358

19 Авг, 19:10 #94 #823345

>>823336
Да чет с памятью тупанул, там оказалось вообще этот цикл не нужен, а что значит человеческая проверка?

Ответы>>823436

19 Авг, 19:18 #95 #823350

>>823317

Короче понял в чем косяки, он ругается на те строчки, где я сравниваю со значением NULL в циклах while, как это фиксить?

Ответы>>823368

19 Авг, 19:31 #96 #823358

>>823338
Спасибо.

19 Авг, 19:55 #97 #823368

>>823350
а нахуя ты смотришь через 2 указателся на 114?

Ответы>>823378

19 Авг, 19:58 #98 #823370

Почему Pelles C ругается на устаревшие объявления типа void thread_1() и хочет, чтобы было void thread_1(void)?

Как предписывает стандарт?

Ответы>>823371>>823375

19 Авг, 20:00 #99 #823371

>>823370
старый, да. там что-то про отсутствие контроля за числом аргументов... и только void явно указывал, что нету их.

Ответы>>823381

19 Авг, 20:03 #100 #823375

>>823370
> Почему Pelles C ругается на устаревшие объявления
Потому что они устаревшие.

19 Авг, 20:05 #101 #823378

>>823368

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

19 Авг, 20:16 #102 #823381

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

Ответы>>823439

19 Авг, 21:35 #103 #823436

>>823345
>а что значит человеческая проверка?
да в принципе я пересмотрел код, и так сойдет для начала.
Важная ошибка в коде - ты не инициализируешь newptr->next когда делаешь push первого элемента (то бишь когда (first == NULL)), а надо делать newptr->next = NULL.
В целом реализация алгоритма не очень красивая, подумай как лучше сделать

Ответы>>823442

19 Авг, 21:46 #104 #823439

>>823381
Ругается в смысле выбрасывает ворнинги? Если так, то всё правильно делает.
>Что это блять за говно такое этот ваш Pelles C?

19 Авг, 21:48 #105 #823442

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

https://ideone.com/TAV3uO вот реализация, valgrind не жалуется, только тут я по типу очереди сделал, удаляет первые элементы, а не последние.

Чувствую с хеш-таблицами будет сложнее...

19 Авг, 21:51 #106 #823444

это теперь зацени код тренж?

http://pastebin.com/7mSBJVny

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

19 Авг, 22:54 #107 #823481

Лол, не заметил надпись "ПЕРЕКАТ!!!". Репощу сюда в легитимный >>823404

Пытаюсь написать интерпретатор/терминал/оболочку (не знаю как назвать) для парочки команд в микроконтроллер, чтобы через последовательный порт можно было заставлять его что-то делать прямым текстом (командами а-ля баш). Пока пишу под ПК на линуксе.
Вопрос следующий: как перехватить стрелочки, чтобы не выводился мусор типа "^[[D", а каретка перемещалась по вводимой строке? Пробовал getchar() и scanf() с одинаковым результатом, но я понятия не имею как предотвратить вывод этого мусора. Остальное я представляю себе как реализовать. Обязательный момент - это использование только функций из страндартной библиотеки.
И, кстати, вводимую строку пишу в массив символов - это нормально так делать или стоит переехать на указатели?

Ответы>>823486

19 Авг, 23:02 #108 #823486

>>823481
> как перехватить стрелочки
> мусор
vt 100 esc sequence

хер знает о чём ты там, <termios.h>. noncanonical.

> использование только функций из страндартной библиотеки
лол, нет)

> И, кстати...
что?

Ответы>>823500

19 Авг, 23:07 #109 #823487

>>820926
ну так сделай визуалку работать с гцц

19 Авг, 23:10 #110 #823490

>>820926
https://news.ycombinator.com/item?id=9434483
msvs2015 поддерживает c99

Ответы>>823494

19 Авг, 23:12 #111 #823494

>>823490
>поддерживает c99
каждый так говорит, а ты купи розового слона.

19 Авг, 23:15 #112 #823498

>>820926
>а остальные требуют гцц
А в чем проблема с гцц? Минг же проще ставить, чем гигобайты студии.

19 Авг, 23:17 #113 #823500

>>823486
> <termios.h>. noncanonical
Ты хочешь сказать что этот хидер неканоничный? Как ни странно, на его включение компилятор под мой контроллер не ругнулся, значит им можно пользоваться. Я попробую.
НО! Посмотрев исходный код fgetc(), я понял, что его вообще не ебёт, что там у меня отображается при вводе, потому что это просто поток символов, который он потом, будучи выполнен несколько раз в цикле, по одному символу проглотит. В таком случае я просто не буду пользоваться стрелками для перемещения каретки - только бекспейс.
> > И, кстати...
> что?
Если не понятно выражаюсь, то здесь я имел в виду, что всё полученное через getchar() я складываю в массив char, чтобы потом использовать. Насколько я знаю, последовательность символов можно строкой записать по указателю. Возможно, я не прав или это совсем аутизм.

Ответы>>823506>>823510>>823620

19 Авг, 23:23 #114 #823506

>>823500
>Ты хочешь сказать
>неканоничный
это режим терминала - не каноничный, там ты можешь что хочешь почти. и что такого сложного в этом потоке символов распарсить стрелочки, в esc последовательностях? там делов то, да и есть, наверно, какие-то функции. но стандарт ц тут нипричём.

> то совсем аутизм.
вот ты ещё раз написал, и я снова нихуя не понял.

Ответы>>823527

19 Авг, 23:28 #115 #823510

>>823500
> Ты хочешь сказать что этот хидер неканоничный? Как ни странно, на его включение компилятор под мой контроллер не ругнулся, значит им можно пользоваться.
Я не понял, ты подключаешь клавиатуру к микроконтроллеру что ли?

Ответы>>823527

16 Кб, 561x340

19 Авг, 23:53 #116 #823527

>>823510
Не совсем. Я пользуюсь Serial Wire Debug JTAGом. Это просто последовательный порт для отладки исполняемой программы в мк, который, в том числе, работает... как терминал, ёпта. Всякие там printf'ы блекджек и шлюхи, всё включено.

>>823506
Я не понимаю слово "распарсить". Я просто хочу, чтобы у меня не было пикрилейтед при вводе с клавиатуры, когда я нажимаю стрелочки. Я хочу чтобы каретка двигалась! Мне теперь кажется, что программа что-то должна сообщить терминалу, чтобы он переключился в необходимый режим, который будет обрабатывать стрелочки как указание передвижения каретки, а не как символы и это будет решением.

> вот ты ещё раз написал, и я снова нихуя не понял.
Ну и хрен с ним. Просто надеялся, что мне подскажут другой (возможно, более удобный или правильный) вариант хранения полученных данных из getchar или scanf, кроме как в массиве типа char для дальнейшей обработки.

Ответы>>823546>>826325

20 Авг, 00:09 #117 #823546

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

Ответы>>823557

20 Авг, 00:14 #118 #823557

>>823546
Хочется сома научиться писать правильный код.
Я слышал про malloc, так что тут можно так и сказать, что она сама лично и будет мне выделять память. И никто иной кроме неё.
Спасибо за терпение и ответы

Ответы>>823559

20 Авг, 00:16 #119 #823559

>>823557
> я ебу тебе мозги
ясн.

20 Авг, 00:46 #120 #823588

Я новичок, прохожу cs50 и захотел перекатиться на полноценную ide, скачал visual studio 2015, но не понял, как там на си писать, создать пустой проект? И как остановить компиляцию, чтобы прочитать вывод в консоль? Вообще чет в печали, есть ли что-то попроще?

Ответы>>823593>>823595>>823880>>827815

20 Авг, 00:56 #121 #823593

>>823588
Там должен быть шаблонный hello world. Посмотри хотябы видеоуроки на ютьюбе же!

Ответы>>823595

20 Авг, 01:05 #122 #823595

>>823593
>>823588
А, я только сейчас догнал, что в VS ориентирован на С++. Просто создавай проект для C++ и поменяй расширение файла с .cpp на .c
http://www.swarthmore.edu/NatSci/tali/E15/Visual_C.html

Ответы>>823695

20 Авг, 02:09 #123 #823620

>>823500
> Посмотрев исходный код fgetc(), я понял, что его вообще не ебёт, что там у меня отображается при вводе
Далеко ходишь. Достаточно поискать по pdf-ке стандарта слова типа "консоль" "терминал" или "отображается" (на английском, есс-но), чтобы понять, что C и его стандартная библиотека о таком не знают.

> Вопрос следующий: как перехватить стрелочки, чтобы не выводился мусор типа "^[[D", а каретка перемещалась по вводимой строке?
gnu readline

Ответы>>823641

20 Авг, 03:09 #124 #823641

>>823620
> gnu readline
Спасибо, конечно, но, мне кажется, я не осилю портировать её на микроконтроллер.
Сейчас читаю про termios.h. Похоже, что это то, что нужно, но трудно даже взять в толк что это вообще такое.
Решил пока ограничиться избеганием нажатия стрелок. Моя поделка вряд ли кому-то ещё понадобится, а я могу и потерпеть это безобразие.

20 Авг, 09:09 #125 #823695

>>823595
Во за гайд спасибо!

20 Авг, 15:02 #126 #823880

>>823588
visual studio слишком перегружена.
cloud9 для этих целей в самый раз

Ответы>>824290

20 Авг, 19:57 #127 #824056

Пизда потный 5 задачник из cs50, особенно, если за плечами был только курс питона для начинающих.

20 Авг, 22:22 #128 #824203

Опять вопрос от ньюфага.

Читаю K&R.
Имею кусок кода:

int c;
while ((c = getchar()) != EOF)
putchar (c);

В таком виде программа читает все символы что я ввожу и выводит все в терминал(xterm). При этом, при нажатии Enter, все что я вводил вставляется в новую строку, а писать я начинаю на третьей.

Если убрать скобки вокруг "c = getchar()", то судя по книге программа должна печатать нули либо единицы, но все что меняется у меня - перестает копироваться все что я ввел в строку на новую, при нажатии Enter. При этом, при нажатии EOF, текст становится нестираемым бэкспейсом и лишь при втором его нажатии программа завершает работу.

Обьясните кто-то что происходит. Вряд-ли это из-за эмулятора терминала. Пробовал Sakura и Urxvt - все так-же.
Издание K&R - третье.

Ответы>>824254>>824508>>824578

20 Авг, 23:07 #129 #824254

>>824203
компилятор поменяй

20 Авг, 23:46 #130 #824290

>>823880
б-же мой, да нахуя вам вообще IDE для cs50? Дебилі блять.

Ответы>>824291

20 Авг, 23:48 #131 #824291

>>824290
Не для cs50, а вообще, я на будущее скачал, так как сей замечательный курс уже подходит к концу, эх... и нужно отправляться в свободное плавание по морям it океана.

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

Ответы>>824509

21 Авг, 02:18 #132 #824372

>>824370
Деема, ты?

21 Авг, 13:11 #133 #824508

>>824203
Если ты уберешь скобки то получится
(c = getchar() != EOF) и в этом случае сначала будет выполняться getchar() != EOF, а только после этого c = getchar(), из-за этого так и получается.

Ответы>>824516

21 Авг, 13:12 #134 #824509

>>824291
Как вы его смотрите, его же еще до конца не перевели?

Ответы>>824533>>824550

21 Авг, 13:22 #135 #824516

>>824508
Чегооо? Если убрать скобки, у != приоритет выше, поэтому выполнится getchar() значение сравнится с EOF, результат подвыражения будет 0 или 1, это результат запишется в c, результат выражения будет все тот же 0 или 1, и этот результат уже обработает while. Никаких спецэффектов быть не должно, проблема, скорее всего, в терминале.

21 Авг, 14:11 #136 #824533

>>824509
Сам то как полагаешь?

Ответы>>824591

21 Авг, 14:26 #137 #824538

Почему диму никак не забанят? Он айпишники меняет?

21 Авг, 14:53 #138 #824550

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

Ответы>>824591

21 Авг, 15:59 #139 #824576

Что почитать про оптимизацию?

Ответы>>824771>>824895

21 Авг, 16:02 #140 #824578

>>824203
>Если убрать скобки вокруг "c = getchar()", то судя по книге программа должна печатать нули либо единицы
лол, нет. она будет печатать символы с кодом 1, а потом когда будет 0, цикл завершится

21 Авг, 16:38 #141 #824591

>>824533
>>824550
Русских субтитров нет, поэтому только догадываюсь

Ответы>>824607

21 Авг, 17:04 #142 #824607

>>824591
В такос случае неясно, что ты тут без знаная английского делаешь

Ответы>>824672

21 Авг, 19:11 #143 #824672

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

Ответы>>824673

21 Авг, 19:14 #144 #824673

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

21 Авг, 22:42 #145 #824743

Много ли я потеряю, если буду заниматься реверсингом только под линуксом и использовать gcc и clang? Лениво переключаться на другой компьютер со студией.

Ответы>>824746

21 Авг, 22:52 #146 #824746

>>824743
Почти ничего не потеряешь, если устраивает линуксячий софт - radare2 очень даже норм. А компилятор виндовый иногда пригодится (ну там, посмотреть, как он что-нибудь кодогенерит) - рипни его из студии (у них где-то build tools даже отдельно релизились недавно). Чаще всего вайна будет вполне достаточно, но какую-нибудь хитровыебанную защиту без реальной винды ты не снимешь.

21 Авг, 22:56 #147 #824752

Сап, не могу найти скомпилированный libcurl с OpenSSL, нашел только на Cygwin, но он не работает. Может быть есть альтернативы?

Ответы>>824897

21 Авг, 23:25 #148 #824771

>>824576
Бамп

Ответы>>824774

21 Авг, 23:30 #149 #824774

>>824771
Ничего. Пиши хороший код и не мешай компилятору. Ну криса касперски почитай, ничего особо не поменялось с тех пор.

22 Авг, 10:19 #150 #824886

Я немного могу в указатели, что мне читать дальше?

Ответы>>824894

22 Авг, 10:38 #151 #824894

>>824886

Делать->дальше = читать

22 Авг, 10:41 #152 #824895

>>824576
Выставляй static где можно, inline где нужно, не объявляй переменные с типом меньше int если тебе похуй на переполнение и т.п. А вообще, оптимизация - дело мутное и всё придет с опытом.

Ответы>>824962

22 Авг, 10:43 #153 #824897

>>824752
Сам собери.

Ответы>>824992

22 Авг, 12:40 #154 #824962

>>824895
совет уровня ставь пробелы вместо табов. пошёл нахуй

Ответы>>824963

22 Авг, 12:42 #155 #824963

>>824962
Ты - даун?

Ответы>>824994

22 Авг, 13:32 #156 #824991

!(что-то понял) && do = бегом на тучик;

какое охуенно выражение!теперь всегда буду его использовать

Ответы>>824994

22 Авг, 13:40 #157 #824992

>>824897
Вот в том то и проблема!
Я каким-то чудом скомпилил либу без OpenSSL, ну а для компиляции с ссл просто нету нужных заголовочных файлов (я тщательно искал на сайте OpenSSL, там только новые версии)

Ответы>>825039

22 Авг, 13:42 #158 #824994

>>824963
просто иди нахуй, выблядок, и забирай свои маняоптимизации.

>>824991
шутёх))00

пошли вы все нахуй

Ответы>>824995>>825034

22 Авг, 13:44 #159 #824995

>>824994
Поешь говна

22 Авг, 14:55 #160 #825034

>>824994
Это что блять за петух тут раскукарекался?

22 Авг, 15:01 #161 #825039

>>824992
И это https://curl.haxx.se/docs/install.html читал?

>(я тщательно искал на сайте OpenSSL, там только новые версии)
Нихуя не понял. Новые версии чего? OpenSSL?
https://github.com/openssl/openssl/releases

Ответы>>825078

22 Авг, 16:03 #162 #825078

>>825039
>И это https://curl.haxx.se/docs/install.html читал?
Естественно.

>https://github.com/openssl/openssl/releases
А вот на гитхабе не шарил.

>Нихуя не понял. Новые версии чего? OpenSSL?
Да. В своих поисках я случайно где-то наткнулся на туториал по компиляции, там кажется нужна была версия 1.0.1d или что-то такое. Полез на сайт, не нашёл нужной версии (1.0.2h скачал, хули), и обосрался при компиляции.

23 Авг, 16:55 #163 #825815

Кто-нибудь знает, что нужно, чтобы создать виртуальный микрофон на WDK или что почитать по этому поводу?

Ответы>>825835

23 Авг, 17:12 #164 #825835

>>825815
Чужие исходники почитай. Вот, например, первый попавшийся из гугла: https://sourceforge.net/p/virtualaudiopip/virtualaudiopip/ci/c775b372412f6d306d96e09b460593696ebe1927/tree/Virtual Audio Pipeline/adapter.cpp

23 Авг, 17:30 #165 #825856

>>820659 (OP)
хомяки, посоветуйте, пожалуйста, книгу по сишке, где автор не синтаксис неофитам разжевывает, а подробно рассказывает о особенностях

Ответы>>825999>>826011>>826195

23 Авг, 20:38 #166 #825999

>>825856
Удвою, закончил cs50 сишную часть и понял, что не хочу этот язык забрасывать, что дальше читать/учить и чтобы с интересными задачами.

sage 23 Авг, 20:59 #167 #826011

>>825856
http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list

23 Авг, 21:59 #168 #826046

>>820659 (OP)
>Object-oriented Programming with ANSI-C (Free PDF) - Axel-Tobias Schreiner

А разве в си есть ООП?

Ответы>>826052

23 Авг, 22:07 #169 #826052

>>826046
ООП - это не ключевое слово class, а принципы построения программ.

Ответы>>826054>>826060

sage 23 Авг, 22:09 #170 #826054

>>826052
Этот прав.

23 Авг, 22:25 #171 #826060

>>826052
Понял

24 Авг, 09:07 #172 #826195

>>825856
Завтра ищешь книгу дайв инту си.

24 Авг, 12:57 #173 #826325

>>823527
Не страдай хернёй и используй стандартные реализации управление контроллером типа FreeModBus. Если функционала будет нехватать - просто расширь список выполняемых команд.

24 Авг, 17:27 #174 #826519

Хочу написать хелловорлд через прерывания биоса на си. чтобы совсем не использовать системные вызовы или вызовы библиотеки, а только прерывания. Какие подводные камни?

Ответы>>826544

24 Авг, 17:40 #175 #826544

>>826519
Никаких, но тебе понадобится загрузчик для твоего говнокода или DOS возьми DOSBox.

1580 Кб, 1920x1080

24 Авг, 18:55 #176 #826579

Любимый ситред

24 Авг, 19:53 #177 #826594

Хочу портировать STL на чистый си, какие подводные камни?

Ответы>>826599>>826600>>826662

24 Авг, 19:58 #178 #826599

>>826594
> STL на чистый си
Дженерики в C11 - полное говно.

Ответы>>826604

24 Авг, 19:58 #179 #826600

>>826594
Заебешься. И получится неюзабельно.

Ответы>>826604

24 Авг, 20:05 #180 #826604

>>826600
>>826599
Я то не всю хочу портировать, а только малую часть, вроде векторов, map, и прочих контейнеров.

Ответы>>826612

24 Авг, 20:13 #181 #826612

>>826604
Все равно основа - шаблоны, а шаблоны в сишечке достижимы только через #define T int #include "mymap.h" #undef T и прочие подобные извращения.

Ответы>>826629

24 Авг, 20:35 #182 #826629

>>826612
А если без шаблонов и под каждый тип - отдельную структуру?

Ответы>>826634

24 Авг, 20:45 #183 #826634

>>826629
> под каждый тип - отдельную структуру?
хех мдаа...

24 Авг, 20:46 #184 #826635

https://code.visualstudio.com/
https://blogs.msdn.microsoft.com/vcblog/2016/03/31/cc-extension-for-visual-studio-code/
http://bydlokoder.ru/index.php?p=books_WinAPI

Ответы>>826641

24 Авг, 20:49 #185 #826641

>>826635
> VS Code
Все равно надо mingw/cygwin использовать для конпеляции и отладки под виндой, так что пока НИНУЖНО.

Ответы>>826671>>826693

24 Авг, 21:20 #186 #826662

>>826594
делают двумя способами:
на *void, но как следствие полностью выключает контроль типов, зато можно передавать через границы бинарных модулей
второй способ - на макросах, это сохранит типизацию, но через бинарные модули уже не перекинуть будет
дополнительно можно сэмулировать variant на структурах и объединениях, минус - типы будут изначально ограничены теми, что есть в variant
еще способ - запилить компонентую инфраструктуру типа com или gobject и поверх этого уже делать обобщенные структуры и алгоритмы

24 Авг, 21:50 #187 #826671

>>826641
Есть Build Tools от MS, но ты прав, редакторы на HTML не нужны.

Ответы>>826681

24 Авг, 22:07 #188 #826681

>>826671
Sublime text с любым плагином на автокомплит и вперёд.

Ответы>>826698

24 Авг, 22:25 #189 #826693

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

24 Авг, 22:33 #190 #826698

>>826681
Все равно тот же функционал, что есть у IDE ни один саблайм не даст

Ответы>>826701>>826709

24 Авг, 22:37 #191 #826701

>>826698
серьёзно, ты пытаешься устроить срач иде против редакторов в си треде?

24 Авг, 22:43 #192 #826709

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

Ответы>>826723

24 Авг, 22:59 #193 #826723

>>826709
Рефакторинг? Охуенный отладчик и профилировщик? Инкрементальная конпеляция? Edit & Continue? Без этого всего можно жить, но с этим жить приятнее.

Ответы>>826931>>826949

25 Авг, 10:04 #194 #826931

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

могу сказать, что большего говна чем VS я еще не видел, даже clion не таким уебищем кажется.

25 Авг, 10:35 #195 #826949

>>826723
>Рефакторинг?
Есть в clang-analyzere, как и автокомплит и навигация. Тулзы есть для всех редакторов.
>Охуенный отладчик и профилировщик?
GDB, valgrind
>Инкрементальная конпеляция?
Voobshe ohuet. Даже мейк это умеет.
>Edit & Continue?
Спорная фича, но gdb умеет код патчить в рантайме.

Ответы>>826986

25 Авг, 11:12 #196 #826970

>>826875
>>826876
> 2016
> Использовать швабодный софт

Ответы>>826974>>826975

25 Авг, 11:17 #197 #826974

>>826970
Только винда, 1С и дельфи!

25 Авг, 11:19 #198 #826975

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

25 Авг, 11:37 #199 #826986

>>826949
> gdb умеет код патчить в рантайме.
Ох, как же я проиграл.

Алсо, сравнивать GDB с любым отладчиком, у которого есть GUI, просто неприлично. Именно из-за отсутствия нормального отладчика в мире nix люди до сих пор предпочитают отлаживаться printf-ами. GDB хорош только тем, что он есть везде и для всего, ну и ядро отладить еще.

Ответы>>827008>>827015>>827118

25 Авг, 11:58 #200 #827008

>>826986
> у которого есть GUI
у еклипс есть, у куткреатора есть, его к чему угодно можно подключить

25 Авг, 12:11 #201 #827015

>>826986
>люди до сих пор предпочитают отлаживаться printf-ами
Логи - это просто в принципе другой способ отладки, который хождение по брейкпойнтам с отладчиком дополняет. От задачи зависит. Где-то удобнее дамп памяти смотреть, где-то сложную динамику работы отслеживать.
>у которого есть GUI, просто неприлично
Гуй для GDB у всех ИДЕ есть, даже у емакса, плюс у самого GDB встроенный текстовый. Да и консольный режим там довольно удобный.

25 Авг, 16:37 #202 #827118

>>826986
>люди до сих пор предпочитают отлаживаться printf-ами.
Они это делают не из-за того, что с gdb сложно работать, а потому что отладчик - зло, особенно на встраиваемом железе.

25 Авг, 17:07 #203 #827136

Мамкины филолухи, реквестирую перевод с пидерского, есть либа, с инициализацией:
rt = NewRuntime(1024L);
cx =NewContext(rt, 8192);

как перевести runtime? контекст выполнения это понятно, но рантайм?

Ответы>>827137>>827138>>827139

sage 25 Авг, 17:10 #204 #827137

>>827136
https://ru.wikipedia.org/wiki/Среда_выполнения

Ответы>>827140

25 Авг, 17:10 #205 #827138

>>827136
з.ы. как 'окружение'?

25 Авг, 17:11 #206 #827139

>>827136
Мог бы и не скрывать, что речь о JSRuntime идет.

Ответы>>827141>>827142

25 Авг, 17:11 #207 #827140

>>827137
спасибо няша, буду считать
runtime синонимом environment

25 Авг, 17:13 #208 #827141

>>827139
Дергаю спайдерманки за яйцы, просто JS может ввести в заблуждение

25 Авг, 17:14 #209 #827142

>>827139
>JSRuntime
з.ы. и да, я по олдстайлу, типа CreateEnvironment

26 Авг, 13:31 #210 #827682

>>820659 (OP)
> Классика от Отцов:
В чём профит давать ссылку на кривой скан? У меня даже пекарня тормозит при открытии. Неужели в сети нет пдфа с нормальным форматированием?

Ответы>>827744>>827771

68 Кб, 625x414

26 Авг, 13:46 #211 #827705

Чем лучше пользоваться ньюфагу для погромирования контроллеров?
AVR Studio или Bascom-AVR?

26 Авг, 14:37 #212 #827744

>>827682
Профит в том, чтобы лишний раз послушать нытье

sage 26 Авг, 15:07 #213 #827771

>>827682
Возможно, тебе стоит сменить смотрелку pdf.

Ответы>>827795

37 Кб, 703x660

26 Авг, 15:08 #214 #827773

Что это за хуйня?
Где мне взять этот ATmega8515.DAT?

Ответы>>827776

sage 26 Авг, 15:10 #215 #827776

>>827773
Что делает бейсик в этом треде?

Ответы>>827778

26 Авг, 15:11 #216 #827778

>>827776
Мне это в атмегу залить нужно

26 Авг, 15:26 #217 #827795

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

Ответы>>827798

sage 26 Авг, 15:29 #218 #827798

>>827795
Дай ссылку тогда. И удостоверься, что это не одна из многих криво распозанных версий, где l/i/1 перепутаны и некоторых ; нет.

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

Ответы>>827803

26 Авг, 15:36 #219 #827803

>>827798
Лень искать, скину книгу в тред когда приду домой. Ну а ты пока проверь вот это http://www.cypress.com/file/56651/download, у меня вроде такая же. Охуенно, книга лежит на официальном сайте Cypress. Это вообще законно?

Ответы>>827806

26 Авг, 15:39 #220 #827806

>>827803
> http://www.cypress.com/file/56651/download
Фикс

Ответы>>827807

26 Авг, 15:40 #221 #827807

>>827806
Так це ж английская версия.

Ответы>>827811

26 Авг, 15:46 #222 #827811

>>827807
Во-первых, в ОП-посте тоже английская версия, но в хуевом качестве. Во-вторых, не советую быть тупорылым сишником, который не может в английский ибо это - очень печально.

sage 26 Авг, 15:49 #223 #827815

>>823588
> захотел перекатиться на полноценную ide, скачал visual studio 2015
https://connect.microsoft.com/VisualStudio/feedback/details/506745/visual-studio-2008-c-fatal-error-c1020-unexpected-endif всё, что нужно знать про "полноценную" ide

Ответы>>827829>>827832>>827883

45 Кб, 600x578

26 Авг, 16:01 #224 #827829

>>827815
>2008

Ответы>>828048

26 Авг, 16:02 #225 #827832

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

Ответы>>828051

26 Авг, 16:46 #226 #827883

>>827815
Так это же 2к8 версия, а сейчас уже 2к15, а то и 15" используется

Ответы>>828051

sage 26 Авг, 19:49 #227 #828048

>>827829
Нихуя не поменялось, инфа 100%
Это же Microsoft, там обратная совместимость на первом месте. В том числе и по багам.

Ответы>>828051

sage 26 Авг, 19:50 #228 #828051

>>827832
>Ну баг, ну добавят диагностику слегка более вменяемую.
2015-я так же сообщает об unmatched #endif

>>827883
>>828048

26 Авг, 22:52 #229 #828313

>>820659 (OP)
Вот объясните мне, нахуя нужны в линуксе статические библиотеки? В каких слуаях вообще они используются, если приемущества только у динаических? В инете толком про них не пишут.

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

Ответы>>828342>>828351>>828376

sage 26 Авг, 23:11 #230 #828342

>>828313
Можешь грузить статически слинкованные бинарники если ФС с [/usr]/lib не подмонтирована.
Впрочем, от этого давно отказались.

26 Авг, 23:25 #231 #828351

>>828313
закрытый коммерческий код распространяется не только динамически подключаемыми библиотеками, но и статическими библиотеками

27 Авг, 00:01 #232 #828376

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

Ответы>>828379

27 Авг, 00:06 #233 #828379

>>828376
Explain.

Ответы>>828388

27 Авг, 00:25 #234 #828388

>>828379
net, все уже лет как 20 разжевано и объяснено

Ответы>>828389>>828558

sage 27 Авг, 00:27 #235 #828389

>>828388
Ты про фриков, пилящих Plan 9?

Ответы>>828395

27 Авг, 00:32 #236 #828395

>>828389
и они в том числе

27 Авг, 00:57 #237 #828409

>>828402
>>828398
наркоманы, printf %x и %b в Перле все что вам нужно

27 Авг, 02:21 #238 #828453

>>828421
Не нужно срать в треде бампами и однотипными постами, пожалуйста.

27 Авг, 02:30 #239 #828458

>>820659 (OP)
В книге с оппоста такое упражнение. Упражнение 1.16. Перепишите main предыдущей программы так, чтобы она могла печатать самую длинную строку без каких-либо ограничений на её размер. Предыдущая программа из книги: http://ideone.com/wI6z53. Помогите анончики, я озадачен. Пробовал маллоки\риаллоки - ничего не выходит.

Ответы>>828461>>828528

27 Авг, 02:33 #240 #828461

>>828458
>>828458
не сейванул
#include <stdio.h>
#include <stdlib.h>
/ run this program using the console pauser or add your own getch, system("pause") or input loop /
#define SIZE 100

int getline(char s[], int lim){
int c, i;
for(i = 0; i < lim-1 && (c=getchar())!=EOF && c != '\n'; i++){
s=c;
}
if(c=='\n'){
s=c;
++i;
}
s='\0';
return i;
}

void copy(char to[], char from[]){
int i =0;
while((to=from)!='\0') ++i;
}

int main(){
int len;
int max;
char line[SIZE];
char longest[SIZE];
max = 0;
while((len = getline(line, SIZE)) > 0){
if(len > max) {
max = len;
copy(longest, line);
}
}
if(max > 0)
printf("%s", longest);
return 0;
}

27 Авг, 02:33 #240 #828461

>>828458
>>828458
не сейванул
#include <stdio.h>
#include <stdlib.h>
/ run this program using the console pauser or add your own getch, system("pause") or input loop /
#define SIZE 100

int getline(char s[], int lim){
int c, i;
for(i = 0; i < lim-1 && (c=getchar())!=EOF && c != '\n'; i++){
s=c;
}
if(c=='\n'){
s=c;
++i;
}
s='\0';
return i;
}

void copy(char to[], char from[]){
int i =0;
while((to=from)!='\0') ++i;
}

int main(){
int len;
int max;
char line[SIZE];
char longest[SIZE];
max = 0;
while((len = getline(line, SIZE)) > 0){
if(len > max) {
max = len;
copy(longest, line);
}
}
if(max > 0)
printf("%s", longest);
return 0;
}

Показать весь текст

27 Авг, 07:56 #241 #828513

>>828433
На джаве разработку вести гораздо быстрее и легче, чем на С или C++, и это привлекает множество неосиляторов в разработку на этой платформе.

27 Авг, 08:57 #242 #828528

>>828458
В оригинале это упражнение гласит так:
> Revise the main routine of the longest-line program so it will correctly print the
length of arbitrary long input lines, and as much as possible of the text.

Т.е вроде как надо напечатать ТОЛЬКО ДЛИНУ самой большой строки, а не саму строку

Ответы>>828588

27 Авг, 10:50 #243 #828558

>>828388
Мог бы и объяснить ньюфагу. Если лень, хотя б скажи где читать.

27 Авг, 12:05 #244 #828586

Господа, можно ли оценить как-нибудь оценить заранее обьекты каких классов требуют реализации move-операторов?

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

Ответы>>829822

27 Авг, 12:06 #245 #828588

>>828528
> and as much as possible of the text

Ответы>>828651

27 Авг, 12:19 #246 #828596

>>828410
hexdump

27 Авг, 14:06 #247 #828651

>>828588
Как ты это реализовывать собрался? Там же предполагается, что читатель еще не знает ни про указатели, ни про realloc

Ответы>>828690

27 Авг, 14:56 #248 #828690

>>828651
Печатать надо length, а текста столько, сколько получится. Звать getline() в цикле, пока введенная строка не закончится на \n (т.е., не будет введена полностью), длины полученных в этом цикле строк складывать, первый кусок хранить. Никаких маллоков и указателей не нужно при такой постановке задания.

27 Авг, 16:07 #249 #828731

напомните, если гарантия, что размер структуры будет кратен размеру последнего элемента?

Ответы>>828735

27 Авг, 16:13 #250 #828735

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

Ответы>>828757

27 Авг, 16:27 #251 #828750

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

27 Авг, 16:33 #252 #828757

>>828735
чтож, впендюрю _Static_assert . вообще, про компоновку структур в какой главе?

Ответы>>828781

27 Авг, 16:56 #253 #828781

>>828757
> про компоновку структур в какой главе?
По всему стандарту размазано, как обычно. Но вообще, 6.2.6 (Representation of types) и 6.7.2 (Type specifiers).
Алсо, _Static_assert не стоит использовать (как и _Bool, _Complex, _Noreturn и прочие новые имена). Их сделали такими только затем, чтобы не сломать чей-нибудь код своими нововведениями. Подключай <assert.h> и используй нормальный static_assert.

Ответы>>829537

28 Авг, 14:54 #254 #829471

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

28 Авг, 16:05 #255 #829537

>>828781
>6.2.6 (Representation of types)
ебанутая конечно глава, не знал что с99 такой битодрочерский.

28 Авг, 16:26 #256 #829559

в общем, тут статейка небольшая, как собирать под спектрум. но пока нихуя не понял.

http://wischner.blogspot.ru/2014/06/so-you-wanna-be-zx-spectrum-developer.html
http://wischner.blogspot.ru/2014/06/so-you-wanna-be-zx-spectrum-developer_15.html

28 Авг, 16:30 #257 #829565

>>820659 (OP)
Вопрос по FASM.

Возможно ли более адекватно переместить число с плавающей точкой из [var1] в [var2]? Вот мой говнокод:
fld [var1]
fstp [var2]

Ответы>>829829

28 Авг, 16:55 #258 #829589

всем, конечно, похуй. но вот нормальная статейка: http://www.cpcmania.com/Docs/Programming/Introduction_to_programming_in_SDCC_Compiling_and_testing_a_Hello_World.htm , а прошлая про запуск из под какой-то там ос...

28 Авг, 17:50 #259 #829609

>>829590
>почему сишечку не заменил
потому что нет компиляторов.

28 Авг, 19:20 #260 #829706

Использую студию 2015 для компиляции сишного кода. Задал точку входа 0x02000000, но получаю ошибку: "0x02000000" is an invalid value for the "FixedBaseAddress"

Почему так? Как задать нестандартную точку входа, чтобы оставить место ниже?

Ответы>>829707>>829709

28 Авг, 19:21 #261 #829707

>>829706
Не то сказал. Я задал базовый адрес 0x02000000, а не точку входа.

Ответы>>829709

28 Авг, 19:26 #262 #829709

>>829706
>>829707
Разобрался.
Блять, как сделать исполняемый файл не 7 кб, а 1.5? Оптимизатор настроил на уменьшение размера, отключил исключения, смержил секции данных, отключил манифест и стэк канарис, отключил дебаг инфо и убрал релоки.

Как еще можно выебать бинарник?

Ответы>>829829

28 Авг, 19:29 #263 #829712

Сосоны, зачекайте, я тетрис на sdl сделал.
Делал под шиндошсом в mingw, но у красноглазиков может тоже скомпилиться.
У кого запустится/не запустится - отпишитесь.
Вишмастеров нету, бля буду.
http://rgho.st/64H2jkvBg

Ответы>>829752>>829757>>829789

28 Авг, 20:21 #264 #829752

>>829712
За музыку лойс

sage 28 Авг, 20:26 #265 #829757

>>829712
> .o .exe вместе с сорцами
Поссал на тебя

Ответы>>829812

28 Авг, 20:54 #266 #829789

>>829712
> я тетрис сделал
ты опоздал на 30 лет

28 Авг, 21:07 #267 #829812

>>829757
Это специально для виндозников, у которых не стоит gcc.

Ответы>>829815

sage 28 Авг, 21:08 #268 #829815

>>829812
Объектники им зачем?

Ответы>>829817

28 Авг, 21:10 #269 #829817

>>829815
от сборки остались же

28 Авг, 21:20 #270 #829822

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

28 Авг, 21:27 #271 #829829

>>829565
Одинарную точность можно вообще таскать обычным mov через обычные регистры. Двойную тоже можно, но уже возникает вопрос, нахуя.

>>829709
Рантайм статический? Возьми дизасм и посмотри, чего там компилятор напихал.

Ответы>>829975

28 Авг, 22:06 #272 #829861

Есть ли смысл постигать ASM с более игрушечных архитектур, а не с 32битой? Или сразу с головой? Или от человека зависит? И нахуя я вообще это спрашиваю, взял да попробовал

Ответы>>830171>>830177

28 Авг, 23:59 #273 #829975

>>829829
>Рантайм статический?
Отключил его. Кстати, если я убрал CRT, и сишные библиотеки теперь не инициализаруются при запуске программы, можно ли использовать функции стандартной библиотеки си, или без рантайма можно использовать только WIN API, в котором и так все нужное есть?

Ответы>>829994

29 Авг, 00:27 #274 #829994

>>829975
> можно ли использовать функции стандартной библиотеки си
Как ты сам сказал, они не инициализируются, поэтому не стоит. Если очень хочется, можно сходить в дизасм и исходники CRT и посмотреть, чему нужна инициализация, а чем нет. Но зачем тебе вообще этот дроч на размер?

Ответы>>830002

29 Авг, 00:47 #275 #830002

>>829994
>CRT и посмотреть, чему нужна инициализация
а чего там инициализируется то? хотя-бы примерно.

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

Ответы>>830013

29 Авг, 01:07 #276 #830013

>>830002
Куча, локаль (ctype, в частности), stdint/stdout/stderr, tls.
> зависит от реализации
Да, даже от конкретной версии библиотеки. Но можно проверить, например, что memcpy не требует (или требует, например, если копирует через SSE) инициализации.

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

Ответы>>830023>>830228

29 Авг, 01:21 #277 #830023

>>830013
может он хочет максимально минимализировать чтобы выиграть в спец олимпиаде, но тогда, наверно, нужно основу написать на ассемблере, а остальное линковать из ц/чегоещё. или как?

29 Авг, 04:10 #278 #830057

void
reverse(char str[], int size){
int right = size - 2;
int left;
int el;

for(left = 0; left != right || left + 1 != right; right--, left++){
el = str[left];
str[left] = str[right];
str[right] = el;
}
str[size+1]='\0';
printf("%s", str);
}

int
main(void){
char string[100];
int stream, index = 0;

while((stream = getchar())!=EOF){
if(stream == '\n') {
string[index++] = stream;
break;
}
string[index] = stream;
index++;
}

reverse(string, index);

return 0;
}

возникает ошибка при любом вводе в строчке el = str[left]; разобраться в чем проблема не могу уже 2-й час. когда дебажу выдает sigsegv, то есть я обращаюсь к несуществующему месту.

29 Авг, 04:10 #278 #830057

void
reverse(char str[], int size){
int right = size - 2;
int left;
int el;

for(left = 0; left != right || left + 1 != right; right--, left++){
el = str[left];
str[left] = str[right];
str[right] = el;
}
str[size+1]='\0';
printf("%s", str);
}

int
main(void){
char string[100];
int stream, index = 0;

while((stream = getchar())!=EOF){
if(stream == '\n') {
string[index++] = stream;
break;
}
string[index] = stream;
index++;
}

reverse(string, index);

return 0;
}

возникает ошибка при любом вводе в строчке el = str[left]; разобраться в чем проблема не могу уже 2-й час. когда дебажу выдает sigsegv, то есть я обращаюсь к несуществующему месту.

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

29 Авг, 11:22 #279 #830171

>>829861
>Есть ли смысл постигать ASM с более игрушечных архитектур, а не с 32битой
как появится время, очень хочу вкатится в arm, купить миникампутер за $10 и исследовать эту божественную архитектуру с запилом своей ос. x86 считаю сраным уебищем не достойным благородного дона.

Ответы>>830273

29 Авг, 11:28 #280 #830177

>>829861
>Есть ли смысл постигать ASM с более игрушечных архитектур, а не с 32битой?
Его и есть смысл постигать ТОЛЬКО для игрушечных архитектур если ты не собираешься заниматься реверс инжинирингом или ковыряться в ведре.

Ответы>>830179>>830274

29 Авг, 11:30 #281 #830179

>>830177
>ковыряться в ведре.

Речь об андроиде?

Ответы>>830181

29 Авг, 11:32 #282 #830181

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

Ответы>>830195

29 Авг, 11:45 #283 #830195

>>830181
А, понятно

29 Авг, 12:14 #284 #830216

Что, кто-то до сих пор на этом динозавре - "С" программирует?

До первой отсутствующей библиотеки, наверное.

Мама, смотри скорее? я драйвер к своей Ардуино-машинке написал в свои 30 лет, теперь я крутой кулцхакер, божешь ты мой.

Ладно хоть среди вас нет мудаков, которые учат АСМ и Аду.

Через 5 лет, когда Линус уйдёт из проекта, Linux перепишут на плюсах.

Ответы>>830218>>830242

29 Авг, 12:15 #285 #830218

>>830216
слишком толсто попробуйте потоньше

Ответы>>830227

29 Авг, 12:28 #286 #830227

>>830218
посоны, а на моём 386 си пойдёт?

Ответы>>830304

29 Авг, 12:29 #287 #830228

>>830013
>Я вообще не понимаю, нахуя анону это нужно
>маленький размер
>win api
Кажется, я догадался, чего хочет тот анон. Поесть говна

29 Авг, 12:50 #288 #830242

>>830216
говноед уходи

Ответы>>830253

29 Авг, 13:05 #289 #830253

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

Ответы>>830300

29 Авг, 13:51 #290 #830273

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

Ответы>>830299

29 Авг, 13:52 #291 #830274

>>830177
Ну тогда мне он не особо нужен. Хотя я с прицелом как раз на RE и ковыряние, и видел сайт CTF подобный, где играешься с MIPS архитектурой

29 Авг, 14:02 #292 #830280

>>830057
> left != right || left + 1 != right
Попробуй прогнать свой цикл в уме на строке из двух символов тебе нужно было всего лишь сказать left < right.

Ответы>>830293>>830762

29 Авг, 14:18 #293 #830293

>>830280
right > left

Ответы>>830345

29 Авг, 14:21 #294 #830299

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

Ответы>>830310>>830363

29 Авг, 14:22 #295 #830300

>>830253
теперь ты можешь уходить

29 Авг, 14:26 #296 #830304

>>830227
>да что уж, весь эмбедед.
Смею тебя разочаровать, но с ассемблером сейчас ебутся только упоротые пердуинщики и бородатые дядьки на проектах 30-летней давности.

Ответы>>830309>>830310>>830315>>830443

29 Авг, 14:29 #297 #830309

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

Ответы>>830311

29 Авг, 14:30 #298 #830310

>>830304
>>830299
Промахнулся

29 Авг, 14:31 #299 #830311

>>830309
Ну ебись, жи, нито же не говорит, что это плохо.

Ответы>>830315

29 Авг, 14:32 #300 #830315

>>830311
вот этот чета >>830304 выебуется

424 Кб, 838x1200

C Primier Plus 29 Авг, 14:49 #301 #830330

Двач хочу купить пикрил. Стоит ли?

Ответы>>830334>>830364

29 Авг, 14:50 #302 #830334

>>830330
это не читал, но прата ахуенен

29 Авг, 14:59 #303 #830345

>>830293
Там условие продолжение цикла, а не прекращения.

29 Авг, 15:13 #304 #830363

>>830299
Да, ты прав. И в сфере ИБ опять же есть что ловить

29 Авг, 15:13 #305 #830364

>>830330
Покупай, мне очень понравилась книга

29 Авг, 16:30 #306 #830442

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

Ответы>>830445

29 Авг, 16:31 #307 #830443

>>830304
Ардуино же на сишке не?

Ответы>>830447

29 Авг, 16:33 #308 #830445

>>830442
Зачем? Для личных проектов есть щитбакет битбакет.

29 Авг, 16:37 #309 #830447

>>830443
ядро да, а сверху обмазано движком явы, который тоже на с, сверху уже ява

Ответы>>830460

2 Кб, 150x110

29 Авг, 16:40 #310 #830451

https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms680341(v=vs.85).aspx

Для чего здесь union? Выглядит так, как будто PhysicalAddress и VirtualSize - два отдельных поля с разными значениями, к которым можно обращаться, но union работает как на пикче: то есть одни и те же данные могут интерпретироваться как char или как int.

Ответы>>830536

29 Авг, 16:48 #311 #830460

>>830447
Ты не про андроид говоришь? Ардуино же это просто микроконтроллер с приблудами

Ответы>>830468

29 Авг, 16:58 #312 #830468

>>830460
ну дя, там полноценный линух стоит

29 Авг, 17:48 #313 #830519

Какие еще арм? У вас что, есть настроение заниматься этим без тяночки?

Ответы>>830545>>831000

29 Авг, 18:16 #314 #830536

>>830451
Не обращай внимания, особенности спеки. Вариант .Misc.PhysicalAddr не используется, и в 100% случаев тебя будет интересовать .Misc.VirtualSize.

29 Авг, 18:43 #315 #830545

>>830519
тянучки нинужны

29 Авг, 21:47 #316 #830762

>>830280
sudo cat /dev/null > *

111 Кб, 1681x1050

30 Авг, 06:33 #317 #830949

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

30 Авг, 09:14 #318 #831000

>>830519
ю кэн ду зис айзер виз йо арм ор виз йо герл

MINGW vs MSVC 30 Авг, 11:31 #319 #831058

Ставлю QtCreator для программирования на няшной. Что будет лучше для этого mingw ли msvc?

Ответы>>831060

30 Авг, 11:34 #320 #831060

>>831058
mingw ставь, там пердолиться можно

Ответы>>831062>>831097

30 Авг, 11:35 #321 #831062

>>831060
А может вместо Qt поставить VS?

Ответы>>831064

30 Авг, 11:39 #322 #831064

>>831062
не соси хуй мелкософту, братан

Ответы>>831097

30 Авг, 12:09 #323 #831097

>>831060
>>831064
Я решил что мне нужен С11, а он есть только в MinGW?

Ответы>>831100

30 Авг, 12:11 #324 #831100

>>831097
В mingw он точно есть, насчёт остального не ебу.

30 Авг, 16:23 #325 #831290

Подскажите, пожалуйста. Должен добавляться символ в массив.

char params[11];

Так работает:

char buffer2;
buffer2 = (mode & 0x100) ? "r" : "-";
param[0] = buffer2;

но так нет:
param[0] = (char*)((mode & 0x100) ? "r" : "-");

т.е. работает через буфер, но как сделать чтобы его не было?

Ответы>>831292>>831293

30 Авг, 16:25 #326 #831292

>>831290
Символы в одинарных кавычках.

Ответы>>831296

30 Авг, 16:26 #327 #831293

>>831290
звездочки пропали заменю на "@".
char params[11];

Так работает:

char @buffer2;
buffer2 = (mode & 0x100) ? "r" : "-";
param[0] = @buffer2;

но так нет:
param[0] = (char@)((mode & 0x100) ? "r" : "-");

т.е. работает через буфер, но как сделать чтобы его не было?

Ответы>>831294

30 Авг, 16:28 #328 #831294

>>831293
Оно не должно работать в обоих случаях. Ты пишешь младший байт адреса строки в param[0], это вряд ли то, чего ты хочешь. Алсо, компилируй с -Wall /W2 или как там у тебя предупреждения включаются, тогда компилятор сразу пояснит тебе, что ты не прав.

Ответы>>831296>>831297

30 Авг, 16:31 #329 #831296

>>831292
Спасибо за оперативный ответ!
>>831294
Но так работает же:
params[0] = (mode & 0x100) ? 'r' : '-';

Ответы>>831297>>831306

30 Авг, 16:31 #330 #831297

>>831296
>>831294
Ну, и первый случай тоже работал.

30 Авг, 16:44 #331 #831306

>>831296
Именно так и должно работать. 'r' - один char, содержащий код символа r. "r" - адрес массива символов, и сработать такое могло лишь случайно (ну или разве что вот так *((mode & 0x100) ? "r" : "-")).

Ответы>>831374

30 Авг, 18:21 #332 #831374

>>831306
Теперь понял разницу. Спасибо.

30 Авг, 19:54 #333 #831436

Двощ, помоги.
Хочу скопировать один массив в другой но на выходе получаю херню.
Что я делаю не так?
http://ideone.com/wCjW9s

Ответы>>831447

30 Авг, 20:10 #334 #831447

>>831436
У тебя len 3, значит он копирует только 3 байта. Нужно 12

30 Авг, 23:16 #335 #831613

>>820659 (OP)
Есть вопрос.
Функция выводит херню из списка (в задании, сказано, есть ошибка):

char ✱item_data(const list_t ✱list)
{
char buf[12];
sprintf(buf, "%d", list->data);
return buf;
}

Почитал инет, там советуют:
http://stackoverflow.com/questions/12380758/c-error-function-returns-address-of-local-variable

Т.е. для Buf выделить память.
char buf = malloc (sizeof (char) 12);

Дальше там говорится как только не нужна buf - выполни free().
>Also note that, it is a good practice that after you have done with the allocated memory block, free it to save from memory leaks. Once you free the memory, you can't access that block again.
А как его очистить-то если я ушел уже оттуда? И где-то посреди кода возвратил пару раз item_data?

Ответы>>831616>>831617

30 Авг, 23:25 #336 #831616

>>831613
Так это вызывающий должен делать free, не ты. То есть, он зделол data = item_data(somelist); do_something_with(data); ну и делает free(data) потом, когда data ему больше не нужно. Можешь free() обернуть в какое-нибудь item_data_free(), это во-первых, избавит пользователя от раздумий, как очищать (и надо ли), во-вторых, позволит перекатиться с дефолтовой кучи на что-то кастомное, а в-третьих, позволит тебе делать какую-нибудь очистку, если data - не просто массив байтов, а какая-нибудь сложная структура.

sage 30 Авг, 23:26 #337 #831617

>>831613
Алсо, передай тому, кто научил тебя писать list_t, что он мудак.

Ответы>>831628

30 Авг, 23:35 #338 #831626

Господа, вот таким кодом я заменил функции memcpy и memset, которые вызывает компилятор: https://ideone.com/JDATly

Я выкинул CRT и уменьшил бинарник до 1.5 кб. Главный файл выглядит так: https://ideone.com/gKkKLF

Функции memset и memcpy определены в win32_crt_memory.h. Этот файл подключен в хедере pe_inject.h. Хедер pe_inject.h подключен в main.cpp. Я получил ошибку:

pe_inject.obj : error LNK2005: _memcpy already defined in main.obj
1>pe_inject.obj : error LNK2005: _memset already defined in main.obj
1>fatal error LNK1169: one or more multiply defined symbols found

В чем тут проблема? Почему функции УЖЕ ОПРЕДЕЛЕНЫ, если я использовал #pragma once или хедер гвард?

Ответы>>831631

30 Авг, 23:37 #339 #831628

>>831617
Ну, извините, задание такое дали.
typedef struct list_s
{
struct list_s✱ next;
int data;
} list_t;
Вот этот мужик еще рассказывает почему так надо делать.
https://www.youtube.com/watch?v=XmuZ_U_GLYY

Ну, или объясни ты, почему так нельзя?
А то 1000 мнений вокруг и все правильные.

Вот смотри, по поводу free.
вот я сделал функцию, например.
char ✱item_data(const list_t ✱list)
{
char ✱buf = malloc (sizeof (char) ✱ 12);
sprintf(buf, "%d", list->data);
return buf;
}
как мне сделать так чтобы она и возвращала, и очищалась?
Я вот этого не пойму.
Ну пример я возвратил, да? Т.е. ложить(или класть, хз) в переменную и вместе с переменной его free?
Т.е. на живом примере:
char✱ data = item_data(head);
printf("text %s \r\n\r\n", data);
free(data);
Это и всё?

30 Авг, 23:37 #339 #831628

>>831617
Ну, извините, задание такое дали.
typedef struct list_s
{
struct list_s✱ next;
int data;
} list_t;
Вот этот мужик еще рассказывает почему так надо делать.
https://www.youtube.com/watch?v=XmuZ_U_GLYY

Ну, или объясни ты, почему так нельзя?
А то 1000 мнений вокруг и все правильные.

Вот смотри, по поводу free.
вот я сделал функцию, например.
char ✱item_data(const list_t ✱list)
{
char ✱buf = malloc (sizeof (char) ✱ 12);
sprintf(buf, "%d", list->data);
return buf;
}
как мне сделать так чтобы она и возвращала, и очищалась?
Я вот этого не пойму.
Ну пример я возвратил, да? Т.е. ложить(или класть, хз) в переменную и вместе с переменной его free?
Т.е. на живом примере:
char✱ data = item_data(head);
printf("text %s \r\n\r\n", data);
free(data);
Это и всё?

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

30 Авг, 23:46 #340 #831631

>>831626
> Ну, или объясни ты, почему так нельзя?
Потому что _t зарезервированный суффикс в POSIX, но на это похуй. А на что не похуй, так это на то, что: 1) есть IDE, которые тебе и так скажут, чем является идентификатор; 2) переменную от типа можно отличить по контексту, нет смысла повторять это в имени (посмотри сюда http://ideone.com/u7ifNQ ).

> как мне сделать так чтобы она и возвращала, и очищалась?
Вот у тебя в конце поста все правильно сделано.

>>831626
Покажи, как компилируешь и линкуешь?

Ответы>>831638>>831639>>831645

30 Авг, 23:47 #341 #831633

>>831628
> Ну, или объясни ты, почему так нельзя?
всё можно, всегда так делаю.

> Это и всё?
ну вариантов есть несколько, или вот так, по кривому, или передавать уже выделенную тобой память в функцию, и тут 2 варианта, если размер не высчитывается до рантайма: сделать функцию которая вернёт необходимое число памяти, либо передавать указатель на память вместе с размером, и если в функции не хватит - возвратить ошибку.

Ответы>>831645>>831652

30 Авг, 23:57 #342 #831638

>>831631
> pe_inject.h
осторожна с хакиром.

30 Авг, 23:57 #343 #831639

>>831631
>Покажи, как компилируешь и линкуешь?
Блять, из какого файла проекта выдирать эти опции? Ладно, перечислю, что я настроил:

Оптимизация: O1

Code generation:
Отключены исключения C++
Security Check: disable

Линкер:
Отключил манифест
Отключил дебаг инфо
Точка входа WinMain
Randomize Base Address выключил

Конфиг
https://ideone.com/Jq0W1w

Ответы>>831640>>831644

30 Авг, 23:58 #344 #831640

>>831639
иди ты нахуй, короч)

Ответы>>831643

39 Кб, 800x450

30 Авг, 23:59 #345 #831643

>>831640

31 Авг, 00:02 #346 #831644

>>831639
Если это студия, там в свойствах проекта можно командную строку результирующую посмотреть. Где nodefaultlib (/Zl) у компилятора? Где выключенный инлайн (/Ob0 вроде)? И оптимизации временно выключи.

Ответы>>831646>>831656

31 Авг, 00:02 #347 #831645

>>831633
>>831631
Говорите оба полные противоположности друг другу, но ладно, всё приму к сведению, и буду искать лучший вариант. Спасибо!

Ответы>>831647

sage 31 Авг, 00:03 #348 #831646

>>831644
Не заметил проект. Вот <IntrinsicFunctions>true</IntrinsicFunctions> еще.

31 Авг, 00:06 #349 #831647

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

Ответы>>831652>>831653

31 Авг, 00:13 #350 #831652

>>831647
Он про суффиксы у типов, наверное. А что касается item_data - да, тут >>831633 ты все правильно расписал.

Ответы>>831655

31 Авг, 00:14 #351 #831653

>>831647
> или передавать уже выделенную тобой память в функцию,
Т.е. если я передам выделенную память в функцию, как же её тогда потом очистить, например я напрямую передал в printf? Или нужно сделать функцию с printf и в ней же в конце по указателю выполнять free?
Я правильно понимаю что если был выполнен malloc, то дальше для высвобождения памяти используется только free, "само" ничего не будет?

31 Авг, 00:16 #352 #831655

>>831652
>Он про суффиксы у типов, наверное.
Да, про них в большей степени, но и как бы ты говоришь что "так правильно", а он говорит "вариант кривой".

Ответы>>831661

31 Авг, 00:17 #353 #831656

>>831644
>Где nodefaultlib (/Zl) у компилятора? Где выключенный инлайн (/Ob0 вроде)? И оптимизации временно выключи
Сделал.
>Вот<IntrinsicFunctions>true</IntrinsicFunctions> еще
Выставил false. Ошибка та же самая.

https://ideone.com/12zlSO

Ответы>>831661

31 Авг, 00:31 #354 #831661

>>831656
А, так у тебя два файла: main.cpp и pe_inject.cpp #pragma once влияет на тот файл, куда подключен хедер (т.е., хедер #include-ится не более одного раза). Твои два .cpp компилируются в два .obj, и из обоих торчат одинаковые функции. Линкер про препроцессор и #pragma once не знает вообще ничего. Сделай функции static (inline?), или вынеси в mylib.cpp, а в хедере оставь только декларации.

>>831655
Кривой вариант - это он про выделение памяти в функции. То есть, можно:
char ✱item_data(const list_t ✱list)
{
char ✱buf = malloc (sizeof(char) ✱ 12);
sprintf(buf, "%d", list->data);
return buf;
}

char ✱data = item_data(list);
printf("%s\n", data);
free(data);

а можно

void item_data(const list_t ✱list, char ✱dest, size_t length)
{
snprintf(dest, length, "%d", list->data);
}

char buffer[12];
item_data(list, buffer, sizeof(buffer));
printf("%s\n", buffer);

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

31 Авг, 00:31 #354 #831661

>>831656
А, так у тебя два файла: main.cpp и pe_inject.cpp #pragma once влияет на тот файл, куда подключен хедер (т.е., хедер #include-ится не более одного раза). Твои два .cpp компилируются в два .obj, и из обоих торчат одинаковые функции. Линкер про препроцессор и #pragma once не знает вообще ничего. Сделай функции static (inline?), или вынеси в mylib.cpp, а в хедере оставь только декларации.

>>831655
Кривой вариант - это он про выделение памяти в функции. То есть, можно:
char ✱item_data(const list_t ✱list)
{
char ✱buf = malloc (sizeof(char) ✱ 12);
sprintf(buf, "%d", list->data);
return buf;
}

char ✱data = item_data(list);
printf("%s\n", data);
free(data);

а можно

void item_data(const list_t ✱list, char ✱dest, size_t length)
{
snprintf(dest, length, "%d", list->data);
}

char buffer[12];
item_data(list, buffer, sizeof(buffer));
printf("%s\n", buffer);

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

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

31 Авг, 00:49 #355 #831666

>>831661
Понял, спасибо за подробное разъяснение!

31 Авг, 22:15 #356 #832388

Опять я пришел со своими списками, подскажите, правильно ли я делаю?
void remove_next_from_list(list_t item) {
list_t tempList = item->next; //создаем промежуточное звено
if (item->next) { //если есть следующий элемент
item->next = item->next->next; //замещаем
free(tempList); //старый удаляем

}
}

было так:

void remove_next_from_list(list_t *item) {
if (item->next) {
free(item->next);
item->next = item->next->next;
}
}

Ответы>>832389

31 Авг, 22:17 #357 #832389

>>832388
Опять я пришел со своими списками, подскажите, правильно ли я делаю?
void remove_next_from_list(list_t ✱item) {
list_t ✱tempList = item->next; //создаем промежуточное звено
if (item->next) { //если есть следующий элемент
item->next = item->next->next; //замещаем
free(tempList); //старый удаляем

}
}

было так:

void remove_next_from_list(list_t ✱item) {
if (item->next) {
free(item->next);
item->next = item->next->next;
}
}

Блин, забываю про эти звездочки.

Ответы>>832393

31 Авг, 22:20 #358 #832393

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

Ответы>>832481

31 Авг, 23:38 #359 #832481

>>832393
Понял, спасибо.

01 Сен, 18:26 #360 #832927

Няши-сисяши, реквестирую годный справочник по стандартной библиотеке с поиском и примерами типа -> http://www.cplusplus.com/

Ответы>>832932

01 Сен, 18:29 #361 #832932

>>832927
Во-первых, для сишечки тоже можно читать по твоей ссылке (stdio.h -> cstdio и т. п.). Во-вторых, есть всякие dash и zeal, хоть там и нет примеров.

Ответы>>832944

01 Сен, 18:39 #362 #832944

>>832932
после того, как я не нашел strcasecmp, мне этот ресурс показался пидерским.

Ответы>>832962

01 Сен, 18:56 #363 #832962

>>832944
> не нашел strcasecmp
Это все потому, что в Си внезапно нет strcasecmp. Она из посих.

Ответы>>832969

01 Сен, 19:09 #364 #832969

>>832962
>Она из посих
ебанутся и чо теперь, в какомнибуть микросовтовской поставке ее может не быть?

Ответы>>832987

36 Кб, 1029x523

4 Кб, 750x71

01 Сен, 19:30 #365 #832987

>>832969
> ее может не быть?
Может и не быть. Выбор за тобой.

Ответы>>833002>>833049

01 Сен, 19:48 #366 #833002

>>832987
strings.h жеж

01 Сен, 19:49 #367 #833006

з.ы. у мелкопидоров как всегда, лол:

#if defined(_WIN32) || defined(_WIN64)
#define snprintf _snprintf
#define vsnprintf _vsnprintf
#define strcasecmp _stricmp
#define strncasecmp _strnicmp
#endif

Ответы>>833021>>833023

01 Сен, 19:56 #368 #833021

>>833006
И в чем лол?

Ответы>>833039

01 Сен, 19:57 #369 #833023

>>833006
> у мелкопидоров как всегда
Что, серьезно? Пидоры! Насколько я помню, их _snprintf отличается поведением! Это в какой версии так? Затести, пожалуйста, вот это: http://ideone.com/mmzxxF

Ответы>>833046

01 Сен, 20:03 #370 #833039

>>833021
_свойособенныйпуть

Ответы>>833049

01 Сен, 20:05 #371 #833046

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

01 Сен, 20:07 #372 #833049

>>833039
Этот путь явно описан в стандарте: негоже компилятору засорять своими именами стандартные хедеры. А вот с префиксом _ можно. И даже >>832987 гцц, если его попросить работать по стандарту, без GNU-говна, знает про это.

Ответы>>833163

01 Сен, 21:19 #373 #833159

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

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

Ответы>>833166>>833171

01 Сен, 21:22 #374 #833163

>>833049
давай еще вЕрбЛюдОсТайЛ потащим в стандартную либу

01 Сен, 21:26 #375 #833166

>>833159
readdir и прочие из POSIX, но как видишь у мелкопидоров свой путь.

01 Сен, 21:30 #376 #833171

>>833159
> без CRT при помощи функций сишкой библиотеки
Поделил на ноль.

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

01 Сен, 21:45 #377 #833180

https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa364428(v=vs.85).aspx

Как эта функция работает? Если возвращается BOOL, то как можно различать ненулевые значения? У меня сравнение с ERROR_NO_MORE_FILES вообще выдает ошибку "несовместимый тип".

Return value

If the function succeeds, the return value is nonzero and the lpFindFileData parameter contains information about the next file or directory found.

If the function fails, the return value is zero and the contents of lpFindFileData are indeterminate. To get extended error information, call the GetLastError function.

If the function fails because no more matching files can be found, the GetLastError function returns ERROR_NO_MORE_FILES.

Ответы>>833181>>833182

sage 01 Сен, 21:48 #378 #833181

>>833180
>Если возвращается BOOL, то как можно различать ненулевые значения?
Ненужно различать, всё, что не ноль — истина.
> У меня сравнение с ERROR_NO_MORE_FILES вообще выдает ошибку "несовместимый тип".
Потому что ERROR_NO_MORE_FILES возвращает функция GetLastError()

01 Сен, 21:51 #379 #833182

>>833180
Забей на ERROR_NO_MORE_FILES. Тебе ли не похуй, почему оно тебе не хочет больше файлов выдавать?

11 Кб, 549x65

02 Сен, 03:58 #380 #833333

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

Ответы>>833335>>833338>>833455

02 Сен, 04:15 #381 #833335

>>833333
Ну вот смотри, у тебя есть примерно такой текст: http://ideone.com/jkT4kG, в нем текст отформатирован пробелами. Твоя задача - "сжать" его таким образом, чтобы он занимал меньше байтов, но выглядел точно так же. Т.е., второе слово в первой строке начинается в позиции 9 (считая с 1), и, если ширина одного символа табуляции = 8, то четыре пробела вторым словом можно заменить на один '\t'. И так далее. Ищешь табстопы, втыкаешь табы. Печатать надо сначала входной текст, а потом получившийся текст, чтобы убедиться, что они выглядят абсолютно идентично. Ну и счетчик сэкономленных байтиков заведи до кучи.

02 Сен, 05:10 #382 #833338

>>833333
> заменять пробелы смесью табов и пробелов
Нет, спасибо.

Ответы>>833339

02 Сен, 05:12 #383 #833339

>>833338
Это учебное задание, хотя во времена DOS некоторые такое извращение практиковали.

02 Сен, 12:38 #384 #833455

>>833333
похоже на задание из рассейского вузика, такое же ебануто-беспощадное. автор то и не знает, что таб может и как 1500 пробелов отображаться

Ответы>>833476

sage 02 Сен, 13:22 #385 #833476

>>833455
>автор то и не знает, что таб может и как 1500 пробелов отображаться
Автор знает. А вот ты ещё читать не научился, а уже тявкаешь тут.

Ответы>>833479

02 Сен, 13:28 #386 #833479

>>833476
> А вот ты ещё читать не научился
ну так и переведи с пидерскопреподского на нормальный, че там афтор хочет то? с примером желательно.

Ответы>>833515

02 Сен, 14:07 #387 #833515

>>833479
Что такое "стопы табуляции" тебе не ясно? Тогда пойди погугли и больше не выебывайся с тупыми вопросами.

Ответы>>833524

02 Сен, 14:26 #388 #833524

>>833515
иди сам гугли, мне задачки для пидеров нинужны

02 Сен, 14:41 #389 #833529

Нужно перечислить все имеющиеся в системе файлы при помощи win api и сделать некоторое преобразование файлов, у которых расширения принадлежат заданному списку. Обход дерева каталогов сделал. Какие файлы нельзя преобразовывать? Открытые и запущенные? Системные и скрытые? Как проверить, что никаких действий с файлом сделать нельзя? Как преобразовать не открытый и не запущенный файл, если какие-то его флаги не позволяют преобразование (кстати, какие?)?

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

Ответы>>833552

02 Сен, 15:22 #390 #833552

>>833529
>Как можно эффективно проверить, что файл имеет расширение из списка, не итерируя по списку расширений?

И еще вопрос. Мне нужно копировать текущий файл в файл с таким же именем, к которому добавлено расширение .tmp. Как это сделать эффективно?

Сначала я хотел поступить так: запоминаю указатель на нулевой завершающий байт и делаю lstrcat(file, ".tmp"), создаю файл с новым именем функцией CreateFile и копирую в него данные. После этого по указателю на нулевой байт присваиваю 0 и отсекаю расширение .tmp. Далее удаляю исходный файл и переименовываю новым.

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

При обходе дерева каталогов переполнения стека из-за этого не будет? Как сделать эти операции эффективнее? В том числе хочу сократить время на работу со строками. Мне нужно OCHE БЫСТРО.

Ответы>>833636>>834316

02 Сен, 15:31 #391 #833560

Есть кто в треде?

Ответы>>833589

02 Сен, 15:57 #392 #833589

>>833560
Есть

02 Сен, 17:01 #393 #833636

>>833552
>Мне нужно OCHE БЫСТРО
5000 рублей

02 Сен, 18:33 #394 #833747

Нужна небольшая помощь по СИ, есть тут кто нибудь сейчас?

Ответы>>833751

sage 02 Сен, 18:37 #395 #833751

>>833747
Я.

Ответы>>833842

02 Сен, 20:25 #396 #833842

>>833751
Блл, опять пару мин подождал и отошел
Ты тут ещё?

02 Сен, 22:13 #397 #833990

У меня есть хэш в виде 4-байтового числа. Как при помощи win api записать его в файл в виде последовательности из четырех байт? wsprintf с форматной строкой %c это ведь не то?

Ответы>>833992

02 Сен, 22:15 #398 #833992

>>833990
Внезапно, WriteFile(..., &твойхэш, sizeof(твойхэш), ...). Надеюсь, ты не тот пидор, который пилит криптор.

Ответы>>834002

02 Сен, 22:31 #399 #834002

>>833992
>Надеюсь, ты не тот пидор, который пилит криптор
Нет, что ты.

03 Сен, 04:41 #400 #834109

C - филиал win api. мда.

Ответы>>834489

03 Сен, 09:55 #401 #834160

>>820659 (OP)
Почему в ОП-посте нет ссылки на скачивание?

Ответы>>834161

03 Сен, 09:56 #402 #834161

>>834160
В гугле только всякую парашу нахожу
Сорян, я новичок тут просто
Буду благодарен если кинете ссылку на Си

Dmitry 03 Сен, 13:27 #403 #834314

>>820708
Двачую.

Аноны а почему в C нет for ( var n in array )?
В плюсах вроде тоже нет, хотя там оно как раз еще больше нужно.
Если хочу работать с целым массивом то удобно и можно так реализовать чтобы меньше циклов тратило.

Ответы>>834319>>834490

Dmitry 03 Сен, 13:28 #404 #834316

>>833552
Bash

03 Сен, 13:30 #405 #834319

>>834314
> В плюсах вроде тоже нет
Уже есть.

Ответы>>834336

Dmitry 03 Сен, 13:41 #406 #834333

В какой ОС вы работаете?
Какая у вас графическая оболочка?
В с++ треде много шиндовс-рабов, без понятия как там работать можно, композитный оконный менеджер, куча дерьма в автозагрузке, нет нормальной консоли, нет по людски сделаного софта, только хуйня с кнопкой 'сделать заебись', нет мануалов, нихера нет.
Много кому и графическая оболочка то ненужна, только tmux, в GNU/Linux сейчас уже избавились от старого дисплей сервера - Xorg, заменили на Wayland display server protocol.
Новые тайловые и композитные менеджеры теперь очень легкие, используется простой API, какая-нибудь графическая библиотека и ничего лишнего.
Но смущает что на него не очень то быстро переходят, уже около 20 разных графических оболочек создано, но над многими работа идет весьма медлено.
Вы тайлами пользуетесь или чем?
Мне DWM нравился, но устарел, сейчас на Weston, надо на Velox перекатится.

Вы код только для работы пишете?

Ответы>>834337>>834367>>834411>>834491

Dmitry 03 Сен, 13:43 #407 #834336

>>834319
Ну конечно, там много способов использования, а в сишке кроме массивов где подобный функционал пригодится?

03 Сен, 13:44 #408 #834337

>>834333
> В какой ОС вы работаете?
> Какая у вас графическая оболочка?
OS X разумеется.

Ответы>>834347

Dmitry 03 Сен, 13:49 #409 #834347

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

Ответы>>834353

03 Сен, 13:52 #410 #834353

>>834347
Зачем ты такой фанатик?

03 Сен, 14:06 #411 #834367

>>834333
Принимаешь наркотики?

Ответы>>834385

Dmitry 03 Сен, 14:18 #412 #834385

>>834367
Немношк

Ответы>>834389

03 Сен, 14:25 #413 #834389

>>834385
Как и ожидалось от неймфага

Ответы>>834397

Dmitry 03 Сен, 14:36 #414 #834397

>>834389
Reverse-enginering-ом увлекаешься?

Ответы>>834399

03 Сен, 14:38 #415 #834399

>>834397
Да, у меня даже истерики иногда на этой почве случаются

Ответы>>834409

Dmitry 03 Сен, 14:47 #416 #834409

>>834399
А что ты реверсишь? Надо бы nouveau до нормального состояния довести, чтобы OpenCL было, чтобы Vulcan, OpenGL 4.5 был.
Блоб там гиганский, говнокода и легаси дохуище, если все лишнее убрать то опенсорцный драйвер будет быстрее чем в шиндовсе, ибо майкрсофт платит чтобы в GNU/Linux были плохие дрова

Ответы>>834414>>834419

03 Сен, 14:50 #417 #834411

>>834333
>В какой ОС вы работаете?
Oracle Linux.
>Мне DWM нравился, но устарел
Пользуюсь патченным dwm, tmux + vim/emacs, брат жив зависимость есть. Из реально графических приложений (тех, что нельзя запустить в консоли), что регулярно юзаю, это лиса, тандербёрд и zathura для чтения pdf.

Ответы>>834437

03 Сен, 14:51 #418 #834414

>>834409
>ибо майкрсофт платит чтобы в GNU/Linux были плохие дрова
ты реально поехавший

Ответы>>834433

03 Сен, 14:56 #419 #834419

>>834409
>Надо бы nouveau до нормального состояния довести, чтобы OpenCL было, чтобы Vulcan, OpenGL 4.5 был

Ниасилю, я еще маленький

Dmitry 03 Сен, 15:12 #420 #834433

>>834414
Какой же ты манька, скажи еще что майкрсофт, фейсбук и гугл не сотрудничают с правительствами.

Ответы>>834435

03 Сен, 15:16 #421 #834435

>>834433
ты сначала пруфы притащи, что мелкомягкие платит кому-то (кому?), что в линуксе были плохие дрова (каким образом они должны быть плохими?)

Ответы>>834438>>834443

Dmitry 03 Сен, 15:19 #422 #834437

>>834411
Захура, это же надстройка над mupdf (пожно сам mupdf юзать) или над poppler (это уже чисто библиотека).
У тебя ноутбук?

Ответы>>834466

Dmitry 03 Сен, 15:21 #423 #834438

>>834435
>кому
nvidia же.
Амуда сама по себе плоховатые дрова делает, и они немного открытые, а интел сама опенсорцные дрова делает.

Dmitry 03 Сен, 15:23 #424 #834443

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

03 Сен, 15:52 #425 #834464

Ебланы хуесосят винду и не понимают, что винда нужна для того, чтобы делать это https://peinjector.eu/

Ответы>>834468

03 Сен, 15:53 #426 #834466

>>834437
У меня десктоп. Я без понятия о mudf. Юзаю zathura из-за vim-like key bindings.

Ответы>>834469

Dmitry 03 Сен, 15:57 #427 #834468

>>834464
Прошивка для игр и вирусов, об этом все и говорят, ненужно.

Ответы>>834473

Dmitry 03 Сен, 15:58 #428 #834469

>>834466
У тебя он установлен наверно, пробуй mupdf открыть, он сам по себе не откроется, надо путь к пдф-ке указать.

Ответы>>834472

03 Сен, 16:01 #429 #834472

>>834469
И нахуя мне это нужно?

Ответы>>834475

Dmitry 03 Сен, 16:02 #430 #834473

>>834468
Windows - survilence engine, tracking OS.

Dmitry 03 Сен, 16:04 #431 #834475

>>834472
Хрен знает, попробуй, мне захура сложновата показалась.
А почему на Wayland не перешел?

Ответы>>834486

Dmitry 03 Сен, 16:25 #432 #834484

А еще я сосу хуи.

03 Сен, 16:29 #433 #834486

>>834475
меня пока иксы устраивают, я не гонюсь за всем новым

Ответы>>834498

03 Сен, 16:37 #434 #834489

>>834109
Ну так си только в винде используется поэтому винда и си такое говно, если я не ошибаюсь

Ответы>>834504

03 Сен, 16:38 #435 #834490

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

Ответы>>834501

03 Сен, 16:39 #436 #834491

>>834333
GNU/FSF - говнософт по определению.
На энтузиазме нельзя построить действительно хорошую ос и софт.

Ответы>>834502

Dmitry 03 Сен, 16:51 #437 #834498

>>834486
Тут не в новизне дело, иксы избыточны, устарели уже, новый протокол написан с нуля, заточен под разработку графических приложений в наши дни, ничего лишнего

Dmitry 03 Сен, 16:55 #438 #834501

>>834490
Размер нельзя, но можно сделать так:
for (int i;arr;i++)
{
}
Но вычисление количества элементов не должно быть реализовано на C, компиляторы на C++ пишутся, можно на асме что угодно реализовать чтобы дополнить синтаксис сишки.

Ответы>>834549>>837034

Dmitry 03 Сен, 16:56 #439 #834502

>>834491
Но они уже построили ее маньк.
Лучшей ОС сейчас нет.

03 Сен, 17:00 #440 #834504

>>834489
>Ну так си только в винде используется
Что за херню ты несёшь, на C написано 99% софта для UNIX-like OS.

03 Сен, 17:46 #441 #834528

vilsual studio это просто редактор для Си?

Ответы>>834550

03 Сен, 17:47 #442 #834529

visual studio эт просто редактор для Си?

Ответы>>834530

03 Сен, 17:50 #443 #834530

>>834529
это просто текстовый редактор, типа notepad.

Dmitry 03 Сен, 18:25 #444 #834549

>>834501
arr
туплю

Dmitry 03 Сен, 18:26 #445 #834550

>>834528
Нет, это ненужная жирная и тормозная хуета, используй nano, vim, emacs, и GCC

Ответы>>834674

03 Сен, 20:58 #446 #834674

>>834550
> nano, vim, emacs, gcc
из этого только nano можно использовать, остальное же gnu-софт, т.е параша

Ответы>>834682>>834708

03 Сен, 21:03 #447 #834682

>>834674
уебуй петух нахуй с нашего тредика

Ответы>>834687

03 Сен, 21:06 #448 #834687

>>834682
ну вот почему gcc лучше того же icc/msvc/clang-llvm? Я например не могу пользоваться компилятором, где очень много говна
vim-emacs - сложно освоить, мне непонравилось, смылса в этом нет, особенно под виндой

Ответы>>834690>>834713

03 Сен, 21:09 #449 #834690

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

Ответы>>834695>>834701

03 Сен, 21:13 #450 #834695

>>834690
Он мне может обеспечить нормальный рефакторинг, автокомплит без лагов и провисаний с задержкой 3-5 секунд? А профилирование, юнит-тесты? А нормальная поддержка отладчика?

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

Ответы>>834699>>834707

03 Сен, 21:17 #451 #834697

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

Ответы>>834716

03 Сен, 21:20 #452 #834699

>>834695
>начинаю сосать хуй у господина
тебе в тредик пхп, джава, сишарпа или раста

Ответы>>834706

sage 03 Сен, 21:21 #453 #834701

>>834690
> скорость работы возрастает
После ESC:%!rm -f `which vim` и установки нормального текстового редактора скорость работы значительно возрастает.

Dmitry 03 Сен, 21:30 #454 #834706

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

Ответы>>834715

Dmitry 03 Сен, 21:32 #455 #834707

>>834695
Дай мне свой айпишник, логины пароли аккаунтов, доступ к вебке микрофону и клавиатуре, адрес тоже давай.

Dmitry 03 Сен, 21:32 #456 #834708

>>834674
nano и есть GNU- software

Dmitry 03 Сен, 21:35 #457 #834713

>>834687
Незнаю что ты там имел в виду под 'много говна' но GCC компилирует быстрее, производит более быстрый код.
Одно мне не нравится - он почти стендалоне (но не на нормальной OS - Gentoo тут по умолчанию минимальный необходимый функционал, можно еще меньше сделать, ПО стает очень быстрым и легким)

03 Сен, 21:36 #458 #834715

>>834706
Помоему разобраться в чужом посложнее, чем написать свое с нуля
Мимонафаня

Ответы>>834718

Dmitry 03 Сен, 21:36 #459 #834716

>>834697
Хахах, он же на С кодил?

Ответы>>834719

Dmitry 03 Сен, 21:40 #460 #834718

>>834715
Ну хуй знает, Я вот зеро был в C, да и сейчас хелловордщик, однако читать код могу, могу править, а с нуля писать хз, Мне хоть бы на что нибудь посмотреть надо.
Чтобы улучшать скилы надо читать много кода, особенно новичкам, без этого никак, благодаря FSF у всех есть такая возможность.

Ответы>>834722

03 Сен, 21:41 #461 #834719

>>834716
нет конечно, он его неосилил, но советами заебывал

Dmitry 03 Сен, 21:45 #462 #834722

>>834718
Алсо начал читать ttytanks, по началу нихера не понимал что это, зачем? Но спустя некоторое время путем поправочек, чтения чтения, поправочек, и пулл-реквестов наверно 50-60% кода там мои, еще Я разбил его на большее количество файлов, стало проще ориентироватся, добавил скрипт для прекомпилежки (делает готовые бинари для разных процессоров, они не нуждаются ни в каких либах, будет работать и на BSD и на всяких LFS, роутерОС по идее, где нет библиотек)

Ответы>>834726

Dmitry 03 Сен, 21:48 #463 #834726

>>834722
И грубо говоря это теперь другая совсем игра, раньше скрин обновлялся целиком, теперь по людски выводит изображение, но артефакты случаются, еще надо пофиксить ввод, ибо он там через wgetch реализован, что полный пиздос, надо напрямую клавиши слушать через evdev или libinput, чтобы скорость игры от терминала не зависела

Dmitry 03 Сен, 21:55 #464 #834731

GNU Debugger GDB полезен если программа не крашится, но ведет себя немножко странно?
И как запустить скрипт или кусочек баш кода из Makefile? или может можно в мейкфайле цикл запустить?
(Автор этого поста был предупрежден.)

03 Сен, 23:20 #465 #834850

Срущий неймфаг, мое терпение истекает вместе с терпением анонов.

Ответы>>834917

04 Сен, 04:08 #466 #834917

>>834850
Я его уже репортил. Моче - похуй. Спасибо, Абу.

Ответы>>835066

04 Сен, 13:34 #467 #835060

#include <stdio.h>

main()
{
int c;

c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
}

Запускаю.
Пишу в консольку
abc
Нажимаю enter.
Всё ок, выводят abc.
Нажимаю ctrl-d, программа завершается, всё ок.
Теперь запускаю и пишу abc, но enter не нажимаю. Вместо этого сразу нажимаю ctrl-d.
Программа выводит на той же строчке abc.
Если после этого второй раз нажать ctrl-d программа завершается.
Почему первый ctrl-d не завершил программу?

04 Сен, 13:34 #467 #835060

#include <stdio.h>

main()
{
int c;

c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
}

Запускаю.
Пишу в консольку
abc
Нажимаю enter.
Всё ок, выводят abc.
Нажимаю ctrl-d, программа завершается, всё ок.
Теперь запускаю и пишу abc, но enter не нажимаю. Вместо этого сразу нажимаю ctrl-d.
Программа выводит на той же строчке abc.
Если после этого второй раз нажать ctrl-d программа завершается.
Почему первый ctrl-d не завершил программу?

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

04 Сен, 13:39 #468 #835066

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

04 Сен, 15:25 #469 #835122

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

Ответы>>835123

04 Сен, 15:26 #470 #835123

>>835122
>быстрофикс
под виндовз

04 Сен, 19:44 #471 #835429

>>835060
Какие-то особенности терминала. Он не отдает EOF по Ctrl+D, пока он не на отдельной строке.

04 Сен, 21:56 #472 #835542

Анон, почему мой кодес выполняется с ошибкой? https://ideone.com/K5ql4h

sh[] - спижженый шелл, который должен запускать calc.exe на вин XP.
code[] - мой шеллкод, вот его сурс https://ideone.com/dbvsGu

Нихуя не работает. Когда управление передается моему шеллкоду, процессор доходит до вызова WinExec и улетает куда-то в ебени. Как надо писать шеллкоды под win7 и старше? На всех сайтах посоны заверяют, что под win xp работает заебись.

Ответы>>835548>>835557

04 Сен, 22:00 #473 #835548

>>835542
https://en.wikipedia.org/wiki/Data_Execution_Prevention

Ответы>>835550

04 Сен, 22:02 #474 #835550

>>835548
Тогда почему выполнился почти весь шеллкод кроме вызова WinExec?

Ответы>>835552

04 Сен, 22:04 #475 #835552

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

Заражаю code cave в секции кода, т.е. DEP тут вообще никак не должен помешать.

04 Сен, 22:14 #476 #835557

>>835542
> почему мой кодес выполняется с ошибкой?
Потому что плохо читал гайды, читай лучше.
1) Если в XP ShellExec и лежала в каком-то из билдов по 0x7C8629FD, это нихуя не значит, что она и в 7 будет там лежать. Можешь сходить отладчиком и посмотреть, что там лежит. Это что касается кода sh. Что же касается кода в sh, там ты вообще вызываешь функции по адресам 0x00000020 и 0x00000026 - подозреваю, что рипнул из объектника, а про существование поправок (fixups, relocations) не знаешь.
2) Посмотри, как посоны делали поиск KERNEL32, парсинг таблицы экспортов, чтобы узнать адреса LoadLibrary/GetProcAddress, хэши имен API, вот это все.
3) У нас теперь ASLR, всё стало сложнее.

Ответы>>835561

04 Сен, 22:19 #477 #835561

>>835557
>подозреваю, что рипнул из объектника, а про существование поправок (fixups, relocations) не знаешь
Да, из объектника. Где про это все читать?
>GetProcAddress
Окай, можно вычислить адрес заранее для разных операционок, а можно вычислять при заражении и патчить адрес в шеллкоде, пометив его как-нибудь типа 0xDEADBEEF.

Ответы>>835568

04 Сен, 22:20 #478 #835564

Вычислить как-нибудь вот так:
func_addr = (DWORD)GetProcAddress( LoadLibrary("kernel32.dll") , "WinExec");

04 Сен, 22:23 #479 #835568

>>835561
> Где про это все читать
Хуй знает. Иди на амазон, вводи в поиске shellcode, смотри, что больше нравится людям, покупай или пирать.

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

Вот почему наш тредик всё время скатывается в максимальную байтоёблю?

04 Сен, 22:37 #480 #835582

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

Ответы>>835592

04 Сен, 22:49 #481 #835592

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

https://ideone.com/oVyQxi

>>835582
Все так и есть((((

04 Сен, 22:53 #482 #835598

Странно, после инфекта калькулятор как будто был запущен, но ПРЕКРАТИЛ РАБОТУ.

Ответы>>835662

158 Кб, 1272x800

04 Сен, 23:03 #483 #835604

Ответы>>835662

45 Кб, 500x344

04 Сен, 23:09 #484 #835608

Забыл вычислить адрес ExitProcess.
И о том, что использовал его, забыл

04 Сен, 23:37 #485 #835635

Чем это анон ты занимаешься этаким интересным, а ну, говори!

Ответы>>836418

05 Сен, 00:05 #486 #835662

>>835598
>>835604
Все ясно. Я забыл нуль в конце строки "calc.exe", когда копировал шеллкодес.

15 Кб, 1024x1024

06 Сен, 03:38 #487 #836418

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

но лень, я вообще нихуя не делаю, просто бухаю и всё.

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

Ответы>>836419

06 Сен, 03:52 #488 #836419

>>836418
> с выгрузкой из памяти на хард, когда не нужно
Это embedded или тебя чем-то не устраивает системный файл подкачки?

Ответы>>836421

06 Сен, 04:30 #489 #836421

>>836419
да как-то заебало, не может системный менеджер всё понять правильней, чем единичное приложение, которое точней может предугадать когда что понадобится - в идее. а может оно, системное распределение, работает галимовряд ли - я не знаю, но смотря на теже браузеры - они вообще не парятся, просто жрут ВСЁ. и никто не конструирует программ с параметром --ДОСТУПНАЯПАМЯТЬ - наверно в этом интерес. и да, я собираюсь это всё запускать на спектруме и сеге.

Ответы>>836422

06 Сен, 04:32 #490 #836422

>>836421
> как назвать место, где хранится адресация памяти, его разметка, и свободные части и занятые?
heap descriptor?

Ответы>>836424

06 Сен, 04:47 #491 #836424

>>836422
не думал с такой точки зрения.

06 Сен, 04:56 #492 #836426

хотя думал, но мне, почему-то вбилось в голову, распространённое, descriptor как ключ доступа.

07 Сен, 08:48 #493 #837034

>>834501
Разве в C можно объявлять переменную в разделе описания цикла? Только в плюсах же!

Ответы>>837038

07 Сен, 08:54 #494 #837038

>>837034
C99.

Ответы>>837039

07 Сен, 08:57 #495 #837039

>>837038
Точно. Значит я использую старое говно.

07 Сен, 14:30 #496 #837218

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

Ответы>>837239>>837550

07 Сен, 15:05 #497 #837239

>>837218
ну, тип, раскодировать)).

Ответы>>837242

07 Сен, 15:09 #498 #837242

>>837239
>раскодировать
куда, кого, нахуя?

Ответы>>837243

07 Сен, 15:11 #499 #837243

>>837242
да прост)

07 Сен, 15:43 #500 #837269

Антуаны-железячники и мимопроходящие, подскажите, может быть кто-то знает, как решить мою проблему. Есть один CRC32, реализованный в железе. Соответственно, доступа к алгоритму нет. Есть файл и хеш к нему. Как узнать алгоритм, чтобы рассчитать контрольную сумму для других файлов? Перебором полинома? Может быть, какие-то методики есть?

Ответы>>837550

07 Сен, 16:36 #501 #837325

Аноняши, хоу стать экспертом использования GDB и устроится на работу, где мои звниня будут востребованы
Есть ли годная литература по етому? Что вы сами читывали?

Ответы>>837393>>837550

07 Сен, 17:32 #502 #837393

>>837325
нихуя не читал - нихуя не умею чёт увлёкся электромагнетизмом... но какое-то вводное есть у криски - но не читал.

07 Сен, 20:05 #503 #837550

>>837218
Ну если не проверять строку на корректность, то искать третий по счету байт, у которого не установлен старший бит (т.е., банально цикл со счетчиком и маской 0x80).

>>837269
Можно бездумно брутфорснуть же.

>>837325
Прочитать ман уже предлагали?

Ответы>>837560

07 Сен, 20:10 #504 #837560

>>837550
Бля, про UTF-8 пизжу. Надо if ((byte & 0xc0) != 0x80), тогда начало очередного символа.

ПЕРЕКАТ # OP 07 Сен, 20:38 #505 #837597

>>837592 (OP)
>>837592 (OP)
>>837592 (OP)
>>837592 (OP)
>>837592 (OP)

Тред утонул или удален.
Это копия, сохраненная 29 сентября 2016 года.

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

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

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

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