Сохранен 505
https://2ch.hk/pr/res/820659.html
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

C Programming Language #11

 Аноним OP 15/08/16 Пнд 21:37:23 #1 №820659 
14712862434430.png
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Что читать:

- Классика от Отцов: 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/%7Eats/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
Аноним 15/08/16 Пнд 21:38:37 #2 №820663 
Насру первым.
Аноним 15/08/16 Пнд 22:40:38 #3 №820708 
14712900388960.jpg
освещаю
Аноним 15/08/16 Пнд 22:59:33 #4 №820718 
а что это у нас тут?

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

стандарт ISO/IEC 9899:2011 - http://libgen.io/ads.php?md5=4CC5C8494FDC76ECB56A927E802FF25E
Аноним 15/08/16 Пнд 23:03:53 #5 №820725 
>>820718
Спасибо. Но ведь нет никаких значимых различий между последними драфтами и этими pdf?
Аноним 16/08/16 Втр 00:11:18 #6 №820750 
>>820708
Что за бомжевское рыло? Наверно, долго сопли и квашенную капусту из бороды выковыривал перед фотканьем.
Аноним 16/08/16 Втр 00:15:24 #7 №820751 
>>820718
Bed gaytway
sageАноним 16/08/16 Втр 00:31:14 #8 №820759 
>>820751
Все работает. Скажи спасибо провайдеру?
Аноним 16/08/16 Втр 05:45:08 #9 №820804 
14713155086800.png
Есть ли в стандартной библиотеке поиск в строке символа из заданного массива символов, или как всегда ручками в цикле?
Аноним 16/08/16 Втр 05:49:34 #10 №820805 
>>820804
strpbrk()
Аноним 16/08/16 Втр 06:00:41 #11 №820806 
>>820805
пасиб
Аноним 16/08/16 Втр 09:29:58 #12 №820848 
Хочу вкатиться в Pelles C, какие подводные камни?
Аноним 16/08/16 Втр 11:40:02 #13 №820902 
>>820848
>какие подводные камни
Pelles C
Аноним 16/08/16 Втр 11:40:54 #14 №820903 
>>820848
>какие подводные камни?
С
Аноним 16/08/16 Втр 11:49:17 #15 №820911 
>>820902
Какие еще есть IDE для си?
Аноним 16/08/16 Втр 11:55:13 #16 №820917 
>>820911
вижалстудио, куткреатор, клион, нетбинс, кодеблокс
Аноним 16/08/16 Втр 12:05:00 #17 №820926 
>>820917
так вижуалстудия поддерживает только С89, а остальные требуют гцц
Аноним 16/08/16 Втр 12:08:35 #18 №820929 
>>820911
IAR
Аноним 16/08/16 Втр 12:11:58 #19 №820931 
>>820929
Я МК не программирую
Аноним 16/08/16 Втр 12:13:04 #20 №820933 
>>820931
Все так говорят.
Аноним 16/08/16 Втр 12:26:24 #21 №820940 
>>820933
ну а зачем мне тогда нужен IAR?
Аноним 16/08/16 Втр 12:30:12 #22 №820943 
>>820848
> какие подводные камни
Никаких. Для вкатывания самое то, если IDE из комплекта не вызывает отвращения.
Аноним 16/08/16 Втр 12:40:24 #23 №820954 
>>820943
Хорошо, а вкатываться сразу в C11 или можно K&R читать?
Аноним 16/08/16 Втр 12:47:21 #24 №820956 
>>820954
Можно читать K&R, второе издание. Если чего-то вдруг не соберется (Pelles C не любит до-ансишный способ декларации функций), спросишь тут, да и все.
Аноним 16/08/16 Втр 13:16:56 #25 №820971 
>>820954
Можешь и в С11, один хуй там разница минимальна.
Аноним 17/08/16 Срд 11:30:08 #26 №821577 
14714226089050.jpg
>>820659 (OP)
Прохожу значит cs50 я и решил выложить код на кодревью, если кому-то захочется покритиковать код, буду очень рад.

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

http://rgho.st/6LtnFPmRJ - исходный файл (если нужно)
Аноним 17/08/16 Срд 12:10:06 #27 №821593 
>>821577
Это из четвертого псета? Не буду смотреть чтобы не заспойлерить, я еще не осилил его. Слошна было?
Аноним 17/08/16 Срд 12:19:37 #28 №821597 
>>821593
Да из 4, первые два задания норм, третье (которое я скинул) довольно напряженное для меня было, байтоебство началось во всей красе.
Аноним 17/08/16 Срд 12:22:54 #29 №821598 
>>821597
Ну первое то вообще фигня, второе я осилил еле еле, теперь читаю всю доступную литературу, сделал паузу пока. Потом вернусь, переделаю весь сет. Кстати, первое я тоже зафейлил, потмоу что думал что там Дэвид изображен а там рикролл
Аноним 17/08/16 Срд 12:24:31 #30 №821600 
Подскажите, почему так?
Запускаю "time ./heapsort < input", показывает 0.106 s, а второй и последующие разы 0.46 s, причем первый раз всегда зависит от размера input, а при повторном запуске время всегда 0.46 s. Можно от этого как-то избавиться? Это типа оптимизации какие-то?
Аноним 17/08/16 Срд 12:27:24 #31 №821602 
>>821600
Хотя как-то странно, на 100000 и 1000000 чисел время 0.46 s, а на 1000 0.60 s
Аноним 17/08/16 Срд 12:28:15 #32 №821603 
>>821598
Ну да тоже сначала про Девида подумал.

Аноним 17/08/16 Срд 12:30:43 #33 №821607 
>>821598
Во втором я на самом деле решение подсмотрел частично, у меня получилось увеличить изображение, но я увеличивал только по длине, а по ширине забывал, в итоге часть пикселей пропадало.
Аноним 17/08/16 Срд 12:32:01 #34 №821609 
>>821577
> если кому-то захочется покритиковать код, буду очень рад.
Что ты хочешь услышать? Насколько читабельный код или насколько правильно задание сделал? Если первое:
1. #define BUF_SIZE 512 нуу или хотя бы sizeof(buffer) вместо указывания размера при каждом использовании. Да и в целом все константы-имена мог бы и задефайнить.
2. Где блять проверка ошибок вызываемых библиотечных функций?
3. Глобальные переменные в main запихнуть зачем ты вообще решил сделать их глобальными?
4. Не используй sprintf если можно использовать snprintf
5. 99% комментариев не нужны, код и так понятен.
6. (-1 * 512 ) - нахуя так делать?

Аноним 17/08/16 Срд 12:41:11 #35 №821613 
>>821609
По первым пунктам согласен, а в 6 не понял, а как еще сделать было? -sizeof(buffer)?

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

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

Аноним 17/08/16 Срд 12:43:13 #36 №821616 
>>821613
Суть в том, что если по каким то причинам fopen вернул нулл, то нужно все прекращать. Ну, так в кусре говорили. Же.
Аноним 17/08/16 Срд 12:44:55 #37 №821619 
>>821616

Да я вот особо и не понял, зачем это надо, с какого он вообще должен NULL возвращать, если файл на месте?
Аноним 17/08/16 Срд 12:53:00 #38 №821624 
>>821619
Ну он может быть поврежден например, или формат непонятный, или еще чего. Вобщем, это хорошая привычка
Аноним 17/08/16 Срд 13:14:00 #39 №821633 
>>821624

Просто после питона непривычно все это.
Аноним 17/08/16 Срд 13:50:51 #40 №821653 
>>821600
Ты ведь не на ОСРВ запускаешь код, чему удивляешься?
Аноним 17/08/16 Срд 13:52:35 #41 №821656 
>>821633
Да нет же, это после быдлокодерства тебе не привычно. В бидоне тоже нужно исключения ловить.
Аноним 17/08/16 Срд 13:56:53 #42 №821658 
>>821613
>а в 6 не понял, а как еще сделать было? -sizeof(buffer)?
Ну да, ебать, какой смысл добавлять умножение на единицу если нужно просто добавить минус.
Аноним 17/08/16 Срд 14:42:02 #43 №821687 
>>821658
Ну я хотел сделать более понятно...

>>821656
Ну да наверное.
Аноним 17/08/16 Срд 15:13:58 #44 №821713 
вот написал add, авл дерева, и думаю - как же органично. начал писать del - и пиздец, переписал всё без рекурсии. рекурсия не про C.
Аноним 17/08/16 Срд 15:23:11 #45 №821729 
>>821713
> рекурсия не про C.
Еще бы, стек-то не резиновый.
Аноним 17/08/16 Срд 15:28:36 #46 №821736 
>>821729
Он нигде не резиновый
Аноним 17/08/16 Срд 15:36:36 #47 №821744 
>>821736
Ну в лиспе стандартом гарантируется хвостовая оптимизация, например.
Аноним 17/08/16 Срд 16:14:18 #48 №821768 
>>821744
>хвостовая оптимизация
где вы блядь такие слова берете?
Аноним 17/08/16 Срд 18:16:04 #49 №821870 
>>821744
В схеме. А схема не лисп. В общелиспе это зависит от имплементации, поэтому там сплошная ебля с goto, присыпанная сахарком.
Аноним 17/08/16 Срд 19:37:51 #50 №821916 
>>821577
Кроме того, что уже сказали, что за tens/ones, что за нахуй? Кто запретил %02i сделать?
Аноним 17/08/16 Срд 19:45:01 #51 №821923 
>>821916
Да я так и думал, что можно проще это сделать, слаб в форматировании, где можно почитать про все возможности форматирования строк?
Аноним 17/08/16 Срд 19:47:46 #52 №821924 
>>821923
В стандарте, в википедии, тут http://www.cplusplus.com/reference/cstdio/printf/ (не смотри на plusplus).
Аноним 17/08/16 Срд 19:52:13 #53 №821929 
14714527335250.jpg
>>821924
Спасибо
Аноним 17/08/16 Срд 19:52:56 #54 №821930 
>>821577
Код как код...
sageАноним 17/08/16 Срд 19:54:58 #55 №821932 
test
Аноним 17/08/16 Срд 21:01:54 #56 №821972 
Нашел книгу дейтелов по С11, стоит ли ее читать? Или K&R лучше?
sageАноним 17/08/16 Срд 21:51:51 #57 №822004 
>>821993
da
Аноним 17/08/16 Срд 22:02:27 #58 №822016 
>>821993
>>822012
Возьми pthreads, нахуй тебе winapi? Структуру можно создавать в стеке, ты же будешь дожидаться, пока треды не закончат работу (зделоешь join) и не выйдешь до этого из функции.
Аноним 17/08/16 Срд 22:03:47 #59 №822019 
>>822018
Говноедствовать интереснее?
Аноним 17/08/16 Срд 22:13:02 #60 №822026 
>>822024
Объявить переменную?
Аноним 18/08/16 Чтв 04:17:41 #61 №822160 
>>822024
Хуле ты свое говно по двум тредам размазал, уебок? https://2ch.hk/pr/res/821402.html#822061
Аноним 18/08/16 Чтв 04:25:39 #62 №822161 
>>822024
Алсо ты долбоеб, потому что ты только что форк-бомбу, уоторая даже если не упадет, будет работать медленнее однотредового сорта.
Аноним 18/08/16 Чтв 07:08:47 #63 №822178 
>>822161
только что что?
Аноним 18/08/16 Чтв 12:16:54 #64 №822305 
> x = (void@@)a ;
> assignment from incompatible pointer type

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

заебись. x указатель на указатель к опр. структуре. и первый каст видимо дохуя неправильный... каждый раз сгорает от этого.
Аноним 18/08/16 Чтв 13:11:12 #65 №822348 
>>822305
Что не так? Все правильно же.
Аноним 18/08/16 Чтв 13:13:06 #66 №822350 
>>822305
Сравни "указатель на что угодно" и "указатель на указать на что угодно". Во втором случае есть конкретный тип, поэтому компилятор и ругается. Вот дереференснешь если - тогда не будет.
Аноним 18/08/16 Чтв 13:18:59 #67 №822353 
Ах указатели
Да на указатели
Прошу сплоеты писать
Пайду в председатели!
Аноним 18/08/16 Чтв 14:25:46 #68 №822403 
>>822350
бред.
> struct @t = void @t
если это валидно

> struct t @@t = void @@t
то и это должно быть, ведь фактически, это оба void@.
Аноним 18/08/16 Чтв 14:31:24 #69 №822408 
поясните за выражение по типу:

int counter = 0;

char string[10];

string[counter++] = 'a';

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

Аноним 18/08/16 Чтв 14:33:47 #70 №822411 
>>822408
Потому что надо нормально учить язык и различать count++ и ++count
Аноним 18/08/16 Чтв 14:51:27 #71 №822426 
>>822403
Не бред.
void ∗ - указатель на что угодно. По стандарту, ты можешь без каста присвоить void ∗ любому другому указателю плюс-минус квалификаторы (и обратно).
Грубо говоря, если у тебя указатель на T, и T == void, есть магия. Если у тебя T == int, T == int ∗, T == struct ∗, T == void ∗, T == что-то еще, тогда магии нет.
Аноним 18/08/16 Чтв 14:59:09 #72 №822433 
>>822426
>void ∗ - указатель на что угодно.
Но void - уже не указатель на что угодно.
Аноним 18/08/16 Чтв 15:47:07 #73 №822461 
>>822411
Пояснишь?
Аноним 18/08/16 Чтв 15:51:58 #74 №822467 
>>822433
>void ∗∗
фикс
Аноним 18/08/16 Чтв 15:52:34 #75 №822469 
>>822461
Я не эксперт, но наверное потому, что сперва присвоение, а уже потом постинкремент
Аноним 18/08/16 Чтв 15:53:42 #76 №822472 
>>822461
Ты ебанутый? Я же написал - разберись, что значит два плюсика перед переменной (преинкремент) и после (постинкремент). Копипасть инфу с книги я не буду, сам найдешь охуели вообще
Аноним 18/08/16 Чтв 15:55:07 #77 №822474 
>>822472
Да уже нашел)

Аноним 18/08/16 Чтв 16:08:47 #78 №822483 
>>822426
1. ты не хуя не объясняешь, а только путаешь.

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

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

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

и ещё, я тут понял для чего нужен + в указании знака числу, чтобы конструкция вида #if (SOMEVER + 0 > 1) работала, даже если SOMEVER не объявлен.
Аноним 18/08/16 Чтв 16:47:51 #79 №822538 
>>822483
>и ещё, я тут понял для чего нужен + в указании знака числу, чтобы конструкция вида #if (SOMEVER + 0 > 1) работала, даже если SOMEVER не объявлен.
Ну тут ты уже придираешься, препроцессор не должен вместо отсутствующей директивы лепить какого-то хуя 0).
Аноним 18/08/16 Чтв 18:09:49 #80 №822613 
>>822483
> потому что так наглядней и меньше путает
> я не хочу писать
Посоны, я тут гуманитария поймал. Что с ним сделать?
Аноним 18/08/16 Чтв 18:18:23 #81 №822624 
>>822538
> препроцессор не должен
Как раз таки должен. Все имена, которые #if не смог развернуть, он заменяет на литерал 0. Нахуя >>822483 воткнул +0 в #if - совершенно непонятно.
#if (SOMEVER + 0 > 1) развернется в #if (0 + 0 > 1) если SOMEVER не определен, в #if (что-то + 0 > 1), если SOMEVER определен, ну или свалится, если SOMEVER не разворачивается в число или выражение.
Аноним 18/08/16 Чтв 18:20:19 #82 №822627 
>>822613
Но ведь он прав. Похожая проблема существует даже в более высокоуровневых языках, например, в жабе при работе с дженериками. Там никто никого гуманитариями не обзывает, но по-другому (не с помощью ебли с приведениями типов) красиво решить проблему в языке нельзя.
Аноним 18/08/16 Чтв 18:23:31 #83 №822631 
>>822624
>он заменяет на литерал 0
Охуеть, я и не знал
Аноним 18/08/16 Чтв 18:55:07 #84 №822648 
>>822624
да есть такое, но если он не неопределён, а определён без значения - тогда такая конструкция поможет. просто в коде это видел.
Аноним 18/08/16 Чтв 18:56:36 #85 №822649 
ну в смысле, потому что +0 - легальная конструкция.
Аноним 18/08/16 Чтв 18:58:42 #86 №822654 
хотя с другой стороны, тоже можно и с -0 сделать. хер короче пойми, пойду я пить водку.
Аноним 19/08/16 Птн 05:42:40 #87 №822921 
>>822654
Прально, сразу умнее станешьнеа
Аноним 19/08/16 Птн 06:41:01 #88 №822927 
Тут есть люди, которые имели опыт работы с i2c на stm32? Не могу понять логику работы с HAL, а спросить не у кого.
Аноним 19/08/16 Птн 18:22:06 #89 №823317 
14716201262990.png
https://ideone.com/iTScte

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

Аноним 19/08/16 Птн 18:23:45 #90 №823318 
>>823317

посмотрите

fixed
Аноним 19/08/16 Птн 18:55:14 #91 №823334 
Аноны, совсем нубовопрос. Читаю K&R, и хочу спросить, есть такой кусок кода:

printf ("%2d", a)

Он должен выдать "a" в поле из двух позиций, да? Но оно выводит все число, и трехзначное и четырехзначное. Я предполагал, что мне выдаст два первых разряда только. Чего я не понимаю? Ткни носом, анон. Гугл не помог.
Аноним 19/08/16 Птн 19:00:08 #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;

}
Аноним 19/08/16 Птн 19:01:38 #93 №823338 
>>823334
> из двух позиций
из МИНИМУМ двух позиций

> два разряда только
Подели или возьми остаток или форматни в строку и сделай %.2s.
Аноним 19/08/16 Птн 19:10:08 #94 №823345 
>>823336
Да чет с памятью тупанул, там оказалось вообще этот цикл не нужен, а что значит человеческая проверка?
Аноним 19/08/16 Птн 19:18:05 #95 №823350 
>>823317

Короче понял в чем косяки, он ругается на те строчки, где я сравниваю со значением NULL в циклах while, как это фиксить?
Аноним 19/08/16 Птн 19:31:35 #96 №823358 
>>823338
Спасибо.
Аноним 19/08/16 Птн 19:55:33 #97 №823368 
>>823350
а нахуя ты смотришь через 2 указателся на 114?
Аноним 19/08/16 Птн 19:58:23 #98 №823370 
Почему Pelles C ругается на устаревшие объявления типа void thread_1() и хочет, чтобы было void thread_1(void)?

Как предписывает стандарт?
Аноним 19/08/16 Птн 20:00:34 #99 №823371 
>>823370
старый, да. там что-то про отсутствие контроля за числом аргументов... и только void явно указывал, что нету их.
Аноним 19/08/16 Птн 20:03:55 #100 №823375 
>>823370
> Почему Pelles C ругается на устаревшие объявления
Потому что они устаревшие.
Аноним 19/08/16 Птн 20:05:14 #101 №823378 
>>823368

Уже не помню лол, сделал рефакторинг, ошибки исчезли, какой-то косяк был с временными указателями в функциях.
Аноним 19/08/16 Птн 20:16:14 #102 №823381 
>>823371
а может я и путаю, и небыло обязательного правила, и это причуда компилятора, хуй их знает на что они ворнинги выбрасывают, вон, на тот же & без скобочек - только так.
Аноним 19/08/16 Птн 21:35:45 #103 №823436 
>>823345
>а что значит человеческая проверка?
да в принципе я пересмотрел код, и так сойдет для начала.
Важная ошибка в коде - ты не инициализируешь newptr->next когда делаешь push первого элемента (то бишь когда (first == NULL)), а надо делать newptr->next = NULL.
В целом реализация алгоритма не очень красивая, подумай как лучше сделать
Аноним 19/08/16 Птн 21:46:01 #104 №823439 
>>823381
Ругается в смысле выбрасывает ворнинги? Если так, то всё правильно делает.
>Что это блять за говно такое этот ваш Pelles C?
Аноним 19/08/16 Птн 21:48:58 #105 №823442 
>>823436
Да исправил уже этот косяк, на самом деле только сейчас в курсе начались структуры данных, первый день и это по большей части эксперименты по реализации.

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

Чувствую с хеш-таблицами будет сложнее...
Аноним 19/08/16 Птн 21:51:28 #106 №823444 
это теперь зацени код тренж?

http://pastebin.com/7mSBJVny

Попытался реализовать дерево, авл дерево, все вроде ок компилится и работает, хочу внимания.
Аноним 19/08/16 Птн 22:54:15 #107 №823481 
Лол, не заметил надпись "ПЕРЕКАТ!!!". Репощу сюда в легитимный >>823404

Пытаюсь написать интерпретатор/терминал/оболочку (не знаю как назвать) для парочки команд в микроконтроллер, чтобы через последовательный порт можно было заставлять его что-то делать прямым текстом (командами а-ля баш). Пока пишу под ПК на линуксе.
Вопрос следующий: как перехватить стрелочки, чтобы не выводился мусор типа "^[[D", а каретка перемещалась по вводимой строке? Пробовал getchar() и scanf() с одинаковым результатом, но я понятия не имею как предотвратить вывод этого мусора. Остальное я представляю себе как реализовать. Обязательный момент - это использование только функций из страндартной библиотеки.
И, кстати, вводимую строку пишу в массив символов - это нормально так делать или стоит переехать на указатели?
Аноним 19/08/16 Птн 23:02:54 #108 №823486 
>>823481
> как перехватить стрелочки
> мусор
vt 100 esc sequence

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

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

> И, кстати...
что?
Аноним 19/08/16 Птн 23:07:32 #109 №823487 
>>820926
ну так сделай визуалку работать с гцц
Аноним 19/08/16 Птн 23:10:46 #110 №823490 
>>820926
https://news.ycombinator.com/item?id=9434483
msvs2015 поддерживает c99
Аноним 19/08/16 Птн 23:12:27 #111 №823494 
>>823490
>поддерживает c99
каждый так говорит, а ты купи розового слона.
Аноним 19/08/16 Птн 23:15:00 #112 №823498 
>>820926
>а остальные требуют гцц
А в чем проблема с гцц? Минг же проще ставить, чем гигобайты студии.
Аноним 19/08/16 Птн 23:17:37 #113 №823500 
>>823486
> <termios.h>. noncanonical
Ты хочешь сказать что этот хидер неканоничный? Как ни странно, на его включение компилятор под мой контроллер не ругнулся, значит им можно пользоваться. Я попробую.
НО! Посмотрев исходный код fgetc(), я понял, что его вообще не ебёт, что там у меня отображается при вводе, потому что это просто поток символов, который он потом, будучи выполнен несколько раз в цикле, по одному символу проглотит. В таком случае я просто не буду пользоваться стрелками для перемещения каретки - только бекспейс.
> > И, кстати...
> что?
Если не понятно выражаюсь, то здесь я имел в виду, что всё полученное через getchar() я складываю в массив char, чтобы потом использовать. Насколько я знаю, последовательность символов можно строкой записать по указателю. Возможно, я не прав или это совсем аутизм.
Аноним 19/08/16 Птн 23:23:47 #114 №823506 
>>823500
>Ты хочешь сказать
>неканоничный
это режим терминала - не каноничный, там ты можешь что хочешь почти. и что такого сложного в этом потоке символов распарсить стрелочки, в esc последовательностях? там делов то, да и есть, наверно, какие-то функции. но стандарт ц тут нипричём.

> то совсем аутизм.
вот ты ещё раз написал, и я снова нихуя не понял.
Аноним 19/08/16 Птн 23:28:58 #115 №823510 
>>823500
> Ты хочешь сказать что этот хидер неканоничный? Как ни странно, на его включение компилятор под мой контроллер не ругнулся, значит им можно пользоваться.
Я не понял, ты подключаешь клавиатуру к микроконтроллеру что ли?
Аноним 19/08/16 Птн 23:53:25 #116 №823527 
14716400063860.png
>>823510
Не совсем. Я пользуюсь Serial Wire Debug JTAGом. Это просто последовательный порт для отладки исполняемой программы в мк, который, в том числе, работает... как терминал, ёпта. Всякие там printf'ы блекджек и шлюхи, всё включено.

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

> вот ты ещё раз написал, и я снова нихуя не понял.
Ну и хрен с ним. Просто надеялся, что мне подскажут другой (возможно, более удобный или правильный) вариант хранения полученных данных из getchar или scanf, кроме как в массиве типа char для дальнейшей обработки.
Аноним 20/08/16 Суб 00:09:01 #117 №823546 
>>823527
>кроме как в массиве типа char
ну а как ты себе это представляешь? может, система сома должна под каждую эвалбл порцию данных выделять кусок памяти и на него выдавать указатель? что тебе хочется то?
Аноним 20/08/16 Суб 00:14:32 #118 №823557 
>>823546
Хочется сома научиться писать правильный код.
Я слышал про malloc, так что тут можно так и сказать, что она сама лично и будет мне выделять память. И никто иной кроме неё.
Спасибо за терпение и ответы
Аноним 20/08/16 Суб 00:16:10 #119 №823559 
>>823557
> я ебу тебе мозги
ясн.
Аноним 20/08/16 Суб 00:46:44 #120 №823588 
Я новичок, прохожу cs50 и захотел перекатиться на полноценную ide, скачал visual studio 2015, но не понял, как там на си писать, создать пустой проект? И как остановить компиляцию, чтобы прочитать вывод в консоль? Вообще чет в печали, есть ли что-то попроще?
Аноним 20/08/16 Суб 00:56:53 #121 №823593 
>>823588
Там должен быть шаблонный hello world. Посмотри хотябы видеоуроки на ютьюбе же!
Аноним 20/08/16 Суб 01:05:19 #122 №823595 
>>823593
>>823588
А, я только сейчас догнал, что в VS ориентирован на С++. Просто создавай проект для C++ и поменяй расширение файла с .cpp на .c
http://www.swarthmore.edu/NatSci/tali/E15/Visual_C.html
Аноним 20/08/16 Суб 02:09:33 #123 №823620 
>>823500
> Посмотрев исходный код fgetc(), я понял, что его вообще не ебёт, что там у меня отображается при вводе
Далеко ходишь. Достаточно поискать по pdf-ке стандарта слова типа "консоль" "терминал" или "отображается" (на английском, есс-но), чтобы понять, что C и его стандартная библиотека о таком не знают.

> Вопрос следующий: как перехватить стрелочки, чтобы не выводился мусор типа "^[[D", а каретка перемещалась по вводимой строке?
gnu readline
Аноним 20/08/16 Суб 03:09:23 #124 №823641 
>>823620
> gnu readline
Спасибо, конечно, но, мне кажется, я не осилю портировать её на микроконтроллер.
Сейчас читаю про termios.h. Похоже, что это то, что нужно, но трудно даже взять в толк что это вообще такое.
Решил пока ограничиться избеганием нажатия стрелок. Моя поделка вряд ли кому-то ещё понадобится, а я могу и потерпеть это безобразие.
Аноним 20/08/16 Суб 09:09:46 #125 №823695 
>>823595
Во за гайд спасибо!
Аноним 20/08/16 Суб 15:02:41 #126 №823880 
>>823588
visual studio слишком перегружена.
cloud9 для этих целей в самый раз
Аноним 20/08/16 Суб 19:57:30 #127 №824056 
Пизда потный 5 задачник из cs50, особенно, если за плечами был только курс питона для начинающих.
Аноним 20/08/16 Суб 22:22:44 #128 №824203 
Опять вопрос от ньюфага.

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

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

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

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

Обьясните кто-то что происходит. Вряд-ли это из-за эмулятора терминала. Пробовал Sakura и Urxvt - все так-же.
Издание K&R - третье.
Аноним 20/08/16 Суб 23:07:27 #129 №824254 
>>824203
компилятор поменяй
Аноним 20/08/16 Суб 23:46:14 #130 №824290 
>>823880
б-же мой, да нахуя вам вообще IDE для cs50? Дебилі блять.
Аноним 20/08/16 Суб 23:48:46 #131 №824291 
>>824290
Не для cs50, а вообще, я на будущее скачал, так как сей замечательный курс уже подходит к концу, эх... и нужно отправляться в свободное плавание по морям it океана.

Надо было в следующем году его проходить, будет версия для очков виртуальной реальности.
Аноним 21/08/16 Вск 02:18:38 #132 №824372 
>>824370
Деема, ты?
Аноним 21/08/16 Вск 13:11:25 #133 №824508 
>>824203
Если ты уберешь скобки то получится
(c = getchar() != EOF) и в этом случае сначала будет выполняться getchar() != EOF, а только после этого c = getchar(), из-за этого так и получается.
Аноним 21/08/16 Вск 13:12:48 #134 №824509 
>>824291
Как вы его смотрите, его же еще до конца не перевели?
Аноним 21/08/16 Вск 13:22:39 #135 №824516 
>>824508
Чегооо? Если убрать скобки, у != приоритет выше, поэтому выполнится getchar() значение сравнится с EOF, результат подвыражения будет 0 или 1, это результат запишется в c, результат выражения будет все тот же 0 или 1, и этот результат уже обработает while. Никаких спецэффектов быть не должно, проблема, скорее всего, в терминале.
Аноним 21/08/16 Вск 14:11:14 #136 №824533 
>>824509
Сам то как полагаешь?
Аноним 21/08/16 Вск 14:26:50 #137 №824538 
Почему диму никак не забанят? Он айпишники меняет?
Аноним 21/08/16 Вск 14:53:49 #138 №824550 
>>824509
В оригинале смотрю. Вообще лучше в оригинале смотреть хотя бы с сабами, да и без sections будет сложно под конец.
Аноним 21/08/16 Вск 15:59:55 #139 №824576 
Что почитать про оптимизацию?
Аноним 21/08/16 Вск 16:02:15 #140 №824578 
>>824203
>Если убрать скобки вокруг "c = getchar()", то судя по книге программа должна печатать нули либо единицы
лол, нет. она будет печатать символы с кодом 1, а потом когда будет 0, цикл завершится
Аноним 21/08/16 Вск 16:38:42 #141 №824591 
>>824533
>>824550
Русских субтитров нет, поэтому только догадываюсь
Аноним 21/08/16 Вск 17:04:33 #142 №824607 
>>824591
В такос случае неясно, что ты тут без знаная английского делаешь
Аноним 21/08/16 Вск 19:11:34 #143 №824672 
>>824607
я знаю английский на уровне прочитать какую-нибудь книгу по программированию, иногда заглядывая в словарь. а в cs50 субтитры идут очень быстро и я не могу сразу прочитать и понять
Аноним 21/08/16 Вск 19:14:29 #144 №824673 
>>824672
Ну тогда норм, хотя бы задачники в оригинале читай. Перевод от джаварашей в принципе норм, сам первые видео так смотрел, а потом они начали выпускать раз в 2 недели блин.
Аноним 21/08/16 Вск 22:42:37 #145 №824743 
Много ли я потеряю, если буду заниматься реверсингом только под линуксом и использовать gcc и clang? Лениво переключаться на другой компьютер со студией.
Аноним 21/08/16 Вск 22:52:37 #146 №824746 
>>824743
Почти ничего не потеряешь, если устраивает линуксячий софт - radare2 очень даже норм. А компилятор виндовый иногда пригодится (ну там, посмотреть, как он что-нибудь кодогенерит) - рипни его из студии (у них где-то build tools даже отдельно релизились недавно). Чаще всего вайна будет вполне достаточно, но какую-нибудь хитровыебанную защиту без реальной винды ты не снимешь.
Аноним 21/08/16 Вск 22:56:55 #147 №824752 
Сап, не могу найти скомпилированный libcurl с OpenSSL, нашел только на Cygwin, но он не работает. Может быть есть альтернативы?
Аноним 21/08/16 Вск 23:25:46 #148 №824771 
>>824576
Бамп
Аноним 21/08/16 Вск 23:30:32 #149 №824774 
>>824771
Ничего. Пиши хороший код и не мешай компилятору. Ну криса касперски почитай, ничего особо не поменялось с тех пор.
Аноним 22/08/16 Пнд 10:19:07 #150 №824886 
Я немного могу в указатели, что мне читать дальше?
Аноним 22/08/16 Пнд 10:38:49 #151 №824894 
>>824886

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

Аноним 22/08/16 Пнд 10:41:21 #152 №824895 
>>824576
Выставляй static где можно, inline где нужно, не объявляй переменные с типом меньше int если тебе похуй на переполнение и т.п. А вообще, оптимизация - дело мутное и всё придет с опытом.
Аноним 22/08/16 Пнд 10:43:25 #153 №824897 
>>824752
Сам собери.
Аноним 22/08/16 Пнд 12:40:03 #154 №824962 
>>824895
совет уровня ставь пробелы вместо табов. пошёл нахуй
Аноним 22/08/16 Пнд 12:42:35 #155 №824963 
>>824962
Ты - даун?
Аноним 22/08/16 Пнд 13:32:37 #156 №824991 
!(что-то понял) && do = бегом на тучик;

какое охуенно выражение!теперь всегда буду его использовать
Аноним 22/08/16 Пнд 13:40:21 #157 №824992 
>>824897
Вот в том то и проблема!
Я каким-то чудом скомпилил либу без OpenSSL, ну а для компиляции с ссл просто нету нужных заголовочных файлов (я тщательно искал на сайте OpenSSL, там только новые версии)
Аноним 22/08/16 Пнд 13:42:38 #158 №824994 
>>824963
просто иди нахуй, выблядок, и забирай свои маняоптимизации.

>>824991
шутёх))00

пошли вы все нахуй
Аноним 22/08/16 Пнд 13:44:24 #159 №824995 
>>824994
Поешь говна
Аноним 22/08/16 Пнд 14:55:39 #160 №825034 
>>824994
Это что блять за петух тут раскукарекался?
Аноним 22/08/16 Пнд 15:01:36 #161 №825039 
>>824992
И это https://curl.haxx.se/docs/install.html читал?

>(я тщательно искал на сайте OpenSSL, там только новые версии)
Нихуя не понял. Новые версии чего? OpenSSL?
https://github.com/openssl/openssl/releases
Аноним 22/08/16 Пнд 16:03:16 #162 №825078 
>>825039
>И это https://curl.haxx.se/docs/install.html читал?
Естественно.

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

>Нихуя не понял. Новые версии чего? OpenSSL?
Да. В своих поисках я случайно где-то наткнулся на туториал по компиляции, там кажется нужна была версия 1.0.1d или что-то такое. Полез на сайт, не нашёл нужной версии (1.0.2h скачал, хули), и обосрался при компиляции.
Аноним 23/08/16 Втр 16:55:13 #163 №825815 
Кто-нибудь знает, что нужно, чтобы создать виртуальный микрофон на WDK или что почитать по этому поводу?
Аноним 23/08/16 Втр 17:12:13 #164 №825835 
>>825815
Чужие исходники почитай. Вот, например, первый попавшийся из гугла: https://sourceforge.net/p/virtualaudiopip/virtualaudiopip/ci/c775b372412f6d306d96e09b460593696ebe1927/tree/Virtual%20Audio%20Pipeline/adapter.cpp
Аноним 23/08/16 Втр 17:30:10 #165 №825856 
>>820659 (OP)
хомяки, посоветуйте, пожалуйста, книгу по сишке, где автор не синтаксис неофитам разжевывает, а подробно рассказывает о особенностях
Аноним 23/08/16 Втр 20:38:36 #166 №825999 
>>825856
Удвою, закончил cs50 сишную часть и понял, что не хочу этот язык забрасывать, что дальше читать/учить и чтобы с интересными задачами.
sageАноним 23/08/16 Втр 20:59:31 #167 №826011 
>>825856
http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list
Аноним 23/08/16 Втр 21:59:09 #168 №826046 
>>820659 (OP)
>Object-oriented Programming with ANSI-C (Free PDF) - Axel-Tobias Schreiner

А разве в си есть ООП?
Аноним 23/08/16 Втр 22:07:11 #169 №826052 
>>826046
ООП - это не ключевое слово class, а принципы построения программ.
sageАноним 23/08/16 Втр 22:09:46 #170 №826054 
>>826052
Этот прав.
Аноним 23/08/16 Втр 22:25:24 #171 №826060 
>>826052
Понял
Аноним 24/08/16 Срд 09:07:12 #172 №826195 
>>825856
Завтра ищешь книгу дайв инту си.
Аноним 24/08/16 Срд 12:57:42 #173 №826325 
>>823527
Не страдай хернёй и используй стандартные реализации управление контроллером типа FreeModBus. Если функционала будет нехватать - просто расширь список выполняемых команд.
Аноним 24/08/16 Срд 17:27:23 #174 №826519 
Хочу написать хелловорлд через прерывания биоса на си. чтобы совсем не использовать системные вызовы или вызовы библиотеки, а только прерывания. Какие подводные камни?
Аноним 24/08/16 Срд 17:40:41 #175 №826544 
>>826519
Никаких, но тебе понадобится загрузчик для твоего говнокода или DOS возьми DOSBox.
Аноним 24/08/16 Срд 18:55:37 #176 №826579 
14720541376110.jpg
Любимый ситред
Аноним 24/08/16 Срд 19:53:55 #177 №826594 
Хочу портировать STL на чистый си, какие подводные камни?
Аноним 24/08/16 Срд 19:58:40 #178 №826599 
>>826594
> STL на чистый си
Дженерики в C11 - полное говно.
Аноним 24/08/16 Срд 19:58:41 #179 №826600 
>>826594
Заебешься. И получится неюзабельно.
Аноним 24/08/16 Срд 20:05:49 #180 №826604 
>>826600
>>826599
Я то не всю хочу портировать, а только малую часть, вроде векторов, map, и прочих контейнеров.
Аноним 24/08/16 Срд 20:13:03 #181 №826612 
>>826604
Все равно основа - шаблоны, а шаблоны в сишечке достижимы только через #define T int #include "mymap.h" #undef T и прочие подобные извращения.
Аноним 24/08/16 Срд 20:35:37 #182 №826629 
>>826612
А если без шаблонов и под каждый тип - отдельную структуру?
Аноним 24/08/16 Срд 20:45:39 #183 №826634 
>>826629
> под каждый тип - отдельную структуру?
хех мдаа...
Аноним 24/08/16 Срд 20:46:20 #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
Аноним 24/08/16 Срд 20:49:34 #185 №826641 
>>826635
> VS Code
Все равно надо mingw/cygwin использовать для конпеляции и отладки под виндой, так что пока НИНУЖНО.
Аноним 24/08/16 Срд 21:20:00 #186 №826662 
>>826594
делают двумя способами:
на *void, но как следствие полностью выключает контроль типов, зато можно передавать через границы бинарных модулей
второй способ - на макросах, это сохранит типизацию, но через бинарные модули уже не перекинуть будет
дополнительно можно сэмулировать variant на структурах и объединениях, минус - типы будут изначально ограничены теми, что есть в variant
еще способ - запилить компонентую инфраструктуру типа com или gobject и поверх этого уже делать обобщенные структуры и алгоритмы
Аноним 24/08/16 Срд 21:50:57 #187 №826671 
>>826641
Есть Build Tools от MS, но ты прав, редакторы на HTML не нужны.
Аноним 24/08/16 Срд 22:07:55 #188 №826681 
>>826671
Sublime text с любым плагином на автокомплит и вперёд.
Аноним 24/08/16 Срд 22:25:46 #189 №826693 
>>826641
я сегодня весь день аутировал в спеки, поэтому нихуя не понял о чем ты
Аноним 24/08/16 Срд 22:33:38 #190 №826698 
>>826681
Все равно тот же функционал, что есть у IDE ни один саблайм не даст
Аноним 24/08/16 Срд 22:37:51 #191 №826701 
>>826698
серьёзно, ты пытаешься устроить срач иде против редакторов в си треде?
Аноним 24/08/16 Срд 22:43:19 #192 №826709 
>>826698
Ну, именно весь их функционал никто и не использует в 99% случаев. Автодополнение и базовая навигация прикручиваются куда угодно на раз-два (а в сишке большего и не надо при всём желании, разве что дебаггер, который тоже прикручивается), и студию с её 10+ гигами в самой базовой конфигурации и говном размазанным по всей системе ради этого тащить явно не нужно.
Аноним 24/08/16 Срд 22:59:17 #193 №826723 
>>826709
Рефакторинг? Охуенный отладчик и профилировщик? Инкрементальная конпеляция? Edit & Continue? Без этого всего можно жить, но с этим жить приятнее.
Аноним 25/08/16 Чтв 10:04:00 #194 №826931 
>>826723
>Рефакторинг
после встроенного в иде рефакторинга, получаешь неработоспособное говно, особенно с макросами
>Охуенный отладчик и профилировщик
юзают внешние тулзы

могу сказать, что большего говна чем VS я еще не видел, даже clion не таким уебищем кажется.
Аноним 25/08/16 Чтв 10:35:34 #195 №826949 
>>826723
>Рефакторинг?
Есть в clang-analyzere, как и автокомплит и навигация. Тулзы есть для всех редакторов.
>Охуенный отладчик и профилировщик?
GDB, valgrind
>Инкрементальная конпеляция?
Voobshe ohuet. Даже мейк это умеет.
>Edit & Continue?
Спорная фича, но gdb умеет код патчить в рантайме.
Аноним 25/08/16 Чтв 11:12:05 #196 №826970 
>>826875
>>826876
> 2016
> Использовать швабодный софт
Аноним 25/08/16 Чтв 11:17:28 #197 №826974 
>>826970
Только винда, 1С и дельфи!
Аноним 25/08/16 Чтв 11:19:09 #198 №826975 
>>826970
Но он удобный, хорошо, что в cs50 показали эти ништяки, а то думал, что пределами винды нет жизни, а нет, намного круче все сделать через командную строку, вот!
Аноним 25/08/16 Чтв 11:37:37 #199 №826986 
>>826949
> gdb умеет код патчить в рантайме.
Ох, как же я проиграл.

Алсо, сравнивать GDB с любым отладчиком, у которого есть GUI, просто неприлично. Именно из-за отсутствия нормального отладчика в мире nix люди до сих пор предпочитают отлаживаться printf-ами. GDB хорош только тем, что он есть везде и для всего, ну и ядро отладить еще.
Аноним 25/08/16 Чтв 11:58:05 #200 №827008 
>>826986
> у которого есть GUI
у еклипс есть, у куткреатора есть, его к чему угодно можно подключить
Аноним 25/08/16 Чтв 12:11:01 #201 №827015 
>>826986
>люди до сих пор предпочитают отлаживаться printf-ами
Логи - это просто в принципе другой способ отладки, который хождение по брейкпойнтам с отладчиком дополняет. От задачи зависит. Где-то удобнее дамп памяти смотреть, где-то сложную динамику работы отслеживать.
>у которого есть GUI, просто неприлично
Гуй для GDB у всех ИДЕ есть, даже у емакса, плюс у самого GDB встроенный текстовый. Да и консольный режим там довольно удобный.
Аноним 25/08/16 Чтв 16:37:03 #202 №827118 
>>826986
>люди до сих пор предпочитают отлаживаться printf-ами.
Они это делают не из-за того, что с gdb сложно работать, а потому что отладчик - зло, особенно на встраиваемом железе.
Аноним 25/08/16 Чтв 17:07:44 #203 №827136 
Мамкины филолухи, реквестирую перевод с пидерского, есть либа, с инициализацией:
rt = NewRuntime(1024L);
cx =NewContext(rt, 8192);

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



sageАноним 25/08/16 Чтв 17:10:29 #204 №827137 
>>827136
https://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B5%D0%B4%D0%B0_%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F
Аноним 25/08/16 Чтв 17:10:36 #205 №827138 
>>827136
з.ы. как 'окружение'?
Аноним 25/08/16 Чтв 17:11:20 #206 №827139 
>>827136
Мог бы и не скрывать, что речь о JSRuntime идет.
Аноним 25/08/16 Чтв 17:11:54 #207 №827140 
>>827137
спасибо няша, буду считать
runtime синонимом environment
Аноним 25/08/16 Чтв 17:13:21 #208 №827141 
>>827139
Дергаю спайдерманки за яйцы, просто JS может ввести в заблуждение
Аноним 25/08/16 Чтв 17:14:45 #209 №827142 
>>827139
>JSRuntime
з.ы. и да, я по олдстайлу, типа CreateEnvironment
Аноним 26/08/16 Птн 13:31:42 #210 №827682 
>>820659 (OP)
> Классика от Отцов:
В чём профит давать ссылку на кривой скан? У меня даже пекарня тормозит при открытии. Неужели в сети нет пдфа с нормальным форматированием?
Аноним 26/08/16 Птн 13:46:57 #211 №827705 
14722084175850.jpg
Чем лучше пользоваться ньюфагу для погромирования контроллеров?
AVR Studio или Bascom-AVR?
Аноним 26/08/16 Птн 14:37:05 #212 №827744 
>>827682
Профит в том, чтобы лишний раз послушать нытье
sageАноним 26/08/16 Птн 15:07:05 #213 №827771 
>>827682
Возможно, тебе стоит сменить смотрелку pdf.
Аноним 26/08/16 Птн 15:08:25 #214 №827773 
14722133051840.png
Что это за хуйня?
Где мне взять этот ATmega8515.DAT?
sageАноним 26/08/16 Птн 15:10:11 #215 №827776 
>>827773
Что делает бейсик в этом треде?
Аноним 26/08/16 Птн 15:11:19 #216 №827778 
>>827776
Мне это в атмегу залить нужно
Аноним 26/08/16 Птн 15:26:06 #217 №827795 
>>827771
Нихуя не нужно менять, пдфка - действительно кривой скан, который нужно заменить, в интернетах легко найти нормальную версию.
sageАноним 26/08/16 Птн 15:29:26 #218 №827798 
>>827795
Дай ссылку тогда. И удостоверься, что это не одна из многих криво распозанных версий, где l/i/1 перепутаны и некоторых ; нет.

Ну скан-то действительно кривой, но если у него вьювер тупит на том, что без проблем жует суматра на 800Mhz целероне, это повод задуматься.
Аноним 26/08/16 Птн 15:36:01 #219 №827803 
>>827798
Лень искать, скину книгу в тред когда приду домой. Ну а ты пока проверь вот это http://www.cypress.com/file/56651/download, у меня вроде такая же. Охуенно, книга лежит на официальном сайте Cypress. Это вообще законно?
Аноним 26/08/16 Птн 15:39:47 #220 №827806 
>>827803
> http://www.cypress.com/file/56651/download
Фикс
Аноним 26/08/16 Птн 15:40:33 #221 №827807 
>>827806
Так це ж английская версия.
Аноним 26/08/16 Птн 15:46:06 #222 №827811 
>>827807
Во-первых, в ОП-посте тоже английская версия, но в хуевом качестве. Во-вторых, не советую быть тупорылым сишником, который не может в английский ибо это - очень печально.
sageАноним 26/08/16 Птн 15:49:39 #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
Аноним 26/08/16 Птн 16:01:07 #224 №827829 
14722164682800.jpg
>>827815
>2008
Аноним 26/08/16 Птн 16:02:57 #225 №827832 
>>827815
Ну баг, ну добавят диагностику слегка более вменяемую. Это прекомпилированные заголовки - костыль, который создает множество странных проблем и имеет множество ограничений. Ничего удивительного, что если ты хочешь странного и получаешь странное поведение.
Аноним 26/08/16 Птн 16:46:36 #226 №827883 
>>827815
Так это же 2к8 версия, а сейчас уже 2к15, а то и 15" используется
sageАноним 26/08/16 Птн 19:49:07 #227 №828048 
>>827829
Нихуя не поменялось, инфа 100%
Это же Microsoft, там обратная совместимость на первом месте. В том числе и по багам.
sageАноним 26/08/16 Птн 19:50:12 #228 №828051 
>>827832
>Ну баг, ну добавят диагностику слегка более вменяемую.
2015-я так же сообщает об unmatched #endif

>>827883
>>828048
Аноним 26/08/16 Птн 22:52:05 #229 №828313 
>>820659 (OP)
Вот объясните мне, нахуя нужны в линуксе статические библиотеки? В каких слуаях вообще они используются, если приемущества только у динаических? В инете толком про них не пишут.

Возможно, нубский вопрос. Сегодня начал красноглазить, можете прописчать обряд посвящения.
sageАноним 26/08/16 Птн 23:11:25 #230 №828342 
>>828313
Можешь грузить статически слинкованные бинарники если ФС с [/usr]/lib не подмонтирована.
Впрочем, от этого давно отказались.
Аноним 26/08/16 Птн 23:25:23 #231 №828351 
>>828313
закрытый коммерческий код распространяется не только динамически подключаемыми библиотеками, но и статическими библиотеками
Аноним 27/08/16 Суб 00:01:22 #232 №828376 
>>828313
а нахуя нужны динамические, от которых одни проблемы?
Аноним 27/08/16 Суб 00:06:09 #233 №828379 
>>828376
Explain.
Аноним 27/08/16 Суб 00:25:38 #234 №828388 
>>828379
net, все уже лет как 20 разжевано и объяснено
sageАноним 27/08/16 Суб 00:27:20 #235 №828389 
>>828388
Ты про фриков, пилящих Plan 9?
Аноним 27/08/16 Суб 00:32:13 #236 №828395 
>>828389
и они в том числе
Аноним 27/08/16 Суб 00:57:11 #237 №828409 
>>828402
>>828398
наркоманы, printf %x и %b в Перле все что вам нужно
Аноним 27/08/16 Суб 02:21:14 #238 №828453 
>>828421
Не нужно срать в треде бампами и однотипными постами, пожалуйста.
Аноним 27/08/16 Суб 02:30:33 #239 №828458 
>>820659 (OP)
В книге с оппоста такое упражнение. Упражнение 1.16. Перепишите main предыдущей программы так, чтобы она могла печатать самую длинную строку без каких-либо ограничений на её размер. Предыдущая программа из книги: http://ideone.com/wI6z53. Помогите анончики, я озадачен. Пробовал маллоки\риаллоки - ничего не выходит.
Аноним 27/08/16 Суб 02:33:51 #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/08/16 Суб 07:56:46 #241 №828513 
>>828433
На джаве разработку вести гораздо быстрее и легче, чем на С или C++, и это привлекает множество неосиляторов в разработку на этой платформе.
Аноним 27/08/16 Суб 08:57:02 #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.

Т.е вроде как надо напечатать ТОЛЬКО ДЛИНУ самой большой строки, а не саму строку
Аноним 27/08/16 Суб 10:50:13 #243 №828558 
>>828388
Мог бы и объяснить ньюфагу. Если лень, хотя б скажи где читать.
Аноним 27/08/16 Суб 12:05:55 #244 №828586 
Господа, можно ли оценить как-нибудь оценить заранее обьекты каких классов требуют реализации move-операторов?

Есть большой проект, и есть идея немного его ускорить, но с чего начинать хз. Может есть какие-то виртуалочки или профайлеры которые смогли бы оценить что в первую очередь требует мув операций?
Аноним 27/08/16 Суб 12:06:12 #245 №828588 
>>828528
> and as much as possible of the text
Аноним 27/08/16 Суб 12:19:16 #246 №828596 
>>828410
hexdump
Аноним 27/08/16 Суб 14:06:43 #247 №828651 
>>828588
Как ты это реализовывать собрался? Там же предполагается, что читатель еще не знает ни про указатели, ни про realloc
Аноним 27/08/16 Суб 14:56:08 #248 №828690 
>>828651
Печатать надо length, а текста столько, сколько получится. Звать getline() в цикле, пока введенная строка не закончится на \n (т.е., не будет введена полностью), длины полученных в этом цикле строк складывать, первый кусок хранить. Никаких маллоков и указателей не нужно при такой постановке задания.
Аноним 27/08/16 Суб 16:07:43 #249 №828731 
напомните, если гарантия, что размер структуры будет кратен размеру последнего элемента?
Аноним 27/08/16 Суб 16:13:20 #250 №828735 
>>828731
Нет. По умолчанию оно обычно как-то так и выравнивается, но лучше посмотреть, как в твоем компиляторе указывается выравнивание и указать его явно.
Аноним 27/08/16 Суб 16:27:33 #251 №828750 
>>828433
просто ещё не сделали лучше. ос на мобилки совсем недавно завезли. впрочем нахуй они нужны сейчас - хер знает. наверное, так на остаточном и двигаются.
Аноним 27/08/16 Суб 16:33:57 #252 №828757 
>>828735
чтож, впендюрю _Static_assert . вообще, про компоновку структур в какой главе?
Аноним 27/08/16 Суб 16:56:36 #253 №828781 
>>828757
> про компоновку структур в какой главе?
По всему стандарту размазано, как обычно. Но вообще, 6.2.6 (Representation of types) и 6.7.2 (Type specifiers).
Алсо, _Static_assert не стоит использовать (как и _Bool, _Complex, _Noreturn и прочие новые имена). Их сделали такими только затем, чтобы не сломать чей-нибудь код своими нововведениями. Подключай <assert.h> и используй нормальный static_assert.
Аноним 28/08/16 Вск 14:54:35 #254 №829471 
думаю пару высеров протестить на спектруме/сеге, но не очень догоняю как это технически происходит. есть компиляторы, на опр процы - это понятно, но ведь нужно как-то взаимодействовать с системой, адрес памяти и прочее - нужен заголовок, но чисто языком же это нельзя сделать. как это выглядит? я пишу глобальную структуру, и в ключиках компилятора указываю на неё, что тип ставь её в заголовок? или там, компиляторы сами могут в такие заголовки? короче не понятно.
Аноним 28/08/16 Вск 16:05:36 #255 №829537 
>>828781
>6.2.6 (Representation of types)
ебанутая конечно глава, не знал что с99 такой битодрочерский.
Аноним 28/08/16 Вск 16:26:12 #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/08/16 Вск 16:30:06 #257 №829565 
>>820659 (OP)
Вопрос по FASM.

Возможно ли более адекватно переместить число с плавающей точкой из [var1] в [var2]? Вот мой говнокод:
fld [var1]
fstp [var2]
Аноним 28/08/16 Вск 16:55:47 #258 №829589 
всем, конечно, похуй. но вот нормальная статейка: http://www.cpcmania.com/Docs/Programming/Introduction_to_programming_in_SDCC_Compiling_and_testing_a_Hello_World.htm , а прошлая про запуск из под какой-то там ос...
Аноним 28/08/16 Вск 17:50:11 #259 №829609 
>>829590
>почему сишечку не заменил
потому что нет компиляторов.
Аноним 28/08/16 Вск 19:20:35 #260 №829706 
Использую студию 2015 для компиляции сишного кода. Задал точку входа 0x02000000, но получаю ошибку: "0x02000000" is an invalid value for the "FixedBaseAddress"

Почему так? Как задать нестандартную точку входа, чтобы оставить место ниже?
Аноним 28/08/16 Вск 19:21:23 #261 №829707 
>>829706
Не то сказал. Я задал базовый адрес 0x02000000, а не точку входа.
Аноним 28/08/16 Вск 19:26:50 #262 №829709 
>>829706
>>829707
Разобрался.
Блять, как сделать исполняемый файл не 7 кб, а 1.5? Оптимизатор настроил на уменьшение размера, отключил исключения, смержил секции данных, отключил манифест и стэк канарис, отключил дебаг инфо и убрал релоки.

Как еще можно выебать бинарник?
Аноним 28/08/16 Вск 19:29:22 #263 №829712 
Сосоны, зачекайте, я тетрис на sdl сделал.
Делал под шиндошсом в mingw, но у красноглазиков может тоже скомпилиться.
У кого запустится/не запустится - отпишитесь.
Вишмастеров нету, бля буду.
http://rgho.st/64H2jkvBg
Аноним 28/08/16 Вск 20:21:24 #264 №829752 
>>829712
За музыку лойс
sageАноним 28/08/16 Вск 20:26:02 #265 №829757 
>>829712
> .o .exe вместе с сорцами
Поссал на тебя
Аноним 28/08/16 Вск 20:54:53 #266 №829789 
>>829712
> я тетрис сделал
ты опоздал на 30 лет
Аноним 28/08/16 Вск 21:07:28 #267 №829812 
>>829757
Это специально для виндозников, у которых не стоит gcc.
sageАноним 28/08/16 Вск 21:08:47 #268 №829815 
>>829812
Объектники им зачем?
Аноним 28/08/16 Вск 21:10:14 #269 №829817 
>>829815
от сборки остались же
Аноним 28/08/16 Вск 21:20:01 #270 №829822 
>>828586
крестобляди как есть - сами создают себе проблемы а потом героически их преодолевают посредством темплейтной магии, подключения буста и прочей блевоты
Аноним 28/08/16 Вск 21:27:31 #271 №829829 
>>829565
Одинарную точность можно вообще таскать обычным mov через обычные регистры. Двойную тоже можно, но уже возникает вопрос, нахуя.

>>829709
Рантайм статический? Возьми дизасм и посмотри, чего там компилятор напихал.
Аноним 28/08/16 Вск 22:06:07 #272 №829861 
Есть ли смысл постигать ASM с более игрушечных архитектур, а не с 32битой? Или сразу с головой? Или от человека зависит? И нахуя я вообще это спрашиваю, взял да попробовал
Аноним 28/08/16 Вск 23:59:14 #273 №829975 
>>829829
>Рантайм статический?
Отключил его. Кстати, если я убрал CRT, и сишные библиотеки теперь не инициализаруются при запуске программы, можно ли использовать функции стандартной библиотеки си, или без рантайма можно использовать только WIN API, в котором и так все нужное есть?
Аноним 29/08/16 Пнд 00:27:03 #274 №829994 
>>829975
> можно ли использовать функции стандартной библиотеки си
Как ты сам сказал, они не инициализируются, поэтому не стоит. Если очень хочется, можно сходить в дизасм и исходники CRT и посмотреть, чему нужна инициализация, а чем нет. Но зачем тебе вообще этот дроч на размер?
Аноним 29/08/16 Пнд 00:47:32 #275 №830002 
>>829994
>CRT и посмотреть, чему нужна инициализация
а чего там инициализируется то? хотя-бы примерно.

и понятно, это же по идее, зависит от реализации, как и что будет инициализироваться, и что вы там собрались вручную делать тогда?
Аноним 29/08/16 Пнд 01:07:12 #276 №830013 
>>830002
Куча, локаль (ctype, в частности), stdint/stdout/stderr, tls.
> зависит от реализации
Да, даже от конкретной версии библиотеки. Но можно проверить, например, что memcpy не требует (или требует, например, если копирует через SSE) инициализации.

> что вы там собрались вручную делать тогда
Я вообще не понимаю, нахуя анону это нужно. Бинарники до метра даже для хелловорлда норм.
Аноним 29/08/16 Пнд 01:21:37 #277 №830023 
>>830013
может он хочет максимально минимализировать чтобы выиграть в спец олимпиаде, но тогда, наверно, нужно основу написать на ассемблере, а остальное линковать из ц/чегоещё. или как?
Аноним 29/08/16 Пнд 04:10:07 #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/08/16 Пнд 11:22:36 #279 №830171 
>>829861
>Есть ли смысл постигать ASM с более игрушечных архитектур, а не с 32битой
как появится время, очень хочу вкатится в arm, купить миникампутер за $10 и исследовать эту божественную архитектуру с запилом своей ос. x86 считаю сраным уебищем не достойным благородного дона.
Аноним 29/08/16 Пнд 11:28:52 #280 №830177 
>>829861
>Есть ли смысл постигать ASM с более игрушечных архитектур, а не с 32битой?
Его и есть смысл постигать ТОЛЬКО для игрушечных архитектур если ты не собираешься заниматься реверс инжинирингом или ковыряться в ведре.
Аноним 29/08/16 Пнд 11:30:19 #281 №830179 
>>830177
>ковыряться в ведре.

Речь об андроиде?
Аноним 29/08/16 Пнд 11:32:36 #282 №830181 
>>830179
Ядро любой ОС да и там в большинстве случаев тебе редко нужно будет что-либо писать на ассемблере, но его знания все-равно не помешают.
Аноним 29/08/16 Пнд 11:45:06 #283 №830195 
>>830181
А, понятно
Аноним 29/08/16 Пнд 12:14:06 #284 №830216 
Что, кто-то до сих пор на этом динозавре - "С" программирует?

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

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

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

Через 5 лет, когда Линус уйдёт из проекта, Linux перепишут на плюсах.
Аноним 29/08/16 Пнд 12:15:42 #285 №830218 
>>830216
слишком толсто попробуйте потоньше
Аноним 29/08/16 Пнд 12:28:10 #286 №830227 
>>830218
посоны, а на моём 386 си пойдёт?
Аноним 29/08/16 Пнд 12:29:33 #287 №830228 
>>830013
>Я вообще не понимаю, нахуя анону это нужно
>маленький размер
>win api
Кажется, я догадался, чего хочет тот анон. Поесть говна
Аноним 29/08/16 Пнд 12:50:02 #288 №830242 
>>830216
говноед уходи
Аноним 29/08/16 Пнд 13:05:21 #289 №830253 
>>830242
тут половина мои посты, раньше никто не жаловался
Аноним 29/08/16 Пнд 13:51:47 #290 №830273 
>>830171
Благородный дон может интересоваться арм как хобби, это и вправду интересно, никто благородному дону препон чинить не будет
Аноним 29/08/16 Пнд 13:52:55 #291 №830274 
>>830177
Ну тогда мне он не особо нужен. Хотя я с прицелом как раз на RE и ковыряние, и видел сайт CTF подобный, где играешься с MIPS архитектурой
Аноним 29/08/16 Пнд 14:02:14 #292 №830280 
>>830057
> left != right || left + 1 != right
Попробуй прогнать свой цикл в уме на строке из двух символов тебе нужно было всего лишь сказать left < right.
Аноним 29/08/16 Пнд 14:18:24 #293 №830293 
>>830280
right > left
Аноним 29/08/16 Пнд 14:21:44 #294 №830299 
>>830273
как хобби и как большие перспективы, теже смартфоны например, да что уж, весь эмбедед. запил мобильной ос под опен мобил пхоне, а? а? этоже охуенчик.
Аноним 29/08/16 Пнд 14:22:45 #295 №830300 
>>830253
теперь ты можешь уходить
Аноним 29/08/16 Пнд 14:26:04 #296 №830304 
>>830227
>да что уж, весь эмбедед.
Смею тебя разочаровать, но с ассемблером сейчас ебутся только упоротые пердуинщики и бородатые дядьки на проектах 30-летней давности.
Аноним 29/08/16 Пнд 14:29:56 #297 №830309 
>>830304
я бородатый дядька и я хочу ебаться с асмом на арм, не. ну как ебаться, в пределах ядра ос, не более.
Аноним 29/08/16 Пнд 14:30:10 #298 №830310 
>>830304
>>830299
Промахнулся
Аноним 29/08/16 Пнд 14:31:00 #299 №830311 
>>830309
Ну ебись, жи, нито же не говорит, что это плохо.
Аноним 29/08/16 Пнд 14:32:44 #300 №830315 
>>830311
вот этот чета >>830304 выебуется
C Primier Plus Аноним 29/08/16 Пнд 14:49:06 #301 №830330 
14724713462680.jpg
Двач хочу купить пикрил. Стоит ли?
Аноним 29/08/16 Пнд 14:50:34 #302 №830334 
>>830330
это не читал, но прата ахуенен
Аноним 29/08/16 Пнд 14:59:22 #303 №830345 
>>830293
Там условие продолжение цикла, а не прекращения.
Аноним 29/08/16 Пнд 15:13:02 #304 №830363 
>>830299
Да, ты прав. И в сфере ИБ опять же есть что ловить
Аноним 29/08/16 Пнд 15:13:42 #305 №830364 
>>830330
Покупай, мне очень понравилась книга
Аноним 29/08/16 Пнд 16:30:32 #306 №830442 
Можно ли настроить репозиторий на гитхабе так, чтобы его нельзя было найти по ключевым словам?
Аноним 29/08/16 Пнд 16:31:27 #307 №830443 
>>830304
Ардуино же на сишке не?
Аноним 29/08/16 Пнд 16:33:08 #308 №830445 
>>830442
Зачем? Для личных проектов есть щитбакет битбакет.
Аноним 29/08/16 Пнд 16:37:41 #309 №830447 
>>830443
ядро да, а сверху обмазано движком явы, который тоже на с, сверху уже ява
Аноним 29/08/16 Пнд 16:40:04 #310 №830451 
14724780043090.png
https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms680341(v=vs.85).aspx

Для чего здесь union? Выглядит так, как будто PhysicalAddress и VirtualSize - два отдельных поля с разными значениями, к которым можно обращаться, но union работает как на пикче: то есть одни и те же данные могут интерпретироваться как char или как int.
Аноним 29/08/16 Пнд 16:48:21 #311 №830460 
>>830447
Ты не про андроид говоришь? Ардуино же это просто микроконтроллер с приблудами
Аноним 29/08/16 Пнд 16:58:17 #312 №830468 
>>830460
ну дя, там полноценный линух стоит
Аноним 29/08/16 Пнд 17:48:53 #313 №830519 
Какие еще арм? У вас что, есть настроение заниматься этим без тяночки?
Аноним 29/08/16 Пнд 18:16:23 #314 №830536 
>>830451
Не обращай внимания, особенности спеки. Вариант .Misc.PhysicalAddr не используется, и в 100% случаев тебя будет интересовать .Misc.VirtualSize.
Аноним 29/08/16 Пнд 18:43:02 #315 №830545 
>>830519
тянучки нинужны
Аноним 29/08/16 Пнд 21:47:38 #316 №830762 
>>830280
sudo cat /dev/null > *
Аноним 30/08/16 Втр 06:33:42 #317 №830949 
14725280222960.png
у меня таки получилось. еле сделал, оказывается что сборщиков в tap под лялихом нет - и по итогу пердюлил в память через эмулятор, и из интерпретатора прыгал в память. а ещё у меня не работают глобальный переменные, но константные прокатили. ну не умею я в сегменты, или что там надо в crt0.s... а может это код инициализации нужно написать...
Аноним 30/08/16 Втр 09:14:15 #318 №831000 
>>830519
ю кэн ду зис айзер виз йо арм ор виз йо герл
MINGW vs MSVC Аноним 30/08/16 Втр 11:31:25 #319 №831058 
Ставлю QtCreator для программирования на няшной. Что будет лучше для этого mingw ли msvc?
Аноним 30/08/16 Втр 11:34:47 #320 №831060 
>>831058
mingw ставь, там пердолиться можно
Аноним 30/08/16 Втр 11:35:42 #321 №831062 
>>831060
А может вместо Qt поставить VS?
Аноним 30/08/16 Втр 11:39:27 #322 №831064 
>>831062
не соси хуй мелкософту, братан
Аноним 30/08/16 Втр 12:09:29 #323 №831097 
>>831060
>>831064
Я решил что мне нужен С11, а он есть только в MinGW?
Аноним 30/08/16 Втр 12:11:51 #324 №831100 
>>831097
В mingw он точно есть, насчёт остального не ебу.
Аноним 30/08/16 Втр 16:23:23 #325 №831290 
Подскажите, пожалуйста. Должен добавляться символ в массив.

char params[11];

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

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

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

т.е. работает через буфер, но как сделать чтобы его не было?
Аноним 30/08/16 Втр 16:25:00 #326 №831292 
>>831290
Символы в одинарных кавычках.
Аноним 30/08/16 Втр 16:26:26 #327 №831293 
>>831290
звездочки пропали заменю на "@".
char params[11];

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

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

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

т.е. работает через буфер, но как сделать чтобы его не было?
Аноним 30/08/16 Втр 16:28:50 #328 №831294 
>>831293
Оно не должно работать в обоих случаях. Ты пишешь младший байт адреса строки в param[0], это вряд ли то, чего ты хочешь. Алсо, компилируй с -Wall /W2 или как там у тебя предупреждения включаются, тогда компилятор сразу пояснит тебе, что ты не прав.
Аноним 30/08/16 Втр 16:31:12 #329 №831296 
>>831292
Спасибо за оперативный ответ!
>>831294
Но так работает же:
params[0] = (mode & 0x100) ? 'r' : '-';
Аноним 30/08/16 Втр 16:31:41 #330 №831297 
>>831296
>>831294
Ну, и первый случай тоже работал.
Аноним 30/08/16 Втр 16:44:36 #331 №831306 
>>831296
Именно так и должно работать. 'r' - один char, содержащий код символа r. "r" - адрес массива символов, и сработать такое могло лишь случайно (ну или разве что вот так *((mode & 0x100) ? "r" : "-")).
Аноним 30/08/16 Втр 18:21:11 #332 №831374 
>>831306
Теперь понял разницу. Спасибо.
Аноним 30/08/16 Втр 19:54:41 #333 №831436 
Двощ, помоги.
Хочу скопировать один массив в другой но на выходе получаю херню.
Что я делаю не так?
http://ideone.com/wCjW9s
Аноним 30/08/16 Втр 20:10:15 #334 №831447 
>>831436
У тебя len 3, значит он копирует только 3 байта. Нужно 12
Аноним 30/08/16 Втр 23:16:27 #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?
Аноним 30/08/16 Втр 23:25:13 #336 №831616 
>>831613
Так это вызывающий должен делать free, не ты. То есть, он зделол data = item_data(somelist); do_something_with(data); ну и делает free(data) потом, когда data ему больше не нужно. Можешь free() обернуть в какое-нибудь item_data_free(), это во-первых, избавит пользователя от раздумий, как очищать (и надо ли), во-вторых, позволит перекатиться с дефолтовой кучи на что-то кастомное, а в-третьих, позволит тебе делать какую-нибудь очистку, если data - не просто массив байтов, а какая-нибудь сложная структура.
sageАноним 30/08/16 Втр 23:26:19 #337 №831617 
>>831613
Алсо, передай тому, кто научил тебя писать list_t, что он мудак.
Аноним 30/08/16 Втр 23:35:29 #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 или хедер гвард?
Аноним 30/08/16 Втр 23:37:44 #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/08/16 Втр 23:46:42 #340 №831631 
>>831626
> Ну, или объясни ты, почему так нельзя?
Потому что _t зарезервированный суффикс в POSIX, но на это похуй. А на что не похуй, так это на то, что: 1) есть IDE, которые тебе и так скажут, чем является идентификатор; 2) переменную от типа можно отличить по контексту, нет смысла повторять это в имени (посмотри сюда http://ideone.com/u7ifNQ ).

> как мне сделать так чтобы она и возвращала, и очищалась?
Вот у тебя в конце поста все правильно сделано.

>>831626
Покажи, как компилируешь и линкуешь?
Аноним 30/08/16 Втр 23:47:57 #341 №831633 
>>831628
> Ну, или объясни ты, почему так нельзя?
всё можно, всегда так делаю.

> Это и всё?
ну вариантов есть несколько, или вот так, по кривому, или передавать уже выделенную тобой память в функцию, и тут 2 варианта, если размер не высчитывается до рантайма: сделать функцию которая вернёт необходимое число памяти, либо передавать указатель на память вместе с размером, и если в функции не хватит - возвратить ошибку.
Аноним 30/08/16 Втр 23:57:18 #342 №831638 
>>831631
> pe_inject.h
осторожна с хакиром.
Аноним 30/08/16 Втр 23:57:40 #343 №831639 
>>831631
>Покажи, как компилируешь и линкуешь?
Блять, из какого файла проекта выдирать эти опции? Ладно, перечислю, что я настроил:

Оптимизация: O1

Code generation:
Отключены исключения C++
Security Check: disable

Линкер:
Отключил манифест
Отключил дебаг инфо
Точка входа WinMain
Randomize Base Address выключил

Конфиг
https://ideone.com/Jq0W1w
Аноним 30/08/16 Втр 23:58:27 #344 №831640 
>>831639
иди ты нахуй, короч)
Аноним 30/08/16 Втр 23:59:58 #345 №831643 
14725907988870.jpg
>>831640
Аноним 31/08/16 Срд 00:02:08 #346 №831644 
>>831639
Если это студия, там в свойствах проекта можно командную строку результирующую посмотреть. Где nodefaultlib (/Zl) у компилятора? Где выключенный инлайн (/Ob0 вроде)? И оптимизации временно выключи.
Аноним 31/08/16 Срд 00:02:49 #347 №831645 
>>831633
>>831631
Говорите оба полные противоположности друг другу, но ладно, всё приму к сведению, и буду искать лучший вариант. Спасибо!
sageАноним 31/08/16 Срд 00:03:57 #348 №831646 
>>831644
Не заметил проект. Вот <IntrinsicFunctions>true</IntrinsicFunctions> еще.
Аноним 31/08/16 Срд 00:06:24 #349 №831647 
>>831645
>противоположности друг другу
нет. просто в твоём варианте меньше гибкости, ведь если ты передаёшь память, то она может быть много чем и где угодно, и даже тупо, можно переиспользовать.
Аноним 31/08/16 Срд 00:13:36 #350 №831652 
>>831647
Он про суффиксы у типов, наверное. А что касается item_data - да, тут >>831633 ты все правильно расписал.
Аноним 31/08/16 Срд 00:14:09 #351 №831653 
>>831647
> или передавать уже выделенную тобой память в функцию,
Т.е. если я передам выделенную память в функцию, как же её тогда потом очистить, например я напрямую передал в printf? Или нужно сделать функцию с printf и в ней же в конце по указателю выполнять free?
Я правильно понимаю что если был выполнен malloc, то дальше для высвобождения памяти используется только free, "само" ничего не будет?
Аноним 31/08/16 Срд 00:16:27 #352 №831655 
>>831652
>Он про суффиксы у типов, наверное.
Да, про них в большей степени, но и как бы ты говоришь что "так правильно", а он говорит "вариант кривой".
Аноним 31/08/16 Срд 00:17:25 #353 №831656 
>>831644
>Где nodefaultlib (/Zl) у компилятора? Где выключенный инлайн (/Ob0 вроде)? И оптимизации временно выключи
Сделал.
>Вот<IntrinsicFunctions>true</IntrinsicFunctions> еще
Выставил false. Ошибка та же самая.

https://ideone.com/12zlSO
Аноним 31/08/16 Срд 00:31:13 #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/08/16 Срд 00:49:01 #355 №831666 
>>831661
Понял, спасибо за подробное разъяснение!
Аноним 31/08/16 Срд 22:15:43 #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;
}
}
Аноним 31/08/16 Срд 22:17:23 #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;
}
}

Блин, забываю про эти звездочки.
Аноним 31/08/16 Срд 22:20:11 #358 №832393 
>>832389
Все правильно, только ты не создаешь промежуточное звено, а просто запоминаешь указатель на удаляемый элемент.
Аноним 31/08/16 Срд 23:38:19 #359 №832481 
>>832393
Понял, спасибо.
Аноним 01/09/16 Чтв 18:26:04 #360 №832927 
Няши-сисяши, реквестирую годный справочник по стандартной библиотеке с поиском и примерами типа -> http://www.cplusplus.com/
Аноним 01/09/16 Чтв 18:29:10 #361 №832932 
>>832927
Во-первых, для сишечки тоже можно читать по твоей ссылке (stdio.h -> cstdio и т. п.). Во-вторых, есть всякие dash и zeal, хоть там и нет примеров.
Аноним 01/09/16 Чтв 18:39:03 #362 №832944 
>>832932
после того, как я не нашел strcasecmp, мне этот ресурс показался пидерским.
Аноним 01/09/16 Чтв 18:56:17 #363 №832962 
>>832944
> не нашел strcasecmp
Это все потому, что в Си внезапно нет strcasecmp. Она из посих.
Аноним 01/09/16 Чтв 19:09:53 #364 №832969 
>>832962
>Она из посих
ебанутся и чо теперь, в какомнибуть микросовтовской поставке ее может не быть?
Аноним 01/09/16 Чтв 19:30:26 #365 №832987 
14727474264110.png
14727474264121.png
>>832969
> ее может не быть?
Может и не быть. Выбор за тобой.
Аноним 01/09/16 Чтв 19:48:24 #366 №833002 
>>832987
strings.h жеж
Аноним 01/09/16 Чтв 19:49:25 #367 №833006 
з.ы. у мелкопидоров как всегда, лол:

#if defined(_WIN32) || defined(_WIN64)
#define snprintf _snprintf
#define vsnprintf _vsnprintf
#define strcasecmp _stricmp
#define strncasecmp _strnicmp
#endif
Аноним 01/09/16 Чтв 19:56:46 #368 №833021 
>>833006
И в чем лол?
Аноним 01/09/16 Чтв 19:57:50 #369 №833023 
>>833006
> у мелкопидоров как всегда
Что, серьезно? Пидоры! Насколько я помню, их _snprintf отличается поведением! Это в какой версии так? Затести, пожалуйста, вот это: http://ideone.com/mmzxxF
Аноним 01/09/16 Чтв 20:03:03 #370 №833039 
>>833021
_свойособенныйпуть
Аноним 01/09/16 Чтв 20:05:47 #371 №833046 
>>833023
>Насколько я помню, их _snprintf отличается поведением
это был тогда не микрософт, если бы не отличался поведением. у них там свой мир, кек
Аноним 01/09/16 Чтв 20:07:00 #372 №833049 
>>833039
Этот путь явно описан в стандарте: негоже компилятору засорять своими именами стандартные хедеры. А вот с префиксом _ можно. И даже >>832987 гцц, если его попросить работать по стандарту, без GNU-говна, знает про это.
Аноним 01/09/16 Чтв 21:19:06 #373 №833159 
Нужно рекурсивно обойти каталоги и вызвать некоторую функцию для каждого файла. Можно ли сделать это без CRT при помощи функций сишкой библиотеки, или надо использовать только вин апи? Стоит ли для ускорения запускать обход в несколько потоков?

По-моему, многопоточность это какая-то хуита, если только каждый тред не выполняется отдельным ядром. Если это не так, треды будут просто отрабатываться по мере их выталкивания из системной очереди со скоростью работы однопоточного приложения.
Аноним 01/09/16 Чтв 21:22:06 #374 №833163 
>>833049
давай еще вЕрбЛюдОсТайЛ потащим в стандартную либу
Аноним 01/09/16 Чтв 21:26:15 #375 №833166 
>>833159
readdir и прочие из POSIX, но как видишь у мелкопидоров свой путь.
Аноним 01/09/16 Чтв 21:30:38 #376 №833171 
>>833159
> без CRT при помощи функций сишкой библиотеки
Поделил на ноль.

> многопоточность это какая-то хуита, если только каждый тред не выполняется отдельным ядром
Один тред может ожидать IO. В это время другой может обрабатывать данные.
Аноним 01/09/16 Чтв 21:45:22 #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.
sageАноним 01/09/16 Чтв 21:48:42 #378 №833181 
>>833180
>Если возвращается BOOL, то как можно различать ненулевые значения?
Ненужно различать, всё, что не ноль — истина.
> У меня сравнение с ERROR_NO_MORE_FILES вообще выдает ошибку "несовместимый тип".
Потому что ERROR_NO_MORE_FILES возвращает функция GetLastError()
Аноним 01/09/16 Чтв 21:51:10 #379 №833182 
>>833180
Забей на ERROR_NO_MORE_FILES. Тебе ли не похуй, почему оно тебе не хочет больше файлов выдавать?
Аноним 02/09/16 Птн 03:58:20 #380 №833333 
14727779007210.png
Я конечно понимаю что я ахуел, но поясните пожалуйста задание пикрелейтед. Строки из пробелов значит что надо печатать только пробелы?
Аноним 02/09/16 Птн 04:15:57 #381 №833335 
>>833333
Ну вот смотри, у тебя есть примерно такой текст: http://ideone.com/jkT4kG, в нем текст отформатирован пробелами. Твоя задача - "сжать" его таким образом, чтобы он занимал меньше байтов, но выглядел точно так же. Т.е., второе слово в первой строке начинается в позиции 9 (считая с 1), и, если ширина одного символа табуляции = 8, то четыре пробела вторым словом можно заменить на один '\t'. И так далее. Ищешь табстопы, втыкаешь табы. Печатать надо сначала входной текст, а потом получившийся текст, чтобы убедиться, что они выглядят абсолютно идентично. Ну и счетчик сэкономленных байтиков заведи до кучи.
Аноним 02/09/16 Птн 05:10:32 #382 №833338 
>>833333
> заменять пробелы смесью табов и пробелов
Нет, спасибо.
Аноним 02/09/16 Птн 05:12:13 #383 №833339 
>>833338
Это учебное задание, хотя во времена DOS некоторые такое извращение практиковали.
Аноним 02/09/16 Птн 12:38:09 #384 №833455 
>>833333
похоже на задание из рассейского вузика, такое же ебануто-беспощадное. автор то и не знает, что таб может и как 1500 пробелов отображаться
sageАноним 02/09/16 Птн 13:22:24 #385 №833476 
>>833455
>автор то и не знает, что таб может и как 1500 пробелов отображаться
Автор знает. А вот ты ещё читать не научился, а уже тявкаешь тут.
Аноним 02/09/16 Птн 13:28:05 #386 №833479 
>>833476
> А вот ты ещё читать не научился
ну так и переведи с пидерскопреподского на нормальный, че там афтор хочет то? с примером желательно.
Аноним 02/09/16 Птн 14:07:41 #387 №833515 
>>833479
Что такое "стопы табуляции" тебе не ясно? Тогда пойди погугли и больше не выебывайся с тупыми вопросами.
Аноним 02/09/16 Птн 14:26:33 #388 №833524 
>>833515
иди сам гугли, мне задачки для пидеров нинужны
Аноним 02/09/16 Птн 14:41:55 #389 №833529 
Нужно перечислить все имеющиеся в системе файлы при помощи win api и сделать некоторое преобразование файлов, у которых расширения принадлежат заданному списку. Обход дерева каталогов сделал. Какие файлы нельзя преобразовывать? Открытые и запущенные? Системные и скрытые? Как проверить, что никаких действий с файлом сделать нельзя? Как преобразовать не открытый и не запущенный файл, если какие-то его флаги не позволяют преобразование (кстати, какие?)?

Как можно эффективно проверить, что файл имеет расширение из списка, не итерируя по списку расширений? Пердолить на чистом си хэш-таблицу?
Аноним 02/09/16 Птн 15:22:50 #390 №833552 
>>833529
>Как можно эффективно проверить, что файл имеет расширение из списка, не итерируя по списку расширений?

И еще вопрос. Мне нужно копировать текущий файл в файл с таким же именем, к которому добавлено расширение .tmp. Как это сделать эффективно?

Сначала я хотел поступить так: запоминаю указатель на нулевой завершающий байт и делаю lstrcat(file, ".tmp"), создаю файл с новым именем функцией CreateFile и копирую в него данные. После этого по указателю на нулевой байт присваиваю 0 и отсекаю расширение .tmp. Далее удаляю исходный файл и переименовываю новым.

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

При обходе дерева каталогов переполнения стека из-за этого не будет? Как сделать эти операции эффективнее? В том числе хочу сократить время на работу со строками. Мне нужно OCHE БЫСТРО.
Аноним 02/09/16 Птн 15:31:42 #391 №833560 
Есть кто в треде?
Аноним 02/09/16 Птн 15:57:30 #392 №833589 
>>833560
Есть
Аноним 02/09/16 Птн 17:01:15 #393 №833636 
>>833552
>Мне нужно OCHE БЫСТРО
5000 рублей
Аноним 02/09/16 Птн 18:33:06 #394 №833747 
Нужна небольшая помощь по СИ, есть тут кто нибудь сейчас?
sageАноним 02/09/16 Птн 18:37:20 #395 №833751 
>>833747
Я.
Аноним 02/09/16 Птн 20:25:06 #396 №833842 
>>833751
Блл, опять пару мин подождал и отошел
Ты тут ещё?
Аноним 02/09/16 Птн 22:13:32 #397 №833990 
У меня есть хэш в виде 4-байтового числа. Как при помощи win api записать его в файл в виде последовательности из четырех байт? wsprintf с форматной строкой %c это ведь не то?
Аноним 02/09/16 Птн 22:15:24 #398 №833992 
>>833990
Внезапно, WriteFile(..., &твойхэш, sizeof(твойхэш), ...). Надеюсь, ты не тот пидор, который пилит криптор.
Аноним 02/09/16 Птн 22:31:02 #399 №834002 
>>833992
>Надеюсь, ты не тот пидор, который пилит криптор
Нет, что ты.
Аноним 03/09/16 Суб 04:41:06 #400 №834109 
C - филиал win api. мда.
Аноним 03/09/16 Суб 09:55:04 #401 №834160 
>>820659 (OP)
Почему в ОП-посте нет ссылки на скачивание?
Аноним 03/09/16 Суб 09:56:00 #402 №834161 
>>834160
В гугле только всякую парашу нахожу
Сорян, я новичок тут просто
Буду благодарен если кинете ссылку на Си
Dmitry 03/09/16 Суб 13:27:10 #403 №834314 
>>820708
Двачую.

Аноны а почему в C нет for ( var n in array )?
В плюсах вроде тоже нет, хотя там оно как раз еще больше нужно.
Если хочу работать с целым массивом то удобно и можно так реализовать чтобы меньше циклов тратило.
Dmitry 03/09/16 Суб 13:28:39 #404 №834316 
>>833552
Bash
Аноним 03/09/16 Суб 13:30:52 #405 №834319 
>>834314
> В плюсах вроде тоже нет
Уже есть.
Dmitry 03/09/16 Суб 13:41:58 #406 №834333 
В какой ОС вы работаете?
Какая у вас графическая оболочка?
В с++ треде много шиндовс-рабов, без понятия как там работать можно, композитный оконный менеджер, куча дерьма в автозагрузке, нет нормальной консоли, нет по людски сделаного софта, только хуйня с кнопкой 'сделать заебись', нет мануалов, нихера нет.
Много кому и графическая оболочка то ненужна, только tmux, в GNU/Linux сейчас уже избавились от старого дисплей сервера - Xorg, заменили на Wayland display server protocol.
Новые тайловые и композитные менеджеры теперь очень легкие, используется простой API, какая-нибудь графическая библиотека и ничего лишнего.
Но смущает что на него не очень то быстро переходят, уже около 20 разных графических оболочек создано, но над многими работа идет весьма медлено.
Вы тайлами пользуетесь или чем?
Мне DWM нравился, но устарел, сейчас на Weston, надо на Velox перекатится.

Вы код только для работы пишете?
Dmitry 03/09/16 Суб 13:43:55 #407 №834336 
>>834319
Ну конечно, там много способов использования, а в сишке кроме массивов где подобный функционал пригодится?
Аноним 03/09/16 Суб 13:44:47 #408 №834337 
>>834333
> В какой ОС вы работаете?
> Какая у вас графическая оболочка?
OS X разумеется.
Dmitry 03/09/16 Суб 13:49:37 #409 №834347 
>>834337
Ну конечно, как же Я не догадался, пишете на кастрированом языке в кастрированой ос, заодно помогая господину и гебне
Аноним 03/09/16 Суб 13:52:18 #410 №834353 
>>834347
Зачем ты такой фанатик?
Аноним 03/09/16 Суб 14:06:11 #411 №834367 
>>834333
Принимаешь наркотики?
Dmitry 03/09/16 Суб 14:18:17 #412 №834385 
>>834367
Немношк
Аноним 03/09/16 Суб 14:25:20 #413 №834389 
>>834385
Как и ожидалось от неймфага
Dmitry 03/09/16 Суб 14:36:44 #414 №834397 
>>834389
Reverse-enginering-ом увлекаешься?
Аноним 03/09/16 Суб 14:38:38 #415 №834399 
>>834397
Да, у меня даже истерики иногда на этой почве случаются
Dmitry 03/09/16 Суб 14:47:07 #416 №834409 
>>834399
А что ты реверсишь? Надо бы nouveau до нормального состояния довести, чтобы OpenCL было, чтобы Vulcan, OpenGL 4.5 был.
Блоб там гиганский, говнокода и легаси дохуище, если все лишнее убрать то опенсорцный драйвер будет быстрее чем в шиндовсе, ибо майкрсофт платит чтобы в GNU/Linux были плохие дрова
Аноним 03/09/16 Суб 14:50:26 #417 №834411 
>>834333
>В какой ОС вы работаете?
Oracle Linux.
>Мне DWM нравился, но устарел
Пользуюсь патченным dwm, tmux + vim/emacs, брат жив зависимость есть. Из реально графических приложений (тех, что нельзя запустить в консоли), что регулярно юзаю, это лиса, тандербёрд и zathura для чтения pdf.
Аноним 03/09/16 Суб 14:51:38 #418 №834414 
>>834409
>ибо майкрсофт платит чтобы в GNU/Linux были плохие дрова
ты реально поехавший
Аноним 03/09/16 Суб 14:56:15 #419 №834419 
>>834409
>Надо бы nouveau до нормального состояния довести, чтобы OpenCL было, чтобы Vulcan, OpenGL 4.5 был

Ниасилю, я еще маленький
Dmitry 03/09/16 Суб 15:12:14 #420 №834433 
>>834414
Какой же ты манька, скажи еще что майкрсофт, фейсбук и гугл не сотрудничают с правительствами.
Аноним 03/09/16 Суб 15:16:19 #421 №834435 
>>834433
ты сначала пруфы притащи, что мелкомягкие платит кому-то (кому?), что в линуксе были плохие дрова (каким образом они должны быть плохими?)
Dmitry 03/09/16 Суб 15:19:51 #422 №834437 
>>834411
Захура, это же надстройка над mupdf (пожно сам mupdf юзать) или над poppler (это уже чисто библиотека).
У тебя ноутбук?
Dmitry 03/09/16 Суб 15:21:34 #423 №834438 
>>834435
>кому
nvidia же.
Амуда сама по себе плоховатые дрова делает, и они немного открытые, а интел сама опенсорцные дрова делает.
Dmitry 03/09/16 Суб 15:23:50 #424 №834443 
>>834435
Ты посмотри на размер дров этих, обосратся можно, пруфоф нет, ибо не имею отношения к этим корпорациям, но это весьма очевидно что что-то не так, раз майкрсофт держит рынок даже после скачивания в говно, а в говно они скотились начиная с семерки.
Аноним 03/09/16 Суб 15:52:30 #425 №834464 
Ебланы хуесосят винду и не понимают, что винда нужна для того, чтобы делать это https://peinjector.eu/
Аноним 03/09/16 Суб 15:53:34 #426 №834466 
>>834437
У меня десктоп. Я без понятия о mudf. Юзаю zathura из-за vim-like key bindings.
Dmitry 03/09/16 Суб 15:57:36 #427 №834468 
>>834464
Прошивка для игр и вирусов, об этом все и говорят, ненужно.
Dmitry 03/09/16 Суб 15:58:53 #428 №834469 
>>834466
У тебя он установлен наверно, пробуй mupdf открыть, он сам по себе не откроется, надо путь к пдф-ке указать.
Аноним 03/09/16 Суб 16:01:22 #429 №834472 
>>834469
И нахуя мне это нужно?
Dmitry 03/09/16 Суб 16:02:58 #430 №834473 
>>834468
Windows - survilence engine, tracking OS.
Dmitry 03/09/16 Суб 16:04:03 #431 №834475 
>>834472
Хрен знает, попробуй, мне захура сложновата показалась.
А почему на Wayland не перешел?
Dmitry 03/09/16 Суб 16:25:30 #432 №834484 
А еще я сосу хуи.
Аноним 03/09/16 Суб 16:29:57 #433 №834486 
>>834475
меня пока иксы устраивают, я не гонюсь за всем новым
Аноним 03/09/16 Суб 16:37:35 #434 №834489 
>>834109
Ну так си только в винде используется поэтому винда и си такое говно, если я не ошибаюсь
Аноним 03/09/16 Суб 16:38:36 #435 №834490 
>>834314
тому что нельзя вычислить размер массива в си
Аноним 03/09/16 Суб 16:39:47 #436 №834491 
>>834333
GNU/FSF - говнософт по определению.
На энтузиазме нельзя построить действительно хорошую ос и софт.
Dmitry 03/09/16 Суб 16:51:08 #437 №834498 
>>834486
Тут не в новизне дело, иксы избыточны, устарели уже, новый протокол написан с нуля, заточен под разработку графических приложений в наши дни, ничего лишнего
Dmitry 03/09/16 Суб 16:55:36 #438 №834501 
>>834490
Размер нельзя, но можно сделать так:
for (int i;arr;i++)
{
}
Но вычисление количества элементов не должно быть реализовано на C, компиляторы на C++ пишутся, можно на асме что угодно реализовать чтобы дополнить синтаксис сишки.
Dmitry 03/09/16 Суб 16:56:22 #439 №834502 
>>834491
Но они уже построили ее маньк.
Лучшей ОС сейчас нет.
Аноним 03/09/16 Суб 17:00:39 #440 №834504 
>>834489
>Ну так си только в винде используется
Что за херню ты несёшь, на C написано 99% софта для UNIX-like OS.
Аноним 03/09/16 Суб 17:46:43 #441 №834528 
vilsual studio это просто редактор для Си?
Аноним 03/09/16 Суб 17:47:15 #442 №834529 
visual studio эт просто редактор для Си?
Аноним 03/09/16 Суб 17:50:48 #443 №834530 
>>834529
это просто текстовый редактор, типа notepad.
Dmitry 03/09/16 Суб 18:25:57 #444 №834549 
>>834501
arr
туплю
Dmitry 03/09/16 Суб 18:26:53 #445 №834550 
>>834528
Нет, это ненужная жирная и тормозная хуета, используй nano, vim, emacs, и GCC
Аноним 03/09/16 Суб 20:58:07 #446 №834674 
>>834550
> nano, vim, emacs, gcc
из этого только nano можно использовать, остальное же gnu-софт, т.е параша
Аноним 03/09/16 Суб 21:03:16 #447 №834682 
>>834674
уебуй петух нахуй с нашего тредика
Аноним 03/09/16 Суб 21:06:04 #448 №834687 
>>834682
ну вот почему gcc лучше того же icc/msvc/clang-llvm? Я например не могу пользоваться компилятором, где очень много говна
vim-emacs - сложно освоить, мне непонравилось, смылса в этом нет, особенно под виндой
Аноним 03/09/16 Суб 21:09:23 #449 №834690 
>>834687
>vim
там скорость работы с текстом возрастает в миллиард раз, ты выдно заблудившийся хипстер мышкодрочер
Аноним 03/09/16 Суб 21:13:31 #450 №834695 
>>834690
Он мне может обеспечить нормальный рефакторинг, автокомплит без лагов и провисаний с задержкой 3-5 секунд? А профилирование, юнит-тесты? А нормальная поддержка отладчика?

Все это недоступно виму. Поэтому я вставляю зонды в сраку, начинаю сосать хуй у господина, запуская свою любимую VS2015
Аноним 03/09/16 Суб 21:17:29 #451 №834697 
лол, знавал одного старого петухана, он двумя указательными пальцами печатал, затем если надо копирнуть, жал лкм, выделял, нажимал пкм-выбирал копировать, тащил курсор в место вставки, нажимал пкм-вставить. наверное поэтому он был занудой и очень любил давать советы.
Аноним 03/09/16 Суб 21:20:51 #452 №834699 
>>834695
>начинаю сосать хуй у господина
тебе в тредик пхп, джава, сишарпа или раста
sageАноним 03/09/16 Суб 21:21:20 #453 №834701 
>>834690
> скорость работы возрастает
После ESC:%!rm -f `which vim` и установки нормального текстового редактора скорость работы значительно возрастает.
Dmitry 03/09/16 Суб 21:30:26 #454 №834706 
>>834699
Двачаю бро, однако меня все-же разочаровывает пассивность некоторых программистов, они работают только за бабло, и даже для себя хуй что напишут, или не делают ПО общедоступным, или только бинарь предоставляют, многие делают свои велосипеды вместо того чтобы довести до ума уже готовый.
Dmitry 03/09/16 Суб 21:32:01 #455 №834707 
>>834695
Дай мне свой айпишник, логины пароли аккаунтов, доступ к вебке микрофону и клавиатуре, адрес тоже давай.
Dmitry 03/09/16 Суб 21:32:45 #456 №834708 
>>834674
nano и есть GNU- software
Dmitry 03/09/16 Суб 21:35:58 #457 №834713 
>>834687
Незнаю что ты там имел в виду под 'много говна' но GCC компилирует быстрее, производит более быстрый код.
Одно мне не нравится - он почти стендалоне (но не на нормальной OS - Gentoo тут по умолчанию минимальный необходимый функционал, можно еще меньше сделать, ПО стает очень быстрым и легким)
Аноним 03/09/16 Суб 21:36:37 #458 №834715 
>>834706
Помоему разобраться в чужом посложнее, чем написать свое с нуля
Мимонафаня
Dmitry 03/09/16 Суб 21:36:52 #459 №834716 
>>834697
Хахах, он же на С кодил?
Dmitry 03/09/16 Суб 21:40:20 #460 №834718 
>>834715
Ну хуй знает, Я вот зеро был в C, да и сейчас хелловордщик, однако читать код могу, могу править, а с нуля писать хз, Мне хоть бы на что нибудь посмотреть надо.
Чтобы улучшать скилы надо читать много кода, особенно новичкам, без этого никак, благодаря FSF у всех есть такая возможность.
Аноним 03/09/16 Суб 21:41:55 #461 №834719 
>>834716
нет конечно, он его неосилил, но советами заебывал
Dmitry 03/09/16 Суб 21:45:25 #462 №834722 
>>834718
Алсо начал читать ttytanks, по началу нихера не понимал что это, зачем? Но спустя некоторое время путем поправочек, чтения чтения, поправочек, и пулл-реквестов наверно 50-60% кода там мои, еще Я разбил его на большее количество файлов, стало проще ориентироватся, добавил скрипт для прекомпилежки (делает готовые бинари для разных процессоров, они не нуждаются ни в каких либах, будет работать и на BSD и на всяких LFS, роутерОС по идее, где нет библиотек)
Dmitry 03/09/16 Суб 21:48:40 #463 №834726 
>>834722
И грубо говоря это теперь другая совсем игра, раньше скрин обновлялся целиком, теперь по людски выводит изображение, но артефакты случаются, еще надо пофиксить ввод, ибо он там через wgetch реализован, что полный пиздос, надо напрямую клавиши слушать через evdev или libinput, чтобы скорость игры от терминала не зависела
Dmitry 03/09/16 Суб 21:55:03 #464 №834731 
GNU Debugger GDB полезен если программа не крашится, но ведет себя немножко странно?
И как запустить скрипт или кусочек баш кода из Makefile? или может можно в мейкфайле цикл запустить?
(Автор этого поста был предупрежден.)
Аноним 03/09/16 Суб 23:20:38 #465 №834850 
Срущий неймфаг, мое терпение истекает вместе с терпением анонов.
Аноним 04/09/16 Вск 04:08:50 #466 №834917 
>>834850
Я его уже репортил. Моче - похуй. Спасибо, Абу.
Аноним 04/09/16 Вск 13:34:48 #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/09/16 Вск 13:39:49 #468 №835066 
>>834917
Моче не похуй, но она придерживается сдержанной позиции пока что - он ничего серьезного не натворил. Но если будет продолжать доебывать анона и срать в тредах, то запросто можно будет побанить его за говнопостинг.
Аноним 04/09/16 Вск 15:25:20 #469 №835122 
сисечки, под винойе мэйкфайл неверно интерпретирует звездочки в правилах, как это забороть? з.ы. примера под рукой нет, но проблема известная и знающим понятна.
Аноним 04/09/16 Вск 15:26:15 #470 №835123 
>>835122
>быстрофикс
под виндовз
Аноним 04/09/16 Вск 19:44:32 #471 №835429 
>>835060
Какие-то особенности терминала. Он не отдает EOF по Ctrl+D, пока он не на отдельной строке.
Аноним 04/09/16 Вск 21:56:00 #472 №835542 
Анон, почему мой кодес выполняется с ошибкой? https://ideone.com/K5ql4h

sh[] - спижженый шелл, который должен запускать calc.exe на вин XP.
code[] - мой шеллкод, вот его сурс https://ideone.com/dbvsGu

Нихуя не работает. Когда управление передается моему шеллкоду, процессор доходит до вызова WinExec и улетает куда-то в ебени. Как надо писать шеллкоды под win7 и старше? На всех сайтах посоны заверяют, что под win xp работает заебись.
Аноним 04/09/16 Вск 22:00:58 #473 №835548 
>>835542
https://en.wikipedia.org/wiki/Data_Execution_Prevention
Аноним 04/09/16 Вск 22:02:08 #474 №835550 
>>835548
Тогда почему выполнился почти весь шеллкод кроме вызова WinExec?
Аноним 04/09/16 Вск 22:04:07 #475 №835552 
>>835550
И если этим шеллом заражать бинарники, то тоже программа при выполнении падает. Потом правлю точку входа на оригинальную , обнуляю байты шеллкода, и зараженная программа продолжает работать как раньше.

Заражаю code cave в секции кода, т.е. DEP тут вообще никак не должен помешать.
Аноним 04/09/16 Вск 22:14:53 #476 №835557 
>>835542
> почему мой кодес выполняется с ошибкой?
Потому что плохо читал гайды, читай лучше.
1) Если в XP ShellExec и лежала в каком-то из билдов по 0x7C8629FD, это нихуя не значит, что она и в 7 будет там лежать. Можешь сходить отладчиком и посмотреть, что там лежит. Это что касается кода sh. Что же касается кода в sh, там ты вообще вызываешь функции по адресам 0x00000020 и 0x00000026 - подозреваю, что рипнул из объектника, а про существование поправок (fixups, relocations) не знаешь.
2) Посмотри, как посоны делали поиск KERNEL32, парсинг таблицы экспортов, чтобы узнать адреса LoadLibrary/GetProcAddress, хэши имен API, вот это все.
3) У нас теперь ASLR, всё стало сложнее.
Аноним 04/09/16 Вск 22:19:04 #477 №835561 
>>835557
>подозреваю, что рипнул из объектника, а про существование поправок (fixups, relocations) не знаешь
Да, из объектника. Где про это все читать?
>GetProcAddress
Окай, можно вычислить адрес заранее для разных операционок, а можно вычислять при заражении и патчить адрес в шеллкоде, пометив его как-нибудь типа 0xDEADBEEF.
Аноним 04/09/16 Вск 22:20:17 #478 №835564 
Вычислить как-нибудь вот так:
func_addr = (DWORD)GetProcAddress( LoadLibrary("kernel32.dll") , "WinExec");
Аноним 04/09/16 Вск 22:23:15 #479 №835568 
>>835561
> Где про это все читать
Хуй знает. Иди на амазон, вводи в поиске shellcode, смотри, что больше нравится людям, покупай или пирать.

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

Вот почему наш тредик всё время скатывается в максимальную байтоёблю?
Аноним 04/09/16 Вск 22:37:15 #480 №835582 
а вообще, представляю. сидишь такой читаешь хакирин из 90х, и ткой щас я попробую, а нихуя не работает, и чёт приуныл(. или другой вариант, компилишь код, а он падает, потому что поинтер кастуется в int.
Аноним 04/09/16 Вск 22:49:56 #481 №835592 
Отладил свой шеллкод, с предвычисленным адресом он работает. Попробую сделать им инфект, а потом добилить инфектор так, чтобы он сам вычислял адрес.

https://ideone.com/oVyQxi

>>835582
Все так и есть((((
Аноним 04/09/16 Вск 22:53:57 #482 №835598 
Странно, после инфекта калькулятор как будто был запущен, но ПРЕКРАТИЛ РАБОТУ.
Аноним 04/09/16 Вск 23:03:23 #483 №835604 
14730194035050.png
Аноним 04/09/16 Вск 23:09:02 #484 №835608 
14730197428280.jpg
Забыл вычислить адрес ExitProcess.
И о том, что использовал его, забыл
Аноним 04/09/16 Вск 23:37:57 #485 №835635 
Чем это анон ты занимаешься этаким интересным, а ну, говори!
Аноним 05/09/16 Пнд 00:05:11 #486 №835662 
>>835598
>>835604
Все ясно. Я забыл нуль в конце строки "calc.exe", когда копировал шеллкодес.
Аноним 06/09/16 Втр 03:38:18 #487 №836418 
14731222988320.png
>>835635
я всё никак не допишу мультитредовый malloc с выгрузкой из памяти на хард, когда не нужно - вот этот момент ещё не до конца додумал, но общая концепция есть.

но лень, я вообще нихуя не делаю, просто бухаю и всё.

как назвать место, где хранится адресация памяти, его разметка, и свободные части и занятые? я не умею в английский.
Аноним 06/09/16 Втр 03:52:30 #488 №836419 
>>836418
> с выгрузкой из памяти на хард, когда не нужно
Это embedded или тебя чем-то не устраивает системный файл подкачки?
Аноним 06/09/16 Втр 04:30:03 #489 №836421 
>>836419
да как-то заебало, не может системный менеджер всё понять правильней, чем единичное приложение, которое точней может предугадать когда что понадобится - в идее. а может оно, системное распределение, работает галимовряд ли - я не знаю, но смотря на теже браузеры - они вообще не парятся, просто жрут ВСЁ. и никто не конструирует программ с параметром --ДОСТУПНАЯПАМЯТЬ - наверно в этом интерес. и да, я собираюсь это всё запускать на спектруме и сеге.
Аноним 06/09/16 Втр 04:32:21 #490 №836422 
>>836421
> как назвать место, где хранится адресация памяти, его разметка, и свободные части и занятые?
heap descriptor?
Аноним 06/09/16 Втр 04:47:15 #491 №836424 
>>836422
не думал с такой точки зрения.
Аноним 06/09/16 Втр 04:56:30 #492 №836426 
хотя думал, но мне, почему-то вбилось в голову, распространённое, descriptor как ключ доступа.
Аноним 07/09/16 Срд 08:48:55 #493 №837034 
>>834501
Разве в C можно объявлять переменную в разделе описания цикла? Только в плюсах же!
Аноним 07/09/16 Срд 08:54:11 #494 №837038 
>>837034
C99.
Аноним 07/09/16 Срд 08:57:23 #495 №837039 
>>837038
Точно. Значит я использую старое говно.
Аноним 07/09/16 Срд 14:30:10 #496 №837218 
бородатые няши, есть указатель на utf8 строку, нужно получить например третий символ, как узнать его начальный байт в буфере?
Аноним 07/09/16 Срд 15:05:38 #497 №837239 
>>837218
ну, тип, раскодировать)).
Аноним 07/09/16 Срд 15:09:37 #498 №837242 
>>837239
>раскодировать
куда, кого, нахуя?
Аноним 07/09/16 Срд 15:11:29 #499 №837243 
>>837242
да прост)
Аноним 07/09/16 Срд 15:43:38 #500 №837269 
Антуаны-железячники и мимопроходящие, подскажите, может быть кто-то знает, как решить мою проблему. Есть один CRC32, реализованный в железе. Соответственно, доступа к алгоритму нет. Есть файл и хеш к нему. Как узнать алгоритм, чтобы рассчитать контрольную сумму для других файлов? Перебором полинома? Может быть, какие-то методики есть?
Аноним 07/09/16 Срд 16:36:21 #501 №837325 
Аноняши, хоу стать экспертом использования GDB и устроится на работу, где мои звниня будут востребованы
Есть ли годная литература по етому? Что вы сами читывали?
Аноним 07/09/16 Срд 17:32:29 #502 №837393 
>>837325
нихуя не читал - нихуя не умею чёт увлёкся электромагнетизмом... но какое-то вводное есть у криски - но не читал.
Аноним 07/09/16 Срд 20:05:58 #503 №837550 
>>837218
Ну если не проверять строку на корректность, то искать третий по счету байт, у которого не установлен старший бит (т.е., банально цикл со счетчиком и маской 0x80).

>>837269
Можно бездумно брутфорснуть же.

>>837325
Прочитать ман уже предлагали?
Аноним 07/09/16 Срд 20:10:35 #504 №837560 
>>837550
Бля, про UTF-8 пизжу. Надо if ((byte & 0xc0) != 0x80), тогда начало очередного символа.
ПЕРЕКАТ Аноним OP 07/09/16 Срд 20:38:14 #505 №837597 
>>837592 (OP)
>>837592 (OP)
>>837592 (OP)
>>837592 (OP)
>>837592 (OP)
comments powered by Disqus

Отзывы и предложения