[Ответить в тред] Ответить в тред

02/12/16 - Конкурс визуальных новелл доски /ruvn/
15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!



Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 513 | 37 | 135
Назад Вниз Каталог Обновить

C Programming Language #14 Аноним # OP  04/11/16 Птн 23:59:24  869911  
the-c-programmi[...].png (78Кб, 792x1023)
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Что читать:

- Классика от Отцов: http://www.cypress.com/file/56651/download
- Годное пособие для гуманитариев: 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/
- https://arhivach.org/thread/198868/
- https://arhivach.org/thread/206632/
- https://arhivach.org/thread/211714/

Шапка: http://piratepad.net/bJ1SdmkZyu
Аноним 05/11/16 Суб 00:15:31  869915
Ура, товарищи.
Аноним 05/11/16 Суб 00:44:55  869924
В чём профит голого C?
Аноним 05/11/16 Суб 00:54:54  869927
>>869924
Ибо воистину, первый язык. Основа основ.

Все стандарты (OpenGL, OpenMP, OpenCL (API настройки девайсов, не сам язык для их программирования) ) написаны под него.
Аноним 05/11/16 Суб 03:22:49  869968
int main(int argc, chat argv[][])
{
потом закрыть не забудьте
Аноним 05/11/16 Суб 03:31:36  869971
>>869968
}

закрыл азазаза
Аноним 05/11/16 Суб 06:05:39  870029
>>869971
Нещитово
Аноним 05/11/16 Суб 08:06:21  870044
1.png (16Кб, 1200x624)
>>869911 (OP)
Анон, как мне сменить язык с С++ на просто С, я ультраньюфаня
Аноним 05/11/16 Суб 08:08:57  870045
>>870044
Это невозможно, придется тебе учить плюсы. Извини.
Это была си шутка. Просто создайфайол с расширением .с
Аноним 05/11/16 Суб 08:17:40  870048
11.png (29Кб, 1201x621)
>>870045
Сразу еще один вопрос, почему программа не выполняется? Я жму "скомпилировать и выполнить" и выходит эта ошибка? Что не так делаю
Аноним 05/11/16 Суб 08:32:30  870054
>>870048
А, все, разобрался
Аноним 05/11/16 Суб 09:20:53  870064
>>870048
Кто так пишет исходный код? Не будь макакой, приучайся писать нормально.
1. Где форматирование? IDE не поддерживает автоформатирование - делай вручную.
2. Название файла кириллицей - из-за этого однажды утром ты можешь не проснуться. Подумой.
3. Нет проверки введённых значений. А вдруг ввели белиберду. Проверь, чтобы scanf возвращал единицу.
4. Если кодишь под Windows - __try, __finally, __except.
Аноним 05/11/16 Суб 10:33:25  870113
>>870064
> Если кодишь под Windows - __try, __finally, __except.
Ты зачем новичков плохому учишь?
Аноним 05/11/16 Суб 10:57:48  870128
>>870113
Что плохого в обработке исключений?
Аноним 05/11/16 Суб 11:07:04  870138
>>870128
антипаттерн
Аноним 05/11/16 Суб 11:15:22  870140
>>870138
Ой да ладно тебе, кто в твой код заглянет? Пиши как умеешь, расшумелся тут.
Аноним 05/11/16 Суб 11:25:06  870142
Короче, надо заполнить массив случайными элементами целочисленного типа из заданного диапазона, вводимого пользователем.
Заполняю при помощи rand() без всяких примочек - если ввести одинаковые границы диапазона, вывод всегда будет одинаковым.
Если использовать сранд srand() со временем - выводятся одинаковые числа, я так понял, потому что генерируются одновременно.
Есть что простенькое, чтобы помочь мне выводить случайные целые числа, которые будут меняться каждый вывод и не будут совпадать (т.е. не будут закономерно совпадать)?
Простенькое, так как только начал изучать массивы, я грю уж про рандомные числа.
Аноним 05/11/16 Суб 11:26:30  870143
>>870142
Ты перед каждым вызовом rand делаешь srand? Код показывай, из описания не разберёшь, что у тебя там за проблемы.
Аноним 05/11/16 Суб 11:29:09  870145
Image 001.png (1Кб, 188x71)
>>870143
Я не делаю srand(), тамушта везде в тырнетах пишут сранд этот сраный со временем, что мне не подходит
Аноним 05/11/16 Суб 11:32:33  870147
>>870145
Или подходит?
Т.е. мне бы узнать, с какой точностью он время берёт для рандомизации
Аноним 05/11/16 Суб 11:39:47  870155
>>870142
Давай весь код с выхлопом. Используй pcg.
Аноним 05/11/16 Суб 11:45:45  870157
Image 001.png (20Кб, 1138x539)
>>870155
Да держи, только расскажи, что за pkg.
И мне способ простой нужен, если ты не читаешь по-русски с первого раза
Аноним 05/11/16 Суб 11:48:58  870161
>>870157
Делай stand(time(NULL)); в начале программы.
Почему i <= 11? i < 12 должно быть.
Аноним 05/11/16 Суб 11:49:43  870162
>>870161
> Почему i <= 11? i < 12 должно быть.
Ты серьёзно? Это важно? Это действительно важно?!
И ты хотел написать srand(time(NULL)), верно?
Ок, сейчас запилю,
Аноним 05/11/16 Суб 11:50:06  870163
>>870157
Ну и где у тебя srand?
>способ простой нужен
http://www.pcg-random.org/
Скачал, заинклюдил один файл, вызвал две функции - куда уж проще.
Аноним 05/11/16 Суб 11:50:37  870165
>>870147
>мне бы узнать, с какой точностью он время берёт для рандомизации
srand - это начальное значение для генератора псевдослучайный чисел. Без него у тебя всегда будут одинаковые значения. В некоторых случаях полезно, но не здесь.
Аноним 05/11/16 Суб 11:51:11  870167
>>870163
> Скачал, заинклюдил один файл, вызвал две функции - куда уж проще
Мне нельзя так делать, давайте в рамках ANSI C и без примочек, мне это ещё сдавать.
Аноним 05/11/16 Суб 11:52:23  870168
>>870162
>Ты серьёзно? Это важно? Это действительно важно?!
Это очень важно. У тебя 12 элементов, самому проще будет.
>И ты хотел написать srand(time(NULL)), верно?
Именно так и написал, как хотел. Только ';' в конце ты пропустил. Не сконпелируется.
Аноним 05/11/16 Суб 11:52:49  870169
>>870163
Сделал с srand, внезапно, всё заработало, а в прошлый раз были схожие значения
Аноним 05/11/16 Суб 14:56:47  870231
>>870044

//Можно еще так:

#ifdef __cplusplus
extern "C" {
#endif


//...


#ifdef __cplusplus
}
#endif
Аноним 05/11/16 Суб 16:02:36  870272
>>870231
Это не влияет на язык, только на метод создания имен экспортируемых символов.
Аноним 05/11/16 Суб 16:53:45  870316
Какую книгу прочитать, чтобы научиться писать красивый, с хорошей декомпозицией, многократно используемый код?
Аноним 05/11/16 Суб 18:05:08  870373
>>870048
> conio.h
Аноним 05/11/16 Суб 18:18:27  870384
Допустимо ли в 2016 году использовать глобальные переменные? Например, у меня есть функции, работающие с сокетами. Хэндл сокета я сделал глобальным, чтобы другие функции могли работать с ним. Или лучше передавать сокет как параметр функции?
Аноним 05/11/16 Суб 18:19:41  870385
>>870384
>Допустимо ли в 2016 году использовать глобальные переменные?
В допустимых пределах всё допустимо.
Аноним 05/11/16 Суб 18:20:25  870386
>>870384
>лучше передавать сокет как параметр функции
Так ты как минимум сократишь возможность написать лапшу, в которой закроешь сокет раньше чем последний раз будешь в него стучаться.
Аноним 05/11/16 Суб 18:51:11  870410
С чего лучше начинать, с сишечки или с питончика?
Аноним 05/11/16 Суб 19:09:04  870435
>>870410
>С чего лучше начинать
с пива и беспорядочного секса
Аноним 05/11/16 Суб 19:30:13  870452
>>870435
Как же ты прав, анончик…
Аноним 05/11/16 Суб 20:36:45  870486
>>870410
>питончика
Питухон для пидоров, начинай с Перла, он наиболее близок синтаксически к Сифактически интерпретируемый Си с плюшками.
Аноним 05/11/16 Суб 20:37:53  870489
>>870486
>Сифактически
хотел быстрофикснуть, но кекнул
Аноним 05/11/16 Суб 20:40:34  870492
>>870410
Абсолютно похуй, с какого языка начинать. Гуманитариям питон лучше идет. А вообще, питон и сишечка превосходно друг друга дополняют.


Аноним 05/11/16 Суб 21:18:15  870522
>>870492
>питон и сишечка превосходно друг друга дополняют
Типа обмазанный ООП Путухон дополняет процедурный Си, ну хз.
Аноним 05/11/16 Суб 21:19:38  870523
>>870522
У нас в проекте кодогенерация и всевозможная поддержка билда на питоне, например.
Аноним 05/11/16 Суб 21:27:10  870526
>>870523
> всевозможная поддержка билда на питон
ну это модно и молодежно, не более.

а я прототипирую на перле, а затем практически перевожу один к одному на си.
Аноним 05/11/16 Суб 21:29:13  870528
>>870526
Питон читаемый, и его знают все. Перл знают только олдфаги, а написать на нем неподдерживаемый код можно даже случайно.
Аноним 05/11/16 Суб 21:35:06  870531
>>870528
>и его знают все
я не знаю
>неподдерживаемый код можно даже случайно
нельзя

Аноним 06/11/16 Вск 03:31:28  870678
Есть вот такая лапша уровня LABA_XXX:
http://ideone.com/u1q82P
Меня устраивает почти всё, кроме одного.
Нужно, что бы если числа повторяются, то они выводились со степенью. Пробовал завести перменные, типа предыдущий делитель и count и сравнивать новый делитель с предыдущим, и т.п.
Но выходит какая-то хуита.
Как это реализовать?
Dmitry 06/11/16 Вск 04:27:16  870685
>>869924
В примитивности и скорости.
Но узконаправленные языки для узконаправленных задач быстрее должны быть, и есть.
Dmitry 06/11/16 Вск 04:28:17  870687
>>869968
Поясните зачем это? Я ничего этой функции передавать не хочу, а если хочу то что передавать?
Dmitry 06/11/16 Вск 04:32:26  870688
>>870678
Каждое число сравнивать с всеми остальными, что уже сравнил исключай.
Аноним 06/11/16 Вск 05:03:47  870690
зигулю всем сисятым. давно мысль вынашиваю, ведь то что компилятор не знает что значение в свитч строго не может быть неправильным, типо ему не позволяет сделать тупо таблицу с указателями да. но можно ли как-нибудь пропихнуть эти знания до компилятора, например через assert(v >= 0 && v <= 10) к примеру, прокатит не? или нужно строга хуярить if'ы по харду? так то я могу и gcc'шным методом проредить но как-то в заёб городить макросы для совместимости (хотя видимо так и сделаю, не могу же я проверить выхлоп компилятора потому что жирный лентяй). я тут просто посчитал количество кейзов при удалении элемента из 2-3 дерева (4 на 1 элементного батю и 12 на 2х) и как-то дико прихуел пишу чисто в академический интерес.

кстати заебатые слайды тут: http://web.eecs.umich.edu/~sugih/courses/eecs281/syllabus.html

например http://web.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/10-Mway.pdf
Аноним 06/11/16 Вск 05:09:32  870691
>>870142
просто съебись с винды и используй /dev/random как царь. в общем-то, по сути не барское это дело, генерировать случайные числа. или как илатка любит поправятся, вынув изорта болт на время, псевдо.
Аноним 06/11/16 Вск 05:23:33  870692
>>870687
например ключики передавать, и также путь до программы система передаст. ты совсем деревянный чтоль?
Аноним 06/11/16 Вск 09:09:28  870723
>>870688
Я уже весь извертелся как мог, в голову уже ничего не идёт.
Тыкни носом пожалйста.
Аноним 06/11/16 Вск 13:07:13  870782
Аноны, расскажите, сложно ли с вашего языка перекатываться на другие (java, python, ruby)?
Хочу изучать Си, как первый язык, так как он довольно интересный и монументальный.
Изучать хочу по расово правильной книги от отцов, правильно ли я поступаю, или стоит начать с чего то по проще?
Аноним 06/11/16 Вск 13:27:39  870786
>>870782
Правильно, дерзай.
Аноним 06/11/16 Вск 13:49:25  870800
>>870690
Компилятор нормально делает таблицу, если вариантов не полторы штуки, а разброс значений не очень велик. Проверка верхней границы диапазона стоит всего две инструкции, это не слишком дорого.
Аноним 06/11/16 Вск 14:05:41  870811
6.PNG (6Кб, 488x158)
Сделал дамп одной криптованной программы, таблица импорта разрушена. С помощью какой-то программы восстановил соответствие адрес-экспортируемая функция:
00416C31: Directly-> 0C570000 : 77F06B7E : RtlEnterCriticalSection
Как и IDA создать таблицу импорта вручную? Или заменить адрес 7DE922B0 на осмысленный RtlEnterCriticalSection?
Самый простой способ, который вижу - создать комментарий с функцией с помощью скрипта. Но хотелось бы знать, вдруг можно по другому.
Аноним 06/11/16 Вск 14:27:32  870823
>>870811
Проще всего запилить новую таблицу импорта в бинарнике (автоматически ImpRec-ом или вручную) и заново загрузить файл в IDA. Если не получится или нельзя по каким-то причинам:
0) Берешь IDAPython, а то заебешься в IDC писать.
1) Ищешь, где была IAT. Или создаешь сегмент новый - похуй.
2) Делаешь в скрипте таблицу маппинга между адресом и именем функции.
3) Заполняешь сегмент импортами (не обязательно в формате PE, просто списка func1 dd ?, func2 dd ? будет достаточно), т.е., делаешь IAT.
4) Проходишь по всей программе, патчишь относительные адреса в call, чтобы указывали на нужную функцию в твоей новой IAT.
Я бы как-то так делал. Алсо, существуют всякие idc.SetManualInsn/idaapi.set_manual_insn или даже просто idc.OpAlt/idaapi.set_forced_operand , но это решение уровня комментариев. Хотя может тебе подойдет. Можно и вручную по Alt+F1 на адресе имена прописывать, лол.
Аноним 06/11/16 Вск 14:55:00  870838
>>870782
>Изучать хочу по расово правильной книги от отцов, правильно ли я поступаю, или стоит начать с чего то по проще?
Ты медицину начал бы изучать по книгам от отцов?
Аноним 06/11/16 Вск 15:05:11  870844
Как разрешать такие проблемы с разными типами данных (и как вообще правильно использовать типы - только встроенные или только типы WinAPI)? http://ideone.com/BuXRnd

У меня объявлены:
TCHAR processName[BUFFER_SIZE];
TCHAR dllName[BUFFER_SIZE];

Но при компиляции такого кода strncpy(processName, buffer, BUFFER_SIZE); возникает ошибка из-за того, что функция не принимает тип TCHAR. Однако если заменить тип данных на char, тогда ошибка возникает в GetWindowText(hWnd, buffer, sizeof(buffer)); потому что эта функция требует аргумент типа LPWSTR. Что делать?
Аноним 06/11/16 Вск 15:10:34  870846
>>870844
Ну можешь использовать виндовые апи (типа lstrcpy, или StrCpyN), можешь поинклудить tchar.h (_tcsncpy), а лучше не еби мозг, скажи компилятору -DUNICODE и используй юникод всегда. Нахуй тебе ансишный билд в конце 2016 года?
Аноним 06/11/16 Вск 15:14:51  870849
>>870846
В смысле, у тебя и так уже юникодный билд, судя по ругани, поэтому просто всегда пиши WCHAR вместо TCHAR, LPWSTR/LPCWSTR вместо LPTSTR/LPCTSTR и т.д. Ну и #include <wchar.h>, там есть wcspy, вся хуйня.
Аноним 06/11/16 Вск 15:42:53  870864
>>870800
да и хуй с ним. как называется такая хрень, что я гарантирую, что после добавления, удаления того-же элемента (например, в том же 2-3 дереве), вся структура будет такой же как и в начале? ну то есть, та же память, те же указатели. вроде это важно. хотя и хуй пойми каким боком к ц, просто лень из вкладки выходить.

скажи лучше, а дохуя на call жрётся? например, когда по указателю. так то, с учётом конвертеров, кешей, всех этих ебучих заморочек в современных процах. в тех же деревья, вообще, адекватно использовать со внешней функцией cmp ?
Аноним 06/11/16 Вск 16:16:27  870880
Анон, ты когда-нибудь писал файл main.h с прототипами функций, используемых в main.c? Мне эот хедер кажется ужасно непривычным.
Аноним 06/11/16 Вск 16:18:59  870883
>>870880
Но зачем? В основном файле должно быть полторы функции для управления всем остальным, зачем им прототипы? Кто будет их вызывать кроме main()?
Аноним 06/11/16 Вск 17:34:34  870936
>>870678
> Нужно, что бы если числа повторяются, то они выводились со степенью
Дели в цикле, не переходи к следующему делителю, пока не получишь остаток. Количество итераций минус 1 будет как раз степенью. Алсо, в сишечке есть функция lldiv, которая позволяет вычислить сразу и частное, и остаток, с ней будет быстрее. Алсо, не совсем понятно, что ты там меряешь. Если уж мерять, то построение таблицы и факторизацию каждого числа отдельно.
Аноним 06/11/16 Вск 19:50:36  871038
>>870880
Хорошее место для предварительного объявления или включения всех заголовочных файлов.
Аноним 06/11/16 Вск 19:55:12  871041
>>871038
с инклюдом в main.c, модно придумано.
Аноним 06/11/16 Вск 19:59:41  871043
>>869968
>chat argv[][]
Даже не скомпилируется.
Аноним 06/11/16 Вск 20:01:59  871046
>>871043
хуёвый какой-то у тебя компилятор, даже чаты не поддерживает.
Аноним 06/11/16 Вск 20:13:05  871056
>>870880
Хедеры делают, чтобы не писать в каждом файле (единице трансляции) одни и те же объявления типа:

[CODE]extern char g_yoba;
int allo(void);
int ebal(struct tvoyu_mamku
);[/CODE]

Если твой main.h будет подключать ещё какой-то файл, то это имеет смысл. Если только файл main.c - это бессмысленно.
Аноним 06/11/16 Вск 20:49:13  871088
Анон, вот этот вот код: http://ideone.com/wV9a26 не хочет компилироваться в гцц при вводе более чем 6 элементов, вылетает ошибка
Error in `./b.out': realloc(): invalid next size: 0x000000000229f010
У другого человека в Dev C++ все нормально работает. ЧЯДНТ?
Аноним 06/11/16 Вск 20:55:05  871090
А давайте все ньюфаги съебут в свой тред и не будут осквернять тред своими смердящими высерами.
Аноним 06/11/16 Вск 20:58:55  871092
>>871090
присоединяюсь, реально заебало
Аноним # OP  06/11/16 Вск 21:10:03  871103
>>871092
Что обсуждать будем? Предлагай тему.
Аноним 06/11/16 Вск 21:14:50  871105
>>869911 (OP)
>С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.
ну ахуеть.
Аноним 06/11/16 Вск 21:22:56  871111
>>871103
>Что обсуждать будем?
давайте философствовать. что выносить в подпрограмму? считаю, повторяющуюся часть кода не возвращающего значение можно задефайнить, если результат работы порождает новую сущность (аки возвращаемое значение) в подпрограмму.
абасыте.
Аноним 06/11/16 Вск 21:23:21  871112
>>871103
>Что обсуждать будем?
Хохлов.
Аноним # OP  06/11/16 Вск 21:40:53  871122
>>871111
Что-то такое было уже. Избегаю писать многострочный код в дефайнах до последнего. Как минимум потому что функции читаемее, а компиляторы неплохо их инлайнят сами. Но если контекста дохуя, а производительность важна, тогда дефайны, что поделать-то.

>>871088
Смотри, что ты выделяешь память под 1 инт, пишешь туда элемент. Всё ок. Потом i становится 1, ты делаешь реаллок, (пере)выделяешь массивчик под 1 инт, и... пишешь инт по индексу 1, то есть за пределы массива. Из этого следуют простые мысли:
1) Однобуквенные переменные зло. Написал бы length, не ошибся бы.
2) У гцц есть охуительная фича. Пишешь -fsanitize=address и он по хардкору разноцветным текстом поясняет, где и как ты портишь память. Другие -fsanitize тоже заслуживают внимания.
3) Реаллок, на каждом шаге, кстати, тоже зло. Выделяй с запасом (вдвое больше, чем раньше, например), запоминай, сколько выделил. Классический динамический массив - это array, length, capacity.
Аноним 06/11/16 Вск 21:43:14  871123
>>871122
>У гцц есть охуительная фича. Пишешь -fsanitize=address
Это не она требует пересборки всех либ с этой опцией?
Аноним 06/11/16 Вск 21:48:25  871124
>>871122
>Что-то такое было уже.
в прошлом треде, но был перекот.
>Как минимум потому что функции читаемее
всмысле код в теле? но ведь теперь функция будет маячить перед глазами как нечто важное, а на самом деле это просто сокращение для копипасты.
Аноним 06/11/16 Вск 21:52:04  871125
>>871124
но если ты код делаешь грамотна раскидывая по юнитам, то такие функции у тебя будут static inline. и например, нигде не будут видны за этим конкретным местом.
Аноним 06/11/16 Вск 21:54:32  871127
>>871123
Да вроде не требовалось ничего рекомпилить, если, конечно, в либах нет багов, на которые оно ругается. Оно маллок хукает.
Аноним 06/11/16 Вск 21:55:41  871130
>>871127
А. Я с сатанайзером, который чтение из неинициазилированной памяти ловит, спутал.
Аноним 06/11/16 Вск 21:55:54  871132
а вообще, всё время жалею что в ц нет функций в функциях.
Аноним 06/11/16 Вск 21:57:10  871133
>>871132
Ну пиши исключительно под гцц, у них есть такое расширением.
Аноним 06/11/16 Вск 21:58:29  871134
>>871133
>исключительно
ещё что посоветуешь в ц треде? хотя тут и так половина подсосков на вин ап.
Аноним 06/11/16 Вск 22:00:21  871137
>>871122
> Реаллок, на каждом шаге, кстати, тоже зло. Выделяй с запасом
libc не должна сама это разруливать?
Аноним 06/11/16 Вск 22:02:36  871140
>>871137
ну ты, кстати, почитай как она разруливает.
Аноним 06/11/16 Вск 22:29:42  871151
>>871137
> libc не должна сама это разруливать?
Не должна, зависит от реализации. Лучше уж самому выделить, чем гадать, как оно будет работать.
Аноним 06/11/16 Вск 23:03:27  871167
>>871140
Ну это явно зависит от конкретной реализации. Но логично предположить, что никто не будет делать реализацию, которая будет выделять всё время один в один запрашиваемый размер. Как минимум, он будет округлён до ближайшего оптимального размера, который подбирается с учётом данной архитектуры (размера страницы, кешлайна и хуй знает чего ещё), чтобы скорость доступа к памяти была наиболее высокая.
Аноним 06/11/16 Вск 23:04:05  871169
сажа приклеилась
Аноним 06/11/16 Вск 23:05:05  871172
>>871169
А я всегда с сажей пишу. И не стесняюсь этого.
Аноним 06/11/16 Вск 23:09:00  871173
>>871151
>Лучше уж самому выделить, чем гадать, как оно будет работать.
Преждевременная оптимизация — корень всех зол. Тем более для лабы1, где уж точно больших проблем из-за реаллоков не возникнет.
Аноним 06/11/16 Вск 23:10:55  871174
>>871173
>Преждевременная оптимизация — корень всех зол.

Использование быстрой сортировки вместо пузырьковой для тебя тоже "преждевременная оптимизация"?
Аноним 06/11/16 Вск 23:17:56  871180
>>871173
> больших проблем из-за реаллоков не возникнет
Я частично согласен с высказыванием про оптимизацию (бывает, что из-за запоздалой оптимизации нужно нихуево перепидорасить код), но в данном случае дело не в проблемах и не в тормозах, дело в том, чтобы научиться. В том числе и в динамические массивы без реаллока на каждую итерацию. А потом уже думать про профилировщик и особенности аллокации в glibc.
Аноним 06/11/16 Вск 23:30:22  871187
>>871174
и нахуя использовать сортировки/массивы, когда есть деревья? что бы как прадеды хуячить по харду, перелопачивая память в угар, во славу перуна?
Аноним 06/11/16 Вск 23:33:57  871190
>>871187
> и нахуя использовать сортировки/массивы
Слышал что-нибудь про кэши, локальность данных, вот это вот всё?
> то бы как прадеды
Прадеды могли хоть деревья, хоть хуевья использовать — у них не было кэшей.
Аноним 06/11/16 Вск 23:35:59  871191
>>871190
>локальность данных
про м-вей деревья слышал что-нибудь, и вот это всё? или просто по приколу хуй сосать?
Аноним 06/11/16 Вск 23:36:34  871193
>>871191
Это какой-то костыль, вместо использования массивов?
Аноним 06/11/16 Вск 23:39:44  871201
1.jpeg (3Кб, 215x215)
>>871193
это способ использовать деревья поверх деревьев.
Аноним 06/11/16 Вск 23:46:17  871216
>>871174
Слушай, я не топлю за подход анона >>871088 вызывать реаллок на ввод каждого нового элемента. Очевидно, что это ебануто. Но выделять "вдвое больше, чем раньше" для лабы1 это лишнее переусложнение. И в твоём подходе тоже можно доебаться до того, что у тебя происходит перерасход памяти без особой на то причины. Т.е. возможна ситуация, что пользователь ввёл N+1 элеметнов, а выделилась область для 2xN, большая часть которой пользователю была не нужна, допустим. При особо больших N это будет крайне ощутимо.

Что касается меня, я бы просто статический массив бы юзал. Нахуя вообще для такой задачи malloc/realloc.
Аноним 06/11/16 Вск 23:52:28  871220
>>871216
Перевыделять в два раза — это стандартный подход. Никаких "преждевременных оптимизаций".

А вот делать множитель зависящим от количества уже выделенной памяти, чтобы не перерасходывать — это уже преждевременная оптимизация.
Аноним 06/11/16 Вск 23:58:45  871226
>>871220
Я вообще предлагал использовать статический массив, какой в жопу множитель.
Аноним 07/11/16 Пнд 00:00:14  871227
>>871220
>Перевыделять в два раза — это стандартный подход.
Где это он стандартный? Можно какой-нибудь пруф?
Аноним 07/11/16 Пнд 00:01:55  871230
>>871172
Это оттого, что у вас много ума но мало совести
Аноним 07/11/16 Пнд 00:07:22  871235
>>871227
> пруф
Ну загугли сам-то. Можешь отсюда начать: https://habrahabr.ru/post/242279/ инбифо ализар
Аноним 07/11/16 Пнд 00:15:20  871240
>>871227
Потому что если множитель не 2, то надо объяснять, почему.
Аноним 07/11/16 Пнд 00:21:33  871243
>>871235
>Перевыделять в два раза — это стандартный подход
>Почему буфер должен расти экспоненциально
Экспоненциально - это не обязательно в 2 раза.
Аноним 07/11/16 Пнд 00:21:59  871244
>>871240
тебе же говорят: для экономии памяти. или мы про в 2 раза от чего, от минимально необходимого для работы за всё время? или всего используемого?
Аноним 07/11/16 Пнд 01:39:04  871288
>>871240
http://stackoverflow.com/a/1100426
Как тебе такое объяснение, умник.
Аноним 07/11/16 Пнд 01:41:07  871292
>>871288
Норм.
Аноним 07/11/16 Пнд 01:45:57  871299
>>871288
Есть еще такое объяснение: всем похуй на своп, поэтому 2x выделять норм. Зато вариант с 2x предельно простой, работает всегда, для него не нужно всяких проверок, условий и прочей хуйни (как, например, для 1.5x: length += length >> 1; выглядит красиво, но только пока length по каким-то причинам не окажется равной 1).
Аноним 07/11/16 Пнд 01:53:48  871308
>>871299
assert(length > 1) азазаза
Аноним 07/11/16 Пнд 01:54:41  871310
>>871308
-D_NDEBUG азаза, ой, что-то свалилось все у меня на продакшене.
Аноним 07/11/16 Пнд 02:08:54  871316
не понял, а в чём проблема посчитать издержки на переаллок и и предполагаемою необходимость памяти в будущем, понятно намазав на время? ну как-то так. забейте, сусяны, я чисто так, хуй знает о чём вы там, пис блять.
Аноним 07/11/16 Пнд 14:37:22  871500
Анон, посоветуй, с чем бы реальным мне поработать (либа, фреймворк), чтобы немного въехать в Си? Пока придумал написать расширение для Питона на C API, повозиться с GTK. Что ещё можно сделать?
Аноним 07/11/16 Пнд 20:04:27  871696
>>871500
Игру на SDL.
Аноним 07/11/16 Пнд 22:03:05  871797
>>870142
srand (time(NULL));


int rand_int(int min,int max){

    double scaled=1.0/((double)RAND_MAX+1.0);

    return (int)((max - min + 1)scaledrand()+min);

}
И рекомендую пару раз прогнать в холостую сначала
Аноним 07/11/16 Пнд 23:36:48  871920
>>870936
Всмысле чего меряю? Я сделал решето до мульта и просто беру из него простые числа, дабы не пытаться делить непростыми.

Аноним 08/11/16 Втр 00:24:26  871952
>>871920
В смысле я про clock(). Результат будет зависеть не от быстродействия кода, а от того, как быстро ты вбиваешь числа во время scanf.
Аноним 08/11/16 Втр 01:54:50  871985
>>871952
Я их из текстового файла ввожу. У меня там пара тысяч чисел.
Алсо, всё уже решил.
Аноним 08/11/16 Втр 05:54:32  872017
анон, а где можно почитать про создание собственного представления int-ов, не влезаю в 64 битный, числа большие, на них потом будет пара алгоритмов из теории чисел?
( не заметил новый тред, копирую из 13 )

конретно интересует факторизация целых чисел
Аноним 08/11/16 Втр 06:49:40  872023
>>872017

g:Длинная_арифметика
Аноним 08/11/16 Втр 07:00:39  872025
>>872023
длинную арифметику то я представляю - на другом языке напишу (написал)
но вот с собственными представлениями чисел на си я не сталкивался, собственно у меня числа длинной до сотни знаков
( на си потому что быстро )
Аноним 08/11/16 Втр 08:30:52  872041
>>872025
Так же, как и на другом языке.
Аноним 08/11/16 Втр 08:46:13  872048
>>872041
да я понимаю как вопрос выглядит но

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

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

=> то есть спрашиваю за языковые тоности/особенности

Аноним 08/11/16 Втр 09:31:18  872067
>>872048
Не занимайся преждевременной оптимизацией, анон. Напиши сначала как-нибудь и попрофилируй.
Аноним 08/11/16 Втр 10:42:53  872097
>>872067
речь не об оптимизации

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

более того сишный код для
64 битных быстрых целых я написал
проблема в том что мне нужны числа куда больше
то есть я просто ищу способ (чтоб как полагается) представлять очень большие целые на си + мне пару операций на таком представлении (сложение, цел. деление)
тогда я перепишу алгоритмы на новое представление -> profit

очевидные способы типо представить это все символами или массивом 64 битных интов мне в голову приходят
но вот как правильно я хз
если ты анон знаешь рецепт поделись плиз

для кристальной чистоты числа в духе:
1851858457003052118736699169041398614849121954728255181191590943881041451112971339223193346124917
(87 символов например)
Аноним 08/11/16 Втр 10:51:48  872104
>>872097
Анон, ты тупой?
Тебе уже сказали - гугли длинную арифметику (mpi)
Посмотри как она реализована в криптографических библиотеках (лайк openssl, nss, tomcrypt)
Там практически везде указатель на массив лимбов, где оптимальный размер лимба (32 или 64 обычно) высчитывается макроопределениями для каждой конкретной платформы на этапе компиляции
Dmitry 08/11/16 Втр 13:47:48  872159
>>871105
>компилировать
Ничего охуенного.
А засунуть в оперативку весь проэкт можно и юзать GCC, make, собирать будет наверно даже быстрее, если не статически линковать.
Dmitry 08/11/16 Втр 13:49:57  872161
>>872025
>на си потому что быстро
>математика
Не, для этого математический язык надо, он быстрее, Фортран быстрее, Ада может тоже.
Dmitry 08/11/16 Втр 13:56:37  872162
>>872097
>64 битов не хватает
Если чисел с минусом нет то делай uint_fast64_t
читай
man stdint.h
если надо минус то запакуй в структуру число и bool значение которое будет вместо минуса.
Аноним 08/11/16 Втр 14:12:10  872168
Поясните нуфагу: арифметика указателей часто используется?
Dmitry 08/11/16 Втр 14:14:09  872170
>>872168
Нет
Аноним 08/11/16 Втр 15:12:45  872196
>>872097
Ну я же тебе отвечал уже в предыдущем треде.

> представить ... массивом 64 битных интов
Ну вот и представляй. Что не так-то?

> но вот как правильно
Какие тут могут быть правила? Быстро это или медленно - подумай или потести.

Вот этого >>872162 не слушай, он бегает с доски на доску и несет всякий бред. Знак у него отдельно в bool, ну охуеть вообще.

>>872159
TCC даже не пытается ничего оптимизировать, поэтому GCC по скорости компиляции его никогда не догонит. TCC был бы охуенным компилятором для сборки тестовых билдов, если бы он полноценно умел в C11 и если бы при дебаге в очередной раз не оказывалось, что баг был в компиляторе.

>>872168
Постоянно. *p++ и a[j] тому примеры.
Аноним 08/11/16 Втр 15:27:19  872205
jgade.jpg (2481Кб, 2250x2700)
Привет. Есть говнокод эмулятора на Си: https://github.com/HerculesWS/Hercules/

Как и чем этот говнокод можно покрыть тестами? Есть ли тут те, кто покрывают Си код тестами? Чем пользуетесь, как тестируете, что почитать, что изучить? Короче любой фидбек будет только на пользу.
Dmitry 08/11/16 Втр 15:37:28  872210
>>872205
А что именно тебе тестировать надо?
Бери и проверяй что сомнительно, gprof gdb для мониторинга, собери с самыми дотошными настройками компилятора с конкретным стандартом языка.
А говнокод можно почти весь стереть, ксорг устарел, перекатывай на Wayland.
Dmitry 08/11/16 Втр 15:43:49  872213
>>872196
А в GCC если оптимизации вырубить?
А Clang? у меня шланг медленнее гсс компилировал, а говорили мол некстген компилятор, а джисиси легаси параша.
>если бы мог в 11
А он не швабодный разве?
Можно из других компиляторов код реализации стандарта похитить.
Аноним 08/11/16 Втр 16:07:05  872230
1.png (7Кб, 599x116)
>>869911 (OP)
аноны, я вообще не понимаю, как тут рассчитывать z, чему оно равно? Ответам всем трех уравнений?
Аноним 08/11/16 Втр 16:27:37  872245
>>872230
if (x ... && y ...) { ... } else if (...) { ... } else { ... }?
Аноним 08/11/16 Втр 16:33:15  872249
2.png (5Кб, 331x241)
>>872245
Если честно, я ничего из написанного не понял, вот мой уровень в си на примере первой "программы", можешь подробней написать?
Аноним 08/11/16 Втр 16:35:44  872253
>>872245
Тобишь от значения переменной выбирается уравнение?
Аноним 08/11/16 Втр 16:48:25  872261
>>872253
Ну да. Можешь это в строчку через ? : записать, но будет хуже читаться.
Аноним 08/11/16 Втр 19:46:21  872402
Как правильно обращаться с типом void и указателями на void при использовании их для передачи аргументов? Например, есть код:

void TrackChildProcess(void hChild)
{
WaitForSingleObject((HANDLE)*hChild, INFINITE);

}

Функция потока принимает LPVOID. Мне нужно передать потоку хэндл другого потока, но если использовать указатель на void как аргумент, то его нельзя разыменовать по правилам языка.
Аноним 08/11/16 Втр 20:03:58  872411
>>872402
Пиз
Дец
Аноним 08/11/16 Втр 20:20:31  872421
>>872411
Что не так? У меня небольшой вынос мозга от передачи параметров через LPVOID.

void TrackChildProcess(LPVOID hChild)
{
char szExePath[MAX_PATH];

WaitForSingleObject((HANDLE)hChild, INFINITE);
}
Аноним 08/11/16 Втр 20:25:19  872425
>>872402
> если использовать указатель на void как аргумент, то его нельзя разыменовать по правилам языка.
Скастуй к указателю на HANDLE
Аноним 08/11/16 Втр 21:56:47  872488
>>872097
ебанутый даун научись излагать мысли.

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

>>872402
очередной вын апи дурачёк вкатился блин.
Аноним 08/11/16 Втр 22:00:40  872490
>>872488
Таки что ты имеешь против Windows API? Не осилил?
Аноним 08/11/16 Втр 23:05:00  872558
>>872425
Стыдно спрашивать, но почему это возможно?
void * - 32- или 64-битное число
HANDLE - это тоже число
Получается, что я пишу как на ассемблере, забывая про типы и работая только с двордами?
Аноним 08/11/16 Втр 23:11:12  872564
>>872425
>>872558
Точнее, не к указателю на HANDLE. Вопрос в том, как ты хочешь передать. Скастовав HANDLE к void* или передав указатель на переменную, хранящую HANDLE.
И первое, и второе легально обратимо.
Аноним 08/11/16 Втр 23:14:13  872567
>>872564
>Скастовав HANDLE к void*
Хотя это implementation-defined, но все знают, что это работает.
Аноним 08/11/16 Втр 23:19:04  872570
>>872558
>>872567
HANDLE - на самом деле указатель. Что-то типа:
typedef struct tag_HANDLE *HANDLE;
И кастить такой указатель на несуществующую структуру к указателю на void и обратно абсолютно легально, и implementation-defined behavior там отсутствует.
Аноним 08/11/16 Втр 23:21:57  872571
>>872570
Ок. Я думал это число.
Аноним 08/11/16 Втр 23:22:53  872573
>>872570
>HANDLE - на самом деле указатель. Что-то типа:
typedef PVOID HANDLE;
Аноним 08/11/16 Втр 23:32:25  872581
>>872573
Ну да, плохо уже помню про винду, извиняюсь. Но остальные типы хэндлов при -DSTRICT как раз "типизируются" неполными структурами в качестве дополнительной защиты от дурака.
Аноним 09/11/16 Срд 04:01:33  872628
>>872490
как будто есть смысл осиливать жрать говно
Аноним 09/11/16 Срд 04:27:13  872630
>>872628
Лучший ответ.
Аноним 09/11/16 Срд 15:24:57  872834
ejLksf46VQ.jpg (143Кб, 960x948)
Господа, нужно вытащить все используемые функции из файла, подскажите, как это сделать. Думаю по встречающимся скобочкам их вытаскивать в символьный массив по одной, а оттуда постить в другой файл, я все правильно понимаю? Но вот часть с детектированием этиъ самых функций меня вводит в ступор.
Аноним 09/11/16 Срд 16:24:23  872883
http://ideone.com/J4CVCA
Подскажите как сложить два массива, пожалуйста.
Аноним 09/11/16 Срд 16:33:19  872898
Почему при выводе массива char выводится его содержимое до нулевого байта, а при выводе всех остальных типов массивов наоборот выводятся их адреса в памяти? В то же время при передаче массива в функцию они оба передают в функцию свои адреса.
Аноним 09/11/16 Срд 16:37:00  872904
>>872898
Потому, что во всех остальных случаях это массивы указателей ну или так сложились звёзды, наверное
Аноним 09/11/16 Срд 17:04:17  872940
>>872883
Жава-тред дальше по коридору.
Аноним 09/11/16 Срд 17:39:03  872974
>>872898
Что ты подразумеваешь под "выводом массива"?
Аноним 09/11/16 Срд 17:42:01  872978
>>872974
cout
Аноним 09/11/16 Срд 18:05:41  873003
>>872978
Пожалуйста, проследуйте нахуй сюда >>866503 (OP)
Аноним 09/11/16 Срд 18:07:32  873009
>>873003
я уже проследовал к твоей матери в сраку
Аноним 09/11/16 Срд 18:07:48  873010
>>873009
своим хуем
Аноним 09/11/16 Срд 18:37:55  873034
>>872834
Тред или два назад был кун с подобным заданием. Задание сложное, надо писать почти полноценный парсер или вводить какие-нибудь ограничения синтаксиса. https://arhivach.org/thread/206632/#846642
https://arhivach.org/thread/206632/#846663

Аноним 09/11/16 Срд 18:55:12  873054
>>872834
Написать парсер для yacc. Так просто ты не сможешь по скобочкам вытащить название. Или попробовать какую-то часть от LLVM, где парсится файл.
Аноним 09/11/16 Срд 20:17:25  873090
посоветуйте корпоративных, федеральных стандартов NASA, JPL, GOV. на чем там прогают? API всякие
Аноним 09/11/16 Срд 20:29:22  873096
>>873090
Ada, C++11.
Аноним 09/11/16 Срд 20:30:37  873097
>>873096
Всегда упоминают ADA, но я ни разу не видел вживую никого, кто бы на ней писал на работе.
Аноним 09/11/16 Срд 20:31:22  873098
>>873096

Оно сложнее Java?
Аноним 09/11/16 Срд 20:32:28  873099
>>873098
Ну это такой как бы паскаль на стероидах.
Аноним 09/11/16 Срд 20:38:04  873106
>>873097
>>873098
>>873099
На чистой Аде там тоже не пишут, погуглите SPARK, это диалект Ады.
Аноним 09/11/16 Срд 21:00:28  873118
>>873099

а схож с objective C? на mac osx10.10 в какой IDE кодить можно? сильно требуется математическое образование, алгоритмы, уровнения, вот это вот все? сисадмину (*NIX) сложно перекатиться?
Аноним 09/11/16 Срд 21:23:51  873127
>>873118
Сразу видно американца.
Аноним 09/11/16 Срд 21:24:18  873129
>>873127

Да, да. это Трамп.
Аноним 09/11/16 Срд 22:01:24  873149
>>873097
А я однажды писал на работе на Ada (просто вспомогательное приложение, не было разницы на чем его писать), хотя я работаю не программистом. По-моему нормальный язык, очень даже. Примерно как C++ в своей изначально задуманной форме, но только сделанный нормально. Честно не понимаю, почему в зк практически никогда не обсуждается, годнота же.
>>873118
Не знаю насчет мака, IDE по-умолчанию — Gnat Programming Studio, неплохая. С сишки (и думаю с obj-c тоже) перекатиться легко, там нет функциональщины или каких-то особых выебонов, просто нормально сделанное структурное, generic и object oriented программирование.
Аноним 09/11/16 Срд 22:03:04  873152
>>873149
> сделанный нормально.
Проверка границ массива есть?
Аноним 09/11/16 Срд 22:04:24  873156
>>873152
Есть. Но если вдруг где-то мешает, то можно попросить компилятор выключить.
Аноним 09/11/16 Срд 22:05:05  873158
Пишу порт сканер на асинхронных сокетах. Вопрос, почему в результате определяются все активный хосты, а не хосты с открытым заданным портом?

http://pastie.org/10959217
Аноним 09/11/16 Срд 22:05:09  873159
>>873156
> Есть
Значит Ada не нужна.
Аноним 09/11/16 Срд 22:06:57  873160
>>873158


Тебе надо воспользоваться этими требованиями:

http://www.hq.nasa.gov/office/codeq/doctree/871913.pdf
Аноним 09/11/16 Срд 22:08:08  873162
>>873159
Странный ты. Нужна проверка - вот тебе проверка. Не нужна, или ты уверен, что и так все збс - за пару секунд отключаешь и продолжаешь радоваться жизни. В чем проблема-то?
Аноним 09/11/16 Срд 22:09:35  873163
>>873162
Мне интересно. Вот эти все языки с проверками границ типа Ada или там Java. Ну, допустим, прилетело исключение о нарушении границ. Дальше что? Один хрен валить программу.
Аноним 09/11/16 Срд 22:12:36  873165
>>873163
Главное чтобы ты учился хорошо и маму слушался.
Аноним 09/11/16 Срд 22:14:13  873167
>>873163
Дальше heartbleed, когда проверок нету.
Аноним 09/11/16 Срд 22:22:18  873174
>>873163
Я сам не особый сторонник исключений и вообще люблю сишку больше всех языков, но почему же сразу валить. Теоретически, баг может быть несмертельный и проявляться только в определенных ситуациях, например при получении запросов или входных данных определенного вида / в определенное время / etc. Можно конечно упасть и перезапуститься (и это если повезет, и баг приведет просто к сегфолту, а не к уязвимости), а можно залоггировать это дело, откатиться и попытаться продолжить работу, надеясь, что ситуация единичная, ну или перезапуститься тоже. Ну и еще раз: какбы фича отключаемая, если не видишь в ней смысла — можно и не использовать.
Аноним 09/11/16 Срд 22:26:57  873180
>>873174

а ты можешь на C написать БД, сервер приложений, хранилище документов, и простенький ERP ?
Аноним 09/11/16 Срд 22:31:10  873185
>>873180
Всё можно написать (и на чём угодно), вопрос только во времени. Раскрой свою мысль, а то не совсем понятно, к чему ты это спросил.
Аноним 09/11/16 Срд 22:31:54  873186
>>873160
Аноним 09/11/16 Срд 22:37:11  873191
>>873185


На языке Тьюринга я ж не прошу написать, или перфокартами набить.

Есть framework(код, dll, binary) на c/c++ который заменит по функциональности weblogic + oracle rdbms + siebel crm( или что-то, хотябы одно)
Аноним 09/11/16 Срд 22:40:32  873195
>>873191
На сишечке пишут, когда есть требования к быстродействию или иные ограничения. Написать CRM на сишечке можно, но экономически невыгодно.
Аноним 09/11/16 Срд 22:42:24  873201
>>873195
RTOS типа?
Аноним 09/11/16 Срд 22:48:36  873207
>>873201
В основном на сишечке либы и embedded.
> RTOS
И обычные. И у винды, и у линукса, и у OS X ядра на Си.
Аноним 09/11/16 Срд 22:52:21  873211
>>873097
В вакансиях её маскируют и называют oracle pl/sql
Аноним 09/11/16 Срд 22:53:38  873213
>>873191
А чем-тебя Оракл не устраивает? Он написан, вероятно, как раз на сишке/крестах по большей части, да и api имеет сишное. Заменить его на 100% тяжело будет, в конце концов его пилят уже сто лет, причем за сотни денег пилят. С остальными двумя приложениями не работал, ничего не могу сказать. В целом crm на сишке — более чем реально, все равно основное это база данных там, а остальное по большому счету без разницы на чем делать (я как-то делал не слишком сложный бэкэнд на сишке и каких-то особых препятствий не заметил).
Аноним 10/11/16 Чтв 11:44:43  873388
Хэй, есть кто?
Аноним 10/11/16 Чтв 12:35:01  873400
>>873388
А вам зачем?
Аноним 10/11/16 Чтв 12:42:03  873402
IMG201611101639[...].jpg (165Кб, 3264x370)
>>873400
Не могу понять как решить одну задачу
Под буквой б. Что значит A|2b? Зачем тут "|"?
Аноним 10/11/16 Чтв 13:23:50  873424
бляяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя
Аноним 10/11/16 Чтв 13:31:22  873429
В чём отличие
++slovo от slovo++
?
Аноним 10/11/16 Чтв 14:37:44  873455
>>873429
прединкремент сперва увеличит на единичку, после чего использует слово в выражении, а постинкримент наоборот
Аноним 10/11/16 Чтв 14:39:37  873457
>>873429
разный приоритет, разная ориентация.
Аноним 10/11/16 Чтв 14:39:50  873458
http://pastebin.com/8KZLEfy1
где ошибка?
Аноним 10/11/16 Чтв 14:42:13  873460
>>873458
> conio.h
где вы этой хуйни начитываетесь? и в жопы друг друга ебёте потом
Аноним 10/11/16 Чтв 14:44:49  873465
>>873460
ну, _getch же, нет?
Аноним 10/11/16 Чтв 15:08:12  873477
>>873458
В строке 14. Правильно пишется "диапазон".
Аноним 10/11/16 Чтв 15:20:52  873481
>>873477
А еще н вдефайне надо бы капитальными буквицами написать
Аноним 10/11/16 Чтв 15:21:57  873483
>>873477
аахаххахахахха

http://pastebin.com/uZAr1QQR - пофиксил
должна считать A[n][n]*b[n]
но как то странно работает
Аноним 10/11/16 Чтв 15:22:29  873484
>>873481
Всмысле?
И да, апнул её до 50
Аноним 10/11/16 Чтв 17:32:00  873544
>>871500
> повозиться с GTK
Нинад, там не столько C, сколько обмазывание макросами.
Аноним 10/11/16 Чтв 18:32:53  873565
Эй, быдло, зачем вы программируете на этой древней херне когда уже лет 40 как изобретён лучший язык программирования C++?
Аноним 10/11/16 Чтв 19:15:54  873584
>>873565
Зачем нужен C++, когда есть Haskell?
Аноним 10/11/16 Чтв 20:20:31  873618
>>873565
А за эти 40 лет изобрели ОС, написанную на крестах?
Аноним 10/11/16 Чтв 20:23:15  873620
>>873618
BeOS, но она сдохла.

Олсо, http://www.includeos.org/
Аноним 10/11/16 Чтв 20:24:05  873624
>>873620
Гайка жива, юзерспейс-то у них на крестах, а ядро?
Аноним 10/11/16 Чтв 20:26:28  873625
>>873624
Вижу, кресты, да.
Аноним 10/11/16 Чтв 20:27:15  873626
>>873624
>Гайка жива
А чо воняет так по-трупному?
>>873624
>юзерспейс-то у них на крестах, а ядро?
http://cgit.haiku-os.org/haiku/tree/src/system/kernel
Аноним 10/11/16 Чтв 20:29:10  873628
>>873626
> А чо воняет так по-трупному?
Денег мало, длинный шмель. А была бы охуенная десктопная ОС.
Аноним 10/11/16 Чтв 21:08:28  873640
>>873565
> C++
> лучший
Чет толсто
Аноним 11/11/16 Птн 00:03:05  873766
>>873429
========
a = b++:
-----------
a = b
b = b + 1
========
a = ++b:
-----------
b = b + 1
a = b
========
Аноним 11/11/16 Птн 01:41:58  873805
>>873766
а теперь с указателем, с указателям я сказал.
Аноним 11/11/16 Птн 14:26:34  873964
Что можно простенькое такое написать на Си?
Какашечка 11/11/16 Птн 14:44:59  873970
>>873964
конпелятор
Аноним 11/11/16 Птн 15:21:12  873988
>>873970
Конпеляторы легко пишутся на функциональных языках, на си это боль и унижение.

Зацените кстати ответ майкрософта на раст — https://www.microsoft.com/en-us/research/project/checked-c/
Иии... Это си с проверкой границ! Авесоме! на деле просто скопировали реализованное в стандартной библиотеке плюсов в язык, зато пейпер больше стандарта си
Пусть хуесосы из леночкатреда расскажут ещё что рисёрчиские отделения компаний — не просто удобная основа для распилов.
Аноним 11/11/16 Птн 15:23:06  873991
>>873964
парсер форта
Аноним 11/11/16 Птн 15:29:40  873996
>>873988
Хуйня какая-то от индусов и китайцев. Знаем мы, кто у них там в исследовательском отделе сидит.
Какашечка 11/11/16 Птн 15:36:43  874003
>>873988
ога
Какашечка 11/11/16 Птн 15:39:29  874006
>>873996
для этого целый гитхаб придумали, чтобы можно было легко и непринужденно копипастить код! получая зарплату и гранты
Аноним 11/11/16 Птн 16:52:31  874029
Анон, почему функция получения значения ключа реестра работает неправильно? http://ideone.com/GUrzUZ

Стоит Win7 x64, программа 32-битная, поэтому выполняется отображение в ветку Wow6432Node. Ключ там есть. При выполнении программы выводится пустая строка. http://ideone.com/u2oBEY
Аноним 11/11/16 Птн 19:55:10  874131
>>874029
не заливай код на идеоне если о не компилируется. заливай на пастебин
Аноним 11/11/16 Птн 20:14:21  874145
>>874029
>>874131
Вроде, заработало. Почему-то помогло добавление == ERROR_SUCCESS, пойду курить мануалы.

http://pastebin.com/B0JYpuKk
Аноним 11/11/16 Птн 21:21:41  874176
>>874145
Потому что ERROR_SUCCESS = 0.
Аноним 12/11/16 Суб 02:23:52  874301
Написал макрос для удобной (как мне показалось) инициализации auto и static массивов с присоединением значения длины к указателю, чтобы можно было не передавать в вызываемую функцию длину массива в отдельной переменной. http://ideone.com/0SsuoH
Считается ли такое уже абъюзом препроцессора, или еще норм и вполне можно использовать?
Аноним 12/11/16 Суб 02:36:10  874302
>>874301
Слегка абьюз, потому что arr() выглядит как вызов функции, а на самом деле создает переменную. Даже если документируешь, будет неочевидно. Я бы сделал что-то типа struct xy *points = DEFINE_ARRAY(struct xy, ...); Несмотря на то, что тип приходится писать дважды, из такого кода очевиднее, что он делает. В len каст к указателю на void лишний. Макроса LENGTH в таком виде общепринято называется countof (по аналогии с sizeof). В остальном норм.
Аноним 12/11/16 Суб 02:39:33  874303
>>874301
в c90 не скомпилится.
Аноним 12/11/16 Суб 02:43:46  874304
>>874303
Нинужен. Можешь назвать платформу, где не поддерживается хотя бы синтаксис С99 (без библиотечной-то поддержки платформ дохуя).

>>874301
Алсо, желательно использование имени ARRAY в макросе len обернуть в скобочки, а то мало ли, все бывает, решишь выражение передать, и произойдет что-нибудь веселое.
Аноним 12/11/16 Суб 02:46:46  874306
>>874304
>Нинужен. Можешь назвать платформу, где не поддерживается хотя бы синтаксис С99 (без библиотечной-то поддержки платформ дохуя).
какие мы дерзкие.
Аноним 12/11/16 Суб 02:50:15  874310
>>874302
Каст через воид используется, чтобы заткнуть clang, который иначе почему-то жалуется на несовпадение требований к алайменту, хотя вроде бы очевидно, что там все нормально.
По поводу названия / синтаксиса макроса думаю, что ты прав, если сделать как ты написал, то это выглядит уже не так странно, но при этом все равно намного удобнее, чем объявлять эту структуру вручную.
>>874304
>Алсо, желательно использование имени ARRAY в макросе len обернуть в скобочки
Спасибо, учту.
Аноним 12/11/16 Суб 02:59:23  874315
Объясните как в С найти произведение положительных элементов в одномерном массиве
Аноним 12/11/16 Суб 03:03:59  874317
>>874315
Сделай переменную, присвой ей 1, пройдись циклом for по массиву, если очередной элемент больше нуля, умножь свою переменную на него.
твой кэп
Аноним 12/11/16 Суб 03:21:00  874321
>>874317
Для меня это сложно, без кода непонятно
Аноним 12/11/16 Суб 03:36:44  874322
>>874315
http://pastebin.com/q0PXbr74
Аноним 12/11/16 Суб 03:38:14  874323
>>874322
Борешься с конкуренцией?
Аноним 12/11/16 Суб 03:41:28  874324
>>874322
Спасибо, но я учусь в пту, для меня такие вещи как sizeof и size_t неизвестны
Аноним 12/11/16 Суб 03:43:34  874326
>>874323
>Борешься с конкуренцией?
Эксплуатирую её )
Аноним 12/11/16 Суб 03:56:56  874328
7fd.jpg (108Кб, 604x453)
Объясните тупо как быдлу, как дыбилу тупо
Аноним 12/11/16 Суб 13:05:56  874410
чуваки вот скажите, а как вы тесты хуярите? есть какие-нибудь системы, схемы, хуй знает. просто как-то это странно, у меня просто валяется в специальной папки набор main.с'ов которые инклюдяд заголовки того что они тестят, а это ещё и собрать нужно. на каждый делать по мейку? а если всю кучу прогонять, как-то детектировать какие провалили, как вообще прогресс теста указывать, или хуй с ним, падает значит проебал? вообще не ебу как это делается всё.
Аноним 12/11/16 Суб 13:36:41  874433
При ближайшем рассмотрении этот >>874301 макрос работает только для статических массивов (т.е. указатель может быть на стеке, но сам массив остается статическим со всеми вытекающими). Можно ли как-нибудь сделать макрос, который бы мог создать такой же массив (с префиксом длины), но на стеке (пусть даже без инициализации)? Я сам что-то никак не додумаюсь.
Аноним 12/11/16 Суб 13:43:34  874437
>>874433
вот например, вообще не ебу, как тут с тобой кто-то ещё разговаривает, хуету какую-то пишешь непонятную. что у тебя там не на стеке?
Аноним 12/11/16 Суб 14:02:29  874451
>>874437
Все, что в круглых скобках в макросе arr является static.
Чтобы было более понятно, оно раскрывается во что-то типа
int ⁎a = ((struct {size_t n; int u[3];} []){3, {1, 2, 3}}).u
Создается статическая структура, состоящая из двух полей: длины массива и самого массива int этой длины. Затем адрес этого массива в составе структуры копируется в указатель a, который может быть где угодно (в т.ч. на стеке), но сама структура с массивом, тем не менее, остается static.
Такую структуру можно создать и на стеке, но я никак не могу придумать, как сделать это максимально удобно (чтобы не нужно было два раза вручную вводить размер массива, а потом еще и инициализировать это же количество элементов). Также не хотелось бы создавать лишнюю локальную переменную для самой структуры, т.е. чтобы переменная была только у указателя на массив в составе структуры, но сама структура (безымянная) при этом тоже лежала на стеке (но вот это вот скорее всего совсем уже невозможно).
Аноним 12/11/16 Суб 14:11:40  874456
>>874451
Там должно было быть
int ⁎a = ((struct {size_t n; int u[3];}){3, {1, 2, 3}}).u;
Аноним 12/11/16 Суб 14:14:55  874458
>>874451
что? там и так будет всё на стеке, где оно по твоему ещё может быть? что ты несёшь? с чего ты взял, что не создаётся экземпляр структуры на стеке, а потом о не заполняется?
Аноним 12/11/16 Суб 14:22:20  874460
>>874437
>>874458
Ты прав, я просто немного запутался. Похоже, что эта хуйня действительно на стеке. Статиком там является только временный массив, длина которого считается макросом LENGTH. Просто с таким способом автовычисления длины возникла проблема: макрос отказывается работать, если среди инициализаторов того, к чему применяется LENGTH, есть не константы (потому что этот массив считается статиком). Если передавать длину массива в макрос вручную, то такой проблемы нет. Ты открыл мне глаза, спасибо.
Аноним 12/11/16 Суб 14:25:40  874462
>>874458
Алсо, ты вроде хорошо разбираешься во всем этом, может подскажешь какой-нибудь хитрый способ вычислить в макросе количество переданных в него элементов массива, чтобы все-таки не приходилось вручную длину передавать?
Аноним 12/11/16 Суб 14:34:31  874468
>>874462
хуй его знает. я на макросах дохуя писал, можно организовать цикл и в нём перебрать все аргументы из __VA_ARG__, например держа счётчик как несколько 16ричных разрядов-аргументов. но это всё полный дроч, ненужно этим заниматься. а так-то можно хоть математику хуярить, правда у компиляторов есть ограничения в раскрытию... и это одна из причин почему это нахуй не нужно.
Аноним 12/11/16 Суб 15:33:04  874509
Для чего здесь переменным типа DWORD присваивается результат вызова функции GetProcAddress, приведенный к LPDWORD? Из-за этого код не компилится. Защита от дурака или какая-то древняя магия? Судя по HMODULE LoadExecutable (IN LPSTR path, IN PVOID base = 0), это C++, в котором с типизацией и кастами все строго. Непонятно, для чего это сделано.
Аноним 12/11/16 Суб 15:33:26  874510
>>874509
https://vxheaven.org/0x48k/etc/peloader.cpp

Забыл ссылку.
Аноним 12/11/16 Суб 16:03:26  874529
>>874509
В коде происходит какая-то хуйня. Динамическая память с PE-имиджем освобождается и затем она используется. Сейчас бы найти журнал ксакеп за октябрь 2012, там на диске должен был быть PE-лоадер.
Аноним 12/11/16 Суб 16:14:41  874537
>>874462
G_LIST_LEN посмотри в glib
Да и вообще погляди там макросы для коллекций. Там много чего интересного реализовано
Аноним 12/11/16 Суб 16:14:44  874538
>>869911 (OP)
Вот функция:
int main()
{
int a[N],i,count;
srand(time(NULL));
Init(a,N);
Print(a,N);
for(i=count=0;i<N;i++)
if(a>0&&Sum(a)>10)
count++;
printf("count=%d\n",count);
return 0;
}

Вот ошибка:
error: 'N' undeclared (first use in this function)

Что не так?
Научите массив задавать
Аноним 12/11/16 Суб 16:17:41  874542
>>874538
пошёл нахуй.
Аноним 12/11/16 Суб 16:18:02  874543
>>874542
Окей
Аноним 12/11/16 Суб 16:24:41  874547
Зацените PE-лоадер. Какие у него подводные камни? Подойдет ли для написания криптора, который дешифрует PE-файл в памяти и делает run pe?

http://pastebin.com/DRMG7R31
Аноним 12/11/16 Суб 16:28:22  874548
>>874547
Алсо, для правильной работы ширусов в памяти надо патчить PEB. Будут ли проблемы из-за использования такого лоадера?
Аноним 12/11/16 Суб 16:52:32  874563
>>874542
Двачую
Аноним 12/11/16 Суб 18:54:00  874659
>>874468
Сейчас все-таки еще немного посидел с этим макросом, теперь работает и так:

int ⁎a = ARRAY(int, 1, 2, 3, 4, 5);

и даже так:

unsigned short x = 99;
struct xy ⁎b = ARRAY(struct xy, (1, 2), (3, 4), (5, x));

В макросе круглые скобки автоматически заменяются на кривые где нужно.
Но ты был прав насчет лютого дрочева, у меня сейчас такое чувство, будто бы я на брейнфаке написал что-то. Оказывается сишный препроцессор – вполне себе эзотерический язык.
Аноним 12/11/16 Суб 19:51:58  874708
>>874659
Покажешь макрос?
Аноним 12/11/16 Суб 19:52:56  874710
Анон, у меня печет. Есть такой код: http://pastebin.com/AGQVz7P4

В следующих строках ошибка:
//CopyMemory(&pStub[text->PointerToRawData + text->Misc.VirtualSize], pImage, dwImageSize);
memcpy(&pStub[text->PointerToRawData], pImage, dwImageSize);

>main.cpp(43): error C2036: 'LPVOID' : unknown size

Что я делаю не так? pStub указывает на PE-имидж загрузчика в памяти. Я хочу дописать в конец секции кода данные. Но с конструкцией &pStub[text->PointerToRawData + text->Misc.VirtualSize] что-то не так.
Аноним 12/11/16 Суб 20:01:19  874716
>>874708
http://pastebin.com/jtdjX88M
Все права на спизженные идеи и куски макросов принадлежат их законным правообладателям.
Аноним 12/11/16 Суб 20:02:46  874719
>>874710
Скажи, а pStub + 1 - это какой адрес, если учитывать, что pStub - указатель на void? Скасти к PBYTE или какому-нибудь другому указателю на char.
Аноним 12/11/16 Суб 20:06:26  874722
>>874719
Понятно. Зря я, наверно, вообще начал использовать LPVOID. Хотя должно быть удобно ксорить сразу по 4 байта.
Аноним 12/11/16 Суб 20:06:40  874723
>>874716
Я кончил. Алсо, вчера забыл тебе сказать, что ты зря с анонимными структурами возишься в len. Весь len можно сделать просто (((size_t *)(array))[-1]).
Аноним 12/11/16 Суб 20:15:02  874726
>>874723
Я конечно не эксперт, но сделал так из предосторожности: ведь если мы присоединяем размер к массиву через структуру, то значит, что теоретически между переменной размера и массивом могут быть padding-байты, в зависимости от требований к алайменту элемента массива (например на моей системе у size_t алаймент 8, а у max_align_t – 16). Потому в текущей версии даже задействовал alignas из C11, чтобы между началом массива и его размером всегда было одинаковое количество байтов. Или это я зря заморачиваюсь?
Аноним 12/11/16 Суб 20:18:51  874732
>>874726
Да, ты прав, а я снова туплю. Извини.
Аноним 12/11/16 Суб 20:22:07  874738
>>874732
Просто сишка на самом деле довольно задротский язык. Вот я все время думаю, что вот я ее освоил и уже знаю кучу тонкостей и нюсансов, а потом оказывается, что где-то снова проебал что-то неочевидное.
Аноним 12/11/16 Суб 21:41:57  874819
Товарисчи, у кого-нибудь есть деление очень длинного на короткое? Или тыкните хотя-бы в псевдокод или паскаль.
Везде только умножение.
Аноним 12/11/16 Суб 21:42:28  874821
>>874819
В школе в столбик делил?
Аноним 12/11/16 Суб 21:44:56  874826
>>874819
Алсо https://en.wikipedia.org/wiki/Division_algorithm#Large-integer_methods
Аноним 13/11/16 Вск 00:33:06  874941
Прошу прощения если надоел, но я продолжаю додумывать улучшенные массивы для сишечки.
Если я сделаю такой макрос len, который (как я надеюсь) будет автоматически определять размер или по методу sizeof(a)/sizeof(a[0]) (в случае массива) или доставанием значения из size_t переменной в префиксе массива (в случае указателя), ждут ли меня какие-либо подводные камни? И если да, то какие?
#define len(ARRAY) (((void ⁎)&ARRAY == (void ⁎)&ARRAY[0]) ? LENGTH(ARRAY) : length(ARRAY))
Какашечка 14/11/16 Пнд 13:54:30  875497
синьоры макакены, жутко нехочу создавать лишнюю переменную, насколько вставка функции в аргумент второй функции будет по шариату?
типа: a(b(i), j);
Аноним 14/11/16 Пнд 14:00:33  875503
>>875497
Тебя пидорнёт, передавай в a() указатель на функцию b() внутри тела a() вызывай b().
Аноним 14/11/16 Пнд 14:03:07  875504
>>875503
Охуительные истории.
Аноним 14/11/16 Пнд 14:03:42  875505
>>875497
Алсо, по-моему ни в одном ЯП нельзя встроить вызов функции в параметр другой.
Аноним 14/11/16 Пнд 14:07:24  875506
>>875503
>>875505
Вот я даун, извиняйте, нигде такой хуйни не видел, чтобы работала.
Какашечка 14/11/16 Пнд 14:11:43  875510
>>875503
наркоман штоле?
>>875506
и ты тоже
Аноним 14/11/16 Пнд 14:58:15  875528
BB0eZwotKI.jpg (41Кб, 604x401)
Господа, сдаю я курсач преподу дальше можно не читать, вот код. http://pastebin.com/EEE3FJQ2
Так он сказал, что нужно конечными автоматами, помогите со структурной моделью, я в этом вообще не шарю, пожалуйста, пишите свои идеи. Алсо, суть - вытащить из текстового документа названия функций, просто названия, без типа и аргументов, как у меня.
Аноним 14/11/16 Пнд 18:17:29  875596
>>869971
вызовет warning, т.к. НИЧЕГО НЕ ВОЗВРАЩАЕТ
Аноним 14/11/16 Пнд 19:21:25  875612
>>875596
Для main() есть специальное исключение: если поток выполнения доходит до закрывающей фигурной скобки, main() возвращает 0.
Аноним 14/11/16 Пнд 20:39:01  875629
>>875612
Начиная с C99 или C11
Аноним 14/11/16 Пнд 21:25:31  875651
>>875528
Какой пиздец.
Аноним 14/11/16 Пнд 23:57:45  875738
В проекте VS2010 включена оптимизация по размеру. Если код, который выделяет четыре байта в куче, пишет туда дворд и освобождает эту память полмиллиона раз, находится в WinMain, компилятор его не выкидывает. Но если я выделяю этот код в функцию, компилятор ее оптимизирует, и она не попадает в бинарник. Как заставить компилятор сохранить ее?
Аноним 15/11/16 Втр 00:48:25  875773
>>875738
Возможно, __declspec(noinline)? Возможно, стоит эту функцию поэкспортировать, чтобы на нее были ссылки?
Аноним 15/11/16 Втр 02:59:50  875832
>>875738
volatile на указатель.
Аноним 15/11/16 Втр 07:24:26  875859
Рубрика зодай вопрос анону.
Ув. Анон! Вот есть fgetc(). Так ведь? Если у нас есть цикл, где этот фгетц читает по символму из файла, как он знает что нуно перескочить на следующий символ в файле, это внутри самой функции указатель некий? Или же это древние темные механики скрытые от простых смертных?
Аноним 15/11/16 Втр 07:42:54  875863
>>875859
воспринимает файл как поток.
Аноним 15/11/16 Втр 07:50:16  875865
>>875859
Зависит от реализации. Обычно за внутри структуры, на которую указывает FILE, хранится системозависимый дескриптор или хэндл для "родного" для системы API доступа к файлам.
Если это "обычный" файл, т.е. с произвольным доступом, с этим дескриптором в ядре ОС ассоциировано смещение в файле. По этому смещению и происходит чтение. И функции чтения автоматически увеличивают смещение на прочитанное число байт.
Плюс ещё, на стороне программы, может быть буффер. Он тоже связан с FILE. Ну и читается какой-то заметный кусок из файла в буффер. И, соответственно, есть указатель на текущий символ в буффере, который fgetc() увеличивает.

Я тут упрощённо описал как это примерно выглядит на чём-нибудь вроде windows или *nix.
Аноним 15/11/16 Втр 13:53:01  875988
Аноны, начал изучать Си по наставлению нашего товарища и возник с рядом проблем. Изучаю по книге Кёрнигана и вижу для себя море незнакомых формулировок, слов и т.п. Из-за этого думаю, что Кёрнигана лучше оставить на потом, а пока что начать читать что-то более простое. Непосредственно вопрос: может подскажете что-нибудь попроще, или все-таки грызть тот самый материал, который я не понимаю? Не понимаю из-за того, что не могу можно сказать самые первые упражнения сделать сам. К слову, в /pr полный ноль, максимум, что могу сделать из этой среды - прописать shutdown -s -t 180 в командной строке, когда выхожу из дома
памагити
Аноним 15/11/16 Втр 13:54:56  875989
>>875988
Прату читай, очевидно же
Аноним 15/11/16 Втр 13:58:43  875991
>>875989
т.е. стоит все-таки изучать С++, а не С?
Аноним 15/11/16 Втр 14:02:26  875995
>>875991
Нет, он и по Си писал книги
https://www.ozon.ru/context/detail/id/31649671/
Аноним 15/11/16 Втр 14:04:22  875996
>>875995
>
спасибо огромное анон, еще вопрос:
стоит после поверхностного изучения данного языка зубрить его то состояния белиссимо, или же параллельно знакомиться с чем-то новым?
Аноним 15/11/16 Втр 14:06:42  875997
>>875988
>>875988
Палю годноту, пройди гарвардский курс cs50
Я тебе гарантирую, не разочаруешься.
Аноним 15/11/16 Втр 14:11:36  876004
>>875997
Дай бог здоровья, буду учиться :з
Аноним 15/11/16 Втр 14:26:08  876011
>>875988
>начал изучать Си
с какой целью?
есть ресурсы чтобы прожить следующие десять лет до того как сможешь заработать кодом на си?
Аноним 15/11/16 Втр 14:27:20  876012
>>875865
зачем объяснять уебкам то что они могут погуглить?
Аноним 15/11/16 Втр 14:28:11  876013
>>876011
с целью начать изучать хоть что-то, ибо сестра к себе хочет взять на стажировку в iba
спросил у анонов тут пару дней назад, что лучше изучать - сказали Си, я потихоньку пытаюсь
Аноним 15/11/16 Втр 14:30:42  876015
>>875528
самое забавное, что эти хуесосы и в продакшон такой код высирают (если это не исходники уровня chrome где уже кодерам нада от 150к в год платить, а в закрытых кодовых базах помельче именно такой пиздец за частую и есть)
Аноним 15/11/16 Втр 14:33:55  876016
>>874738
чтобы написать крепкую рабочую прогу знание языка это только 10%
а вы уебки и его не знаете
пфф
в печь всех, как евреев в 42
Аноним 15/11/16 Втр 15:35:11  876045
>>876016
>а вы уебки и его не знаете
Сколько (минимально) чтений по указателям a и b сгенерирует следующий код? Если знаешь язык, то тебе понадобится не больше пары секунд чтобы правильно ответить и объяснить почему.

int ololo(int a, int b)
{
int x = 0;
int y = 10;
x = a + b;
x = 10;
y +=
b;
x += y;
b += x;
y = dosmth(a);
return y +
a + *b;
}
Аноним 15/11/16 Втр 15:41:04  876048
>>876045
звездочки сьедены?
Аноним 15/11/16 Втр 15:41:36  876049
>>876045
вы обосрались.
Аноним 15/11/16 Втр 15:43:05  876050
>>876048
>>876049
Всем, кто знает язык, не составит никакого труда восстановить съеденные звезочки :3
Аноним 15/11/16 Втр 15:43:43  876053
>>876050
Больше скажу. всем кто знает язык даже и твой код не нужен, они и так знают о чем ты.
Аноним 15/11/16 Втр 15:47:09  876056
>>876053
>>876045
Короче, рядом с a и b звезочки стоят везде, кроме dosmth(a).
Алсо, если кому-то не лень, ответьте, потому что я и сам хочу проверить, правильно ли я думаю.
Аноним 15/11/16 Втр 15:47:27  876057
>>876011
Взял расстроил.
Аноним 15/11/16 Втр 15:51:06  876061
>>876056
2 и 2
Аноним 15/11/16 Втр 15:56:24  876069
>>876061
Как насчитал? Алсо, вместо x = 10 должно было быть умножение. Но без него получилось бы 1 и 2 по-моему.
http://pastebin.com/XG4jtv4r
Аноним 15/11/16 Втр 15:59:29  876071
>>876069
ну как-бы после вызова функции сложно знать, изменилось ли значение по указателю b, тоже.
Аноним 15/11/16 Втр 16:16:13  876078
>>876071
Это да. Я правда сперва сам не совсем правильно посчитал, а так там 2+2, все правильно.
Алсо, я когда-то не знал про это все, и тогда мне казалось, что не нужно кешировать значения по указателям в локальных переменных (тип лишние переменные будут занимать место, лол), а потом я почитал про restrict, а потом выяснилось, что если вызывать внутри функции другие функции, то и restrict'а будет мало… Но отчего-то мне кажется, что я еще дохуя всего не знаю.
Аноним 15/11/16 Втр 16:20:52  876079
>>876071
2
остальные бесполезные действия бдут в кэше проца\регистрах
Аноним 15/11/16 Втр 17:23:13  876110
>>876012
больше не буду
Аноним 15/11/16 Втр 18:15:02  876135
>>876012
Ну и действительно, зачем
Аноним 15/11/16 Втр 18:19:52  876137
>>876135
тонко стелишь, так сказать, без скобочек у &.
Аноним 15/11/16 Втр 18:28:26  876143
>>876045
Правильный ответ "сколько угодно", вплоть до выбрасывания всей функции нахуй. Подобные разговоры мало того, что в принципе бессмысленны, так еще и могут идти только о полной, нормально компилирующейся программе.
Аноним 15/11/16 Втр 18:32:18  876150
>>876143
ну как тут без твоих выебонов. поняли все? вы дурачки, не берите в голову, открывайте и берите в рот, как господин у которого компилятор раскрывает функции.
Аноним 15/11/16 Втр 18:37:57  876157
>>876150
По делу есть что возразить?
Аноним 15/11/16 Втр 18:56:34  876185
>>876157
Если функция не объявлена статик, с чего бы компилятору ее выкидывать?
Аноним 15/11/16 Втр 19:01:56  876190
>>876185
Например, с того, что она не вызывается. Или у нее явно нет сайд-эффектов (и у dosmth тоже), а возвращаемое значение не используется. Или она вызывается один раз, и аргументы известны, поэтому компилятор может решить весь вызов свернуть в одну константу.
Аноним 15/11/16 Втр 19:11:26  876197
>>876190
Но откуда компилятору знать, к чему ты собрался прилинковать результирующий файл, и, соответственно, будет ли кто-то вызывать эту функцию?
Аноним 15/11/16 Втр 19:13:06  876199
>>876197
не будет он её удалять.
Аноним 15/11/16 Втр 19:49:14  876243
Что лучше первым учить С или С++? Для программирования встраиваемых систем.
Аноним 15/11/16 Втр 19:54:14  876248
>>876243
C
Аноним 15/11/16 Втр 20:06:57  876268
gcc1.png (8Кб, 361x411)
gcc2.png (4Кб, 800x97)
>>876197
Под компилятором я понимаю весь тулсет (препроцессор, транслятор, ассемблер, линкер). Функцию выкинет линкер, если умеет в LTO.

>>876199
> не будет он её удалять.
Пикрелейтед. Функцию спиздили, чтений по указателям ноль.
Аноним 15/11/16 Втр 20:09:16  876272
>>876248
почему?
Аноним 15/11/16 Втр 20:16:11  876281
>>876272
Так логичнее.
Сначала Си был, потом его допилили до С++. Более логичная последовательность.
Да и просто Си проще и примитивнее, а в С++ больше сложных вещей и абстракций.
Аноним 15/11/16 Втр 20:16:20  876282
>>876268
> не будет он её удалять.
> показывает раскрытие функции.
Аноним 15/11/16 Втр 20:19:02  876287
gcc3.png (15Кб, 672x226)
>>876282
Так а функция-то где? Где моя функция?
Аноним 15/11/16 Втр 20:24:48  876294
>>876243
>программирования встраиваемых систем
Там в основном Си. С++ практически не используется.
Аноним 15/11/16 Втр 20:30:15  876300
>>876287
а я и не спорил. ты какой-то странный.
Аноним 15/11/16 Втр 22:20:45  876365
>>876243
Си конечно.
Печально что б-во вкатыльщиков не знает что С++ никогда не был популярней и востребованней Си и не будет.
Просто вакансии на помойках всяких в основном ориентированы на всякий скам.
Аноним 15/11/16 Втр 22:24:34  876368
>>869911 (OP)
Какой тип данных имеет результат логических выражений в С?
Аноним 15/11/16 Втр 22:25:26  876369
>>876368
int (0 или 1).
Аноним 15/11/16 Втр 22:28:17  876376
>>876365
Изучил основы Си, изучаю алгоритмы, решаю олимпиадные задачки. Куда копать дальше, какие перспективы?
Аноним 15/11/16 Втр 22:29:35  876378
>>876376
На гитхаб, решать реальные задачи. Олимпиадники не нужны.
Аноним 15/11/16 Втр 22:30:10  876381
>>876376
дальше только отсос для натуралов.
Аноним 15/11/16 Втр 23:38:13  876420
>>876376
>изучаю алгоритмы, решаю олимпиадные задачки
преподавателем в ПТУ
Аноним 16/11/16 Срд 19:25:50  876780
kara no kyoukai.jpg (100Кб, 1920x1080)
Из академического интереса хочу написать полиморфный код на си. Я слышал, что на фасме можно закриптовать код даже на этапе компиляции, но как сделать это на си, я не знаю.

В общем, критическая часть программы выглядит примерно так:

void CriticalFunc(void)
{}
void EndFunc(){}

В рантайме происходит расшифрование от начала функции до метки EndFunc().

Но как ее сначала зашифровать? Инбифо: ксором в HIEW
Если собирать с оптимизацией по размеру, компилятор может выкинуть метку EndFunc. Проблема решается объявлением указателя на нее volatile? Может ли линкер разместить EndFunc не после критической функции?
Аноним 16/11/16 Срд 20:20:39  876824
>>876780
Самый простой способ - написать кастомный кодогенератор для tcc. Можно экспериментировать с LLVM. Можно просто сваять простейший парсер PE/ELF и криптовать секцию кода целиком. Алсо, можно сделать свой линкер - минимальный линкер под сишечку написать несложно, если есть опыт байтоебли.

> Если собирать с оптимизацией
Если творить такую хуйню, фиксированные параметры компиляции и минимальная оптимизация - это мастхэв.

> Может ли линкер разместить
Классический линкер не может менять порядок функций в объектнике, и выкинуть функции он тоже не может, но есть всякие фичи типа "separate functions for linker" (в терминах MS) и прочие LTO >>876268, поэтому опять же нужно подобрать такие параметры сборки, когда линкер не будет мешать твоим планам.
Аноним 17/11/16 Чтв 02:12:13  877015
Хочу вертеть байтики в линуксе туда-сюда как это делает юниксовая dd. Какой ман читнуть?
Аноним 17/11/16 Чтв 02:15:23  877018
>>877015
Даже сишного fopen() вполне хватит для начала.
Аноним 17/11/16 Чтв 07:34:58  877059
Вопрос нубский и вероятно платиновый
пишу калькулятор матричных операций
анон, подскажи пожалуйста как читать с stdin пока не закончаться знаки операций
то есть

matrix
+
matrix
*
matrix

я понимаю что вроде пока op не EOF
но что-то никак
Аноним 17/11/16 Чтв 19:28:52  877452
>>877059
Читай fgets() в буфер, если во время чтения строки юзер тыкнет Ctrl+Z (Ctrl+D в Linux), fgets() вернет NULL, и ты закончишь. Дополнительно ты можешь проверять первый символ буфера. Если он \0 или \n - юзер ввел пустую строку, можешь по этому признаку тоже завершать ввод. А дальше ты можешь либо разбирать буфер вручную через strtok(), strtoSMTH() или делать sscanf().
Аноним 17/11/16 Чтв 22:14:48  877552
Как на WinAPI создать текстовое поле без ограничения на длину вводимых данных?
Аноним 17/11/16 Чтв 22:42:21  877575
>>877552
Rich Edit Controls. Форматирование отключается.
Аноним 17/11/16 Чтв 23:02:29  877595
>>877552
>>877575
Разобрался, надо было включить автоскролл.

Как можно изменить цвет рамки эдита при получении фокуса?
Аноним 17/11/16 Чтв 23:24:31  877608
>>877595
пиздец. всё. нахуй идите со своим тредом.
Аноним 17/11/16 Чтв 23:59:53  877631
>>877608
Почему ты пригорел?
Аноним 18/11/16 Птн 02:23:34  877680
Какое же ебаное говно этот Pelles C. Несколько часов пердолил в нем код, а после падения IDE весь исходник оказался забит нулями.
Аноним 18/11/16 Птн 07:17:53  877714
>>877680
Как ты умудрился его уронить? Он и несколько лет назад был вполне стабилен. Ну кроме дебаггера. Антивирусы/малварь в системе есть?
Аноним 18/11/16 Птн 07:42:42  877716
>>877714
>малварь в системе есть?
Обижаешь, конечно есть!
Аноним 18/11/16 Птн 08:20:18  877723
>>869911 (OP)
Онан, поясни за GUI на pure-C. Какие фреймворки используешь? Сколько весит hello-world на таких? Можно ли static-версию делать?

(цель Windows 2000-10, Ubuntu 14-...)
Пишу для микроконтроллеров, но иногда надо делать управляющие программы. Пока что делал на delphi 7, лол. Пробовал на Qt, но по 70 мегабайт библиотек таскать, это пиздец.
Аноним 18/11/16 Птн 10:13:07  877735
>>877723
>GUI на pure-C
WinAPI, под линуксом через вайн запускаешь
Аноним 18/11/16 Птн 10:16:05  877737
>>877723
> Какие фреймворки используешь?
А выбор и небольшой, лол. Либо используешь кресты + wxWidgets либо прикручиваешь Gtk3 и не выёбуешься.
Аноним 18/11/16 Птн 12:12:23  877767
Переделываю неубиваемое консольное приложение в приложение с гуём. http://pastebin.com/qjCPVNM4

Когда компилирую в Pelles C и запускаю, появляется два процесса, которые спавнят друг друга. Но если компилирую в MSVS 2015, второй процесс не запускается, и приложение закрывается после нажатия на крестик. Почему?
Аноним 18/11/16 Птн 12:20:22  877771
>>877723
Качай ребол/пюревасик или даже блитзмакс и делай на них. Кроссплатфоренно, просто, а в последнем с/крестокод можно прямо к нему линковать не переписывая.
Аноним 18/11/16 Птн 17:49:28  877897
>>877767
Разные методы запуска. Студия через жопу запускает - отобрази командную строку студии, и увидишь.
Аноним 18/11/16 Птн 17:51:39  877898
>>877897
Запущенный не в среде студии экзешник (из папки) тоже не работает как надо.
Аноним 18/11/16 Птн 17:57:53  877904
>>877898
Хуй знает, навскидку код вроде норм. Обработку ошибок и диагностику добавь.
Аноним 18/11/16 Птн 17:59:34  877906
>>877898
>>877904
Попробуй открывать процесс с SYNCHRONIZE, а не с полным доступом.
Аноним 18/11/16 Птн 18:22:39  877911
>>877906
Не помогло. Попробую посмотреть, что передается в командной строке.
Аноним 18/11/16 Птн 18:29:53  877915
>>877911
Странно, вот здесь вместо пути выводится форматная строка.

http://pastebin.com/taKpQnJr
Аноним 18/11/16 Птн 18:31:41  877918
Почему-то GetModuleFileName(GetModuleHandle(NULL), szExePath, MAX_PATH); вместо пути записывает в буфер символ С.
Аноним 18/11/16 Птн 18:59:20  877932
>>877918
В настройках проекта юникод, а на предупреждения ты не смотришь?
Аноним 18/11/16 Птн 19:27:05  877939
>>877932
Ух спасибо, почти весь день убил на поиск проблемы. Надо мне читать Рихтера про юникод и переходить на него.
Аноним 18/11/16 Птн 19:53:49  877952
ананасы, подскажите, можно ли как нибудь способом узнать указывает ли указатель void * на какое либо место в памяти
Аноним 18/11/16 Птн 20:02:19  877962
>>877952
Да, можно.
Погугли функции с названиями вроде check memory page existence и т.п.
Аноним 18/11/16 Птн 20:09:36  877968
>>877962
большое спасибо
Аноним 18/11/16 Птн 20:11:28  877971
>>877952
Добавлю, что необходимость в таких функциях чаще всего следствие того, что ты делаешь что-то не так либо что-то близкое к системному софту.
Аноним 18/11/16 Птн 20:17:32  877977
>>877723
Можешь попробовать это https://github.com/vurtun/nuklear
Аноним 18/11/16 Птн 22:58:06  878087
winlocker.jpg (101Кб, 1280x800)
Вечер в хату, мужики и стремящиеся. Хочу сделать полупрозрачный гуй, чтобы главное окно и контролы были полупрозрачные, но рамки были яркие. Примерно как на пикрелейтед. Как это можно сделать? Перекопал сегодня много сайтов, но нашел мало полезного. Вот, например:

https://www.experts-exchange.com/articles/1783/Win32-Semi-Transparent-Window.html
Аноним 18/11/16 Птн 23:11:12  878097
>>878087
>Вечер в хату, мужики и стремящиеся
нахуй пошел, зек ебаный
Аноним 18/11/16 Птн 23:12:14  878098
>>878087
>Вечер в хату, мужики и стремящиеся
иди на хуй
Аноним 18/11/16 Птн 23:18:29  878100
smilecry.jpg (9Кб, 200x200)
>>878097
>>878098
Да ты же РОЛИДОВЫЙ.
Аноним 19/11/16 Суб 05:32:04  878163
1.png (2Кб, 355x55)
2.png (14Кб, 644x160)
Уже перечитал несколько про циклический алгоритм во многих источниках, но так и не могу ничего сделать, может кто нибудь дать совет по конкретному примеру? Хотя бы основу самого цикла, а то я возился около 4ех часов и ничего не получил, а лабу сдавать в понедельник
Аноним 19/11/16 Суб 05:34:34  878164
>>878163
Я понимаю, как задать сам цикл, но не понимаю как заставить считать значение n-ого слагаемого
Аноним 19/11/16 Суб 05:44:10  878167
>>878164
Вроде про цикл в задании ничего. Рекурсивно оно проще для понимания. Погугли "recursive cosine taylor series in c". Ну или можешь циклом считать, да. Минусы и плюсы - это 1 в степени n, степени в числителе - 2n, числа в знаменателе - факториал 2n. Значения, требуемые для вычисления числителя и знаменателя можно запоминать с предыдущего шага.
> не понимаю как заставить считать значение n-ого слагаемого
В смысле, не умеешь возводить число в степень с помощью pow() и делить его потом?
Аноним 19/11/16 Суб 05:45:52  878168
>>878167
> 1 в степени n
-1 конечно же.
Аноним 19/11/16 Суб 05:53:24  878172
>>878167
Как посчитать то я знаю, я от том, что мы вводим любое n и программа должна посчитать этот n-ый элемент выражения, как это записывать?
Аноним 19/11/16 Суб 05:55:55  878173
>>878172
Ну тебе все равно всю сумму считать. У тебя будет цикл от 1 (или 0) по n, в цикле ты вычисляешь очередное слагаемое, заканчиваешь n-ным. В чем проблема вывести его после выхода из цикла?
Аноним 19/11/16 Суб 05:59:14  878174
>>878173
Точно, спасибо анон, погуглил про рекурсию вроде наглядно понял
Аноним 19/11/16 Суб 20:41:34  878465
417gZ5UWm-L.SX3[...].jpg (22Кб, 389x499)
Хочу вкатиться в си по пикрилу. Какие подводные?
Аноним 19/11/16 Суб 20:55:20  878470
>>878465
Никаких. Читай, делай упражнения, приходи с вопросами, если возникнут. Успехов.
Аноним 19/11/16 Суб 20:57:14  878472
>>878470
Как по пути не обосраться с мотивацией продолжать?
Аноним 19/11/16 Суб 22:07:11  878524
>>878472
Пиши малварь. Поделай что-нибудь в реестр, напиши примитивный троян, который копируется в пользовательские папки, сканирует снапшот процессов и закрывает диспетчер задач. Посмотри, как мейлру параша прописывается в системе и самовосстанавливается. Сделай так же. Подъеби кого-нибудь этим трояном, главное, не попади в чью-нибудь статью о том, как лох пытался впарить троян, но соснул.
Аноним 19/11/16 Суб 22:20:08  878532
>>878524
Во-первых, до малвари нужно язык выучить, чтобы не быть, как тот анон из ньюфаг-треда, который функцию переменной присваивает, да и не только язык - по-хорошему, желательно прочитать хотя бы Рихтера, а потом заполировать Inside Windows. Во-вторых, я очень надеюсь, что тебя поймают и пояснят по хардкору, почему распространять малварь плохо.
Аноним 19/11/16 Суб 23:43:31  878570
Пойти что ли на рефактор.ио вбросить. Алсо, эх, как плохо без тяночки. Вокруг компьютера они не водятся.

http://ideone.com/wm2fM6
Аноним 20/11/16 Вск 00:05:56  878576
Безымянный.jpg (15Кб, 434x155)
отцы помогите тотал нюфагу вкатитсяможет что-нибудь получится
в поставке clang++ из коробки я так понял нет стандартных библиотек, а в GCC:g++ есть.
можно их как-нить с консолидировать чтоб и clang все появилось
Аноним 20/11/16 Вск 00:08:21  878578
>>878576
В папке со шлангом создай i686-w64-mingw32, туда скопируй include, lib, libexec из гцц. А еще лучше создай симлинки.
Аноним 20/11/16 Вск 00:11:40  878584
>>878578
> шиндошс
> симлинки
Аноним 20/11/16 Вск 00:22:45  878589
>>878578
чтот ничего(
Аноним 20/11/16 Вск 00:45:55  878604
>>878584
Да, в NTFS есть симлинки и хардлинки, доброе утро. Но вообще, я имел в виду junction points.

>>878589
Уверен, что правильно скопировал? Что пишет? Покажи скриншот clang -v file.c (кресты я компилить не пробовал, если что).
Аноним 20/11/16 Вск 00:46:36  878605
>>878589
только щас заметил что не в тот тред написал
Аноним 20/11/16 Вск 00:48:22  878608
>>878604
>>878605
Попробовал кресты, хелловорлд компилится.

Аноним 20/11/16 Вск 00:49:20  878609
ddddd.jpg (242Кб, 977x579)
>>878604
Аноним 20/11/16 Вск 01:02:21  878618
>>878609
Я не знаю, почему у тебя таргет по умолчанию msvc. Возможно, стоит убрать переменные окружения INCLUDE и LIB. А насчет хедеров - я сейчас поэкспериментировал, та папка не нужна, оно (по крайней мере у меня) находит директорию с MinGW, если она есть в PATH и автоматически использует инклуды оттуда. Но у меня в винде только clang 3.7 и gcc 4.8. Может, с тех пор что-то сломали. Возможно -target mingw32 решит проблему.
Аноним 20/11/16 Вск 01:07:08  878622
>>878618
все директории сеть в переменных средах
всё ставил с сайта, таргетинг не понимает(
Аноним 20/11/16 Вск 01:11:11  878624
>>878622
clang -v -target i686-w64-mingw32 foo.c

Ну пользуйся гцц, пока кто-нибудь умный не придет и не подскажет скорее всего, вместо решения проблемы предложат поставить линупс.
Аноним 20/11/16 Вск 01:14:20  878626
>>878604
> доброе утро.
> 00:45:55
> NTFS есть симлинки и хардлинки
То-то я смотрю, в Cygwin до сих пор пользуются магическими файлами, а в Msys ln -s равнозначно cp. Наверное, они не знают об этих фичах файловой системы.
Аноним 20/11/16 Вск 01:16:49  878627
>>878624
> скорее всего, вместо решения проблемы предложат поставить линупс.
Ну, это как спрашивать у мылачей, почему последняя студия под вайном не работает и как это исправить.
Аноним 20/11/16 Вск 01:22:22  878629
>>878626
> в Cygwin до сих пор пользуются магическими файлами, а в Msys ln -s равнозначно cp
Компатибилити же. Настоящие симлинки (которые поддерживаются для файлов тоже) появились в Висте. Junction points не помню, но вроде в XP. И это не работает на FAT32. И там есть тонкости. Вот и не делают.
https://en.wikipedia.org/wiki/NTFS_symbolic_link
https://en.wikipedia.org/wiki/NTFS_junction_point

>>878627
Ты уж определись, либо компилятор кроссплатформенный, либо только под линупсы. В студии кроссплатформенность никто не обещал. Шланг и гцц нормально работают в винде, но могут возникать мелкие проблемы, в основном из-за LFSтрадиции хардкодить пути.
Аноним 20/11/16 Вск 01:23:47  878631
>>878629
> LFS
Лол, FHS.
слоуфикс
Аноним 20/11/16 Вск 01:26:46  878634
14795895564100.jpg (500Кб, 1366x768)
>>878624
помогло))
компилит с опцией -target x86_64-w64-mingw32
без нее не хочет
Аноним 20/11/16 Вск 01:27:23  878635
>>878634
Теперь, наверное, стоит посмотреть на твой PATH.
Аноним 20/11/16 Вск 01:33:03  878638
Безымянный.jpg (61Кб, 529x504)
>>878635
вроде все правильно
Аноним 20/11/16 Вск 01:38:04  878639
>>878638
Да, все правильно. Больше идей нет. Сделай батник clang-mingw с содержимым типа @clang -target x86_64-w64-mingw32 %*
Аноним 20/11/16 Вск 01:45:10  878643
>>878629
То-то и оно, что тонкостей больше, чем приемлимо для ежедневного использования. Невозможность создавать эти самые симлинки от обычного юзера в дефолтных настройках безопасности, как пример.
А потом говорят, что в линуксе пердолинг.
Аноним 20/11/16 Вск 01:55:03  878645
>>878643
Я junctions и хардлинки очень давно использую. Нестандартные права для них не нужны, проблем особых с середины 2000х не припомню кроме мелочей типа антивируса, впадавшего в бесконечный цикл при сканировании или инсталляторов, которые до сих пор! проверяют свободное место на томе, где расположена junction point, а не там, куда она указывает.
Аноним 20/11/16 Вск 05:46:51  878668
Наткнулся на следующий синтаксис:
return (pointer);

К чему тут скобки?
Аноним 20/11/16 Вск 05:53:14  878669
>>878668
Не влияют ни на что. Кому-то нравится визуально, и они втыкают скобки всегда. Некоторые ставят, когда возвращается выражение.
Аноним 20/11/16 Вск 16:08:58  878850
>>877971
ебашу интерпретатор джавы на сишке, при алокации структур заношу указатели в буффер, чтобы при любой ошибке сразу вычистить всю память и не было leakов. Проблема лишь в том, что по ходу работы интерпретатора я все равно освобождаю память и в результате при очистке памяти у меня может программа попытаться вычистить уже пустой указатель, поэтому надо как то проверять их. Не покидает ощущение того, что организовываю все это ебано, возможно есть лучший варик как это сделать
Аноним 20/11/16 Вск 16:32:38  878860
compile.png (3Кб, 640x70)
Изучаю использование юникода в винапи по книге Рихтера. Как вызвать ошибку компиляции в этом коде? http://ideone.com/jEG29d

Рихтер пишет, что компилятор по умолчанию рассмаривает строки как ANSI, поэтому код компилируется нормально. Но если определить _UNICODE, то возникнет ошибка. Однако ошибка не возникает ни при определении этого макроса с подчеркиванием, ни без подчеркивания. Почему так?

Компилирую из командно строки (пикрелейтед).
Аноним 20/11/16 Вск 17:02:00  878894
>>878850
Хендлы.
Аноним 20/11/16 Вск 17:08:55  878899
>>878850
> Не покидает ощущение того, что организовываю все это ебано, возможно есть лучший варик как это сделать
Да. GC.
Аноним 20/11/16 Вск 17:11:01  878903
>>878860
> WinAPI
> UTF-16 вместо кодировки
Зря ты за это взялся.
Аноним 20/11/16 Вск 17:15:36  878907
Окей, реализовать обычный стек для обычных числел, ноу проблемс.
Допустим stack[n] или вообще (int )malloc(ij*sizeof(int))
Не могу придумать, как в стэк пихать 2D массивы?
Гугл молчит, либо я слепошарый.
Аноним 20/11/16 Вск 17:19:15  878909
>>878903
Какая кодировка сейчас в тренде? Что актуальные пацаны хайпают?
Аноним 20/11/16 Вск 17:20:27  878910
>>878909
utf8 же
Аноним 20/11/16 Вск 17:45:47  878929
>>878909
ascii
Аноним 20/11/16 Вск 19:55:51  879097
>>878860
Ты представляешь, как препроцессор работает? Ты определяешь UNICODE после включения windows.h, и в результате в windows.h (точнее, в одном из включенных из него хедеров) TCHAR дефайнится как CHAR. Очевидно, чтобы возникла ошибка, надо сделать -DUNICODE в командной строке или дефайн до инклуда.

>>878910
> UTF-8 в Windows
И кодировать туда-сюда на каждый вызов API. Охуенный совет. Не говоря уже о проблемах самой UTF-8, удобной лишь для передачи текста, а не для обработки.

>>878907
Указатели пихай или поясни, зачем ты собрался пихать в стек массивы по значению.
Аноним 20/11/16 Вск 20:04:57  879109
>>879097
>И кодировать туда-сюда на каждый вызов API.
Всю жизнь собрался сидеть в WinAPI и дальше локалхоста не вылазеть?
> Не говоря уже о проблемах самой UTF-8, удобной лишь для передачи текста, а не для обработки.
Ахахаххаахахахахаха! Вангую бред про "доступ к символу по индексу".

utf8 прекрасна для всего!
Аноним 20/11/16 Вск 20:07:00  879112
>>879109
> utf8 прекрасна для всего!
То-то гугл глупый и андроендах использует UTF-32.
Аноним 20/11/16 Вск 20:08:14  879113
>>879112
> андроендах использует UTF-32.
В каком конкретно месте?
Аноним 20/11/16 Вск 20:11:11  879117
Screenshot at 2[...].png (45Кб, 721x306)
>>879112
>То-то гугл глупый и андроендах использует UTF-32.
Аноним 20/11/16 Вск 20:11:26  879118
>>879113
sizeof(wchar_t) в NDK, очевидно же. Да, доступ по индексу. Да, необходимость бранчей или таблиц для вычисления длины строки. А еще инвалидный UTF-8, приводящий к уязвимостям. А еще невозможность порезать строку нормально.
Аноним 20/11/16 Вск 20:15:50  879123
>>879118
>sizeof(wchar_t) в NDK
Пхе-хе-хе, при чём тут android, это libc, старающаяся быть совместимой с glic.
> Да, доступ по индексу.
ffl — вот 3 буквы. Получи по индексу доступ ко второй.
> Да, необходимость бранчей или таблиц для вычисления длины строки.
define "длина строки". Для меня и strlen "длина строки".
> А еще инвалидный UTF-8, приводящий к уязвимостям.
Проблема уязвимых библиотек.
> А еще невозможность порезать строку нормально.
Раскрой мысль.
Аноним 20/11/16 Вск 20:40:06  879147
>>879123
> вот 3 буквы
Я про буквы не говорил. Про то, как юникод устроен, я знаю, и про combining characters тоже, и про лигатуры. Но я вполне могу юникод нормализовать, хранить его нормализованным в UTF-32 и потом что-то в таком виде с символами сделать (например, проверить класс по табличке). И делать это проще, когда у тебя codepoint - одна сущность, а не когда тебе ее нужно сначала из байтиков собрать, да еще не забыть на валидность проверить.

> Для меня и strlen "длина строки".
> Проблема уязвимых библиотек.
Нет, вопрос сложнее. Например, я закодировал \0 в виде двух байтов. У либц (strlen, в частности), твоего кода и библиотечного кода могут быть совершенно разные взгляды на этот символ (и это правильно, потому что подход зависит от цели обработки, а та же либц про твои цели нихуя не знает). Кто-то это выбросит, кто-то заменит, кто-то ошибку вернет, а кто-то пропустит.

> А еще невозможность порезать строку нормально.
snprintf() и случай, когда строка не влезла в буфер. Возникают веселые спецэффекты.
Аноним 20/11/16 Вск 20:49:02  879153
>>879147
> проверить класс по табличке). И делать это проще, когда у тебя codepoint - одна сущность, а не когда тебе ее нужно сначала из байтиков собрать, да еще не забыть на валидность проверить.
Нет, ну если у тебя единственная задача — проверять класс codepoint-а по табличке, то для тебя UTF-32 — лучший выбор.

> я закодировал \0 в виде двух байтов.
Искусственный пример. Если ввод должен прилетать откуда-то извне, он должен проверяться на валидность. К кодировке это отношения не имеет.

> snprintf() и случай, когда строка не влезла в буфер. Возникают веселые спецэффекты.
Чем же нам тут UTF-32 поможет?
Аноним 20/11/16 Вск 20:51:48  879156
>>879118
>sizeof(wchar_t)
Не подскажешь аналог fopen, принимающий wchar_t?
Аноним 20/11/16 Вск 20:59:36  879163
>>879153
> Чем же нам тут UTF-32 поможет?
> К кодировке это отношения не имеет.
Тем, что строка останется валидной. А вот если ты порежешь UTF-8 посередине codepoint, у тебя из проверенного, валидного юникода возникнет невалидный, но ПРОВЕРЕННЫЙ, со всеми вытекающими.

>>879156
> fopen()
Это вопрос про недостатки сишной либы, и к тому, какие имена файлов и в какой кодировке принимает ОС. Она может принимать исключительно 7-битный ASCII, если это ембеддед, может принимать исключительно CP866, а может вообще указатель на 16-байтовый бинарный GUID последнее - трустори, если что.
Аноним 20/11/16 Вск 21:07:41  879169
>>879163
>Тем, что строка останется валидной.
Ой-ой-ой. Манявалидной, ты хотел сказать.
Никому нафиг не нужна валидная последовательность байт, люди на буквы смотрят =)

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

Кстати, сколько букв в следующей строке "ch"?
Аноним 20/11/16 Вск 21:14:38  879172
>>879163
>Это вопрос про недостатки сишной либы
Это про преимущество. Хоть куда-то этот блядский wchar_t не пролез. Его вообще не должно существовать!
> какие имена файлов и в какой кодировке принимает ОС
Ну, кхе-кхе, кхе-кхе, тут может быть проблема. Но если ты принимаешь имена через аргументы командной строки, то должно, в идеале, работать везде.
Аноним 20/11/16 Вск 21:30:14  879180
>>879169
> люди на буквы смотрят
Так проблема-то в том, что компьютеры смотрят на байты. Например, если это логин или имя файла.

> отрежешь accent-ы от буквы
Что лучше: оставить висеть акценты, пролететь мимо \0 в буфере или много позже вернуть из какой-то функции ошибку, когда ее никто не ожидает?

> Кстати, сколько букв в следующей строке "ch"?
Букв две.

В общем, я тебя понял, ты меня понял, друг друга мы не переубедим. У тебя идеальный мир, ограничивающийся линупсами и, подозреваю, прочитанный когда-то манифест про утф8 эвривер, а у нас на работе только пару лет назад ANSI-шные билды дропнули. Алсо, в последнем проекте у меня у самого UTF-8 основной кодировкой, кроме встроенного редактора и абстракций над файловой системой. Время покажет, что из этого выйдет.
Аноним 20/11/16 Вск 21:32:08  879183
>>879180
> Что лучше: оставить висеть акценты, пролететь мимо \0 в буфере или много позже вернуть из какой-то функции ошибку, когда ее никто не ожидает?
Ничего не лучше. И UTF32 никак не поможет.

>Букв две.
Не всегда =)
Аноним 20/11/16 Вск 21:37:35  879189
Можно ли и вправду научиться кодить, читая только мануалы?
Аноним 20/11/16 Вск 22:38:10  879226
>>876376
Реальные задачи попробуй решать.
Аноним 20/11/16 Вск 22:40:18  879229
>>877723
Какие в жопу фреймворки???
У Си только один вменямый инструмент для окон - GTK.
Аноним 21/11/16 Пнд 01:08:34  879360
>>879097
>зачем
Мне на вход подается ебаная куча матриц, и операторов между ними. Я должен всё это подсчитать, естественно умножение приоритетная операция. Ну я и подумал собирать матрицы и операторы в стек и постфиксной ротацией всё это вычислять.
Аноним 21/11/16 Пнд 01:25:12  879363
>>879360
Ну и сделай структурки (либо, если у тебя скаляры тоже есть - union сверху еще), и стек этих структурок.
Аноним 21/11/16 Пнд 17:56:12  879659
Анон, что здесь определяется и для чего?

typedef LONG (WINAPI * NtUnmapViewOfSection)(HANDLE ProcessHandle, PVOID BaseAddress);

Ниже по коду такая строчка:

NtUnmapViewOfSection xNtUnmapViewOfSection;
Аноним 21/11/16 Пнд 18:00:36  879664
>>879659
Указатель на функцию.
Аноним 21/11/16 Пнд 18:06:33  879669
>>879664
Нафиг он нужен, если можно вызвать саму функцию?
Аноним 21/11/16 Пнд 18:07:42  879671
>>879669
А если неизвестно какую?
Аноним 21/11/16 Пнд 18:48:46  879704
>>879669
для шимминга, для реализации ООП (методы структуры), для реализации функторов, или для передачи функции в функцию
Аноним 21/11/16 Пнд 19:26:54  879736
>>879669
Эта функция была недокументированной на момент написания кода, и чтобы не кусать локти, если Microsoft вдруг ее уберет не уберет, к ней не стали линковаться статически.
Аноним 21/11/16 Пнд 20:34:11  879787
Как сделать что бы программа выполнялась пока не нажать определенною кнопку?
Аноним 21/11/16 Пнд 20:37:41  879790
>>879787
while (!knopkah_is_on)
{
...
}
Аноним 21/11/16 Пнд 20:42:58  879794
>>879787
ОС какая? И подробнее расскажи, чего тебе надо. Может, ты трояна пишешь, хз.
Аноним 22/11/16 Втр 22:31:31  880515
Как мне выровнять ассемблерную ставку на дворд? http://ideone.com/kAflFC

Из-за того, что мои нопы не выровнены, поиск этой метки при помощи указателя на дворд пропускает их.
Аноним 22/11/16 Втр 22:41:31  880519
>>880515
Если это Microsoft, то просто align 4.
Аноним 22/11/16 Втр 22:44:31  880521
>>880519
Не понял. Покажи на примере. Такой код работает не так, как задумано.

http://ideone.com/PGOhV4
Аноним 22/11/16 Втр 23:14:18  880544
slowpoke.png (175Кб, 2282x2087)
Посоны, я вам свеженького баттхерта принес.
https://www.linux.org.ru/forum/development/13019524
Аноним 22/11/16 Втр 23:25:25  880551
>>880544
>2016
>быдло бугуртит от WinAPI

О времена! А раньше каждый школьник с компьютером был исследователем реестра винды.
Аноним 22/11/16 Втр 23:28:52  880553
https://github.com/coruws/malware/tree/master/beetle2

Вин.
Аноним 22/11/16 Втр 23:33:12  880557
>>880521
Хуй знает, что у тебя там задумано, но у меня все выравнивается, мессаджбокс выдает адреса, по которым начинаются твои нопы. Зачем ты ксоришь код и потом вызываешь полученный мусор?
Аноним 22/11/16 Втр 23:46:35  880564
>>880551
Раньше и трава была зеленее, и девки чаще давали.

>>880553
Очередной студент младших курсов.
Аноним 22/11/16 Втр 23:48:05  880566
>>880557
Делаю протектор. В шеллкоде код между этими метками будет заксорен. Потом он расшифровывается, выполняется и снова зашифровывается.
Аноним 23/11/16 Срд 17:54:28  880946
http://pastebin.com/vERrVKVZ

за что сатана предал меня ?
Аноним 23/11/16 Срд 17:55:04  880947
>>880946

struct one {
char a;
char b;
};

struct two {
struct one c;
struct one d;
};

void firstfunction(void source, void dest, int size)
{
memcpy(dest,source,size)
}

void secondfunction(struct two onedata)
{
struct two twodata;
firstfunction((void
)onedata->c,(void )&twodata.c,2);
}

void main()
{
struct two onedata;
secondfunction(&onedata);
}

gcc -g -O2 struct.c -o struct
struct.c: In function ‘secondfunction’:
struct.c:19:2: error: cannot convert to a pointer type
firstfunction((void
)onedata->c,(void )&twodata.c,2);
^~~~~~~~~~~~~
<builtin>: recipe for target 'struct' failed
make:
[struct] Error 1
Аноним 23/11/16 Срд 18:09:10  880956
>>880946
>>880947
Всё верно.
Аноним 23/11/16 Срд 18:21:25  880961
>>880956
нихуя не верно. надо так

firstfunction(&onedata->c, &twodata.c,2);

и без приведений в данном случае если функция сразу укзатели на войды принимает
Аноним 23/11/16 Срд 18:22:38  880963
>>880961
>нихуя не верно
Я имел ввиду, что gcc и сотона правы, предав тебя.
Аноним 23/11/16 Срд 21:33:33  881119
В рекомендациях книжка Кернигана и Ритчи, в первой же главе -
while(getchar() != EOF)
Как передать ЕОF , если я предаю значение из командной строки в винде? В одном месте советуют ctrl+z, но нифига. Не работает.
CodeBlocks, Win7, TCC
Аноним 23/11/16 Срд 21:45:32  881126
>>881119
ctrl+z работает если ничего не было введено после нажатия на enter
Аноним 23/11/16 Срд 21:52:29  881132
Почему.png (56Кб, 712x1252)
>>869911 (OP)
Перепощу из треда ньфагов, тут вроде уместней?

Подскажите, почему запоминается последняя цифра, если цикл до 15, а цифр в числе 16?
Если я сделаю цикл до 16 значений, то а[16] запишется как 0.
Можете объяснить?

#include<stdio.h>

int main(void)
{
long long h;
do
{
printf("Card number:\n");
h = get_long_long();
} while(h<=0 || h>=9999999999999999 || h<1000000000000);
if (h<1000000000000000)
{
while (h<999999999999999)
h=h*10;
}
int a[16];
int b[16];
int i;
for(i=1; i<=15;i++)
{
printf("%i\n",i);
printf("%lli\n",h);
a[ i ] = (int)(h%10);
h = h/10;
printf("%i\n\n",a[ i ]);
}
for(i=1; i<=16;i++)
{
b[ i ] = a[17-i];
printf("%i ", b[ i ]);
}
}

Ну и ещё, подскажите, если знаете, как проще задать это ограничение на получаемое с клавиатуры число: положительное, от 13 до 16 знаков.
Аноним 24/11/16 Чтв 12:24:42  881404
>>881132
Потому что индексы массивов считают от нуля.
Аноним 24/11/16 Чтв 12:32:23  881409
Нужно создать функцию, которая может принимать в себя любую другую функцию это вроде callback называется. Немного погуглил и наткнулся лишь на примеры с заранее определённым типом и аргументами принимаемой, а мне надо чтобы функция могла принимать ваще любую функцию. Как запилить?
Аноним 24/11/16 Чтв 13:15:24  881432
>>881409
void set_voobshe_lyuboy_callback(void *pointer_na_voobshe_chto_ugodno);
Аноним 24/11/16 Чтв 13:28:38  881436
>>881432
А если у функции больше одного аргумента?
Аноним 24/11/16 Чтв 13:47:56  881459
>>881436
> pointer_na_voobshe_chto_ugodno
> voobshe_chto_ugodno
Алсо, объясни, что ты будешь с этим колбэком делать, тогда тебе, может быть, и посоветуют.
Аноним 24/11/16 Чтв 13:54:27  881462
>>881459
Пока у меня только теория. По идеи просто выполнять функцию при определённых условиях. Что с ним ещё можно сделать?
Аноним 24/11/16 Чтв 14:34:26  881488
>>881432
Попробовал на практике, когда я вызываю указатель на вообще что угодно мне говорят что "pointer_na_voobshe_chto_ugodno is not a function or function pointer".
Аноним 24/11/16 Чтв 16:40:31  881524
>>881488
ALLO
Нет, серьёзно, я спатьки хочу.
Анончик-анончик, ответь мне.
Аноним 24/11/16 Чтв 20:02:18  881617
7663953621.jpg (69Кб, 474x700)
>>881488
> 1488
Указатель, чтобы его вызвать, надо сначала скастовать к тому же самому типу, каким была объявлена функция (иначе undefined behavior). Вот тебе пример. Сначала объявляешь типы своих колбэков (решетку везде заменяй на звездочку):
typedef int (#GovnoPtr)(int arg1);
typedef void (#MochaPtr)(int arg1, char #arg2);
Потом делаешь enum с перечислением своих типов:
enum CallbackType {CALLBACK_GOVNO, CALLBACK_MOCHA};
В свою йоба-функцию-обработчик ты скармливаешь не только указатель на колбэк, но и его тип:
void zaloopa(void #callback_ptr, enum CallbackType type) {
if (type == CALLBACK_GOVNO) {
int result = ((GovnoPtr) callback_ptr)(1488);
} else {
((MochaPtr) callback_ptr)(359, "MYTISCHI UNITY HARDCORE");
}
}
Как-то так.
Аноним 24/11/16 Чтв 21:05:40  881641
>>881488
> вызываю указатель
PSSSHHHH UKAZATEL ETO TY?
Аноним 25/11/16 Птн 01:11:08  881753
>>881641
FREE 5 FREE 5 ХОРОНИ ПАМЯТЬ, ХОРОНИ ГОВОРЮ
Аноним 25/11/16 Птн 01:25:29  881755
>>881617
сук пиздез, блеванул от этой хуйни
Аноним 25/11/16 Птн 01:36:22  881758
>>881755
Предложи свой вариант.
Аноним 25/11/16 Птн 05:31:06  881785
>>881617
Бляяяя, пиздец.

Я либу пишу, в либе есть функция, которая должна принимать функцию из внешней программы, которая пользуется этой либой. Так вот, мне нужно юзерфрендли! Чтобы просто всё было. А тут... Бляяя, пиздец. Бляяя, пиздец!
Аноним 25/11/16 Птн 05:46:40  881786
>>881785
> принимать функцию из внешней программы
Нельзя вызвать функцию, не зная ее тип.

> мне надо чтобы функция могла принимать ваще любую функцию
Поясни, зачем. Скорее всего, ты хочешь void (∗ callback)(void ∗user_data) - это нормальная практика, максимум юзер-френдли. Ну или в крайнем случае проебать типы и void (∗ callback)(int paramspec, ...), но для этого варианта нужны серьезные основания.
Аноним 25/11/16 Птн 05:56:45  881787
>>881786
Да, уже дошло, сделал так void (*callback)(void).
Аноним 25/11/16 Птн 07:38:25  881796
>>881786
Анон, ещё один небольшой вопрос. Вот передал я функцию callback в функцию, а как мне в этой функции записать принятый callback в указатель?
Аноним 25/11/16 Птн 07:50:30  881797
Ты уже принимаешь указатель на фунцию. Хочешь его куда-то записать - объяви другой указатель на функцию и используй = для присваивания. Или покажи код.
Аноним 25/11/16 Птн 07:58:31  881798
Есть тут кто нибудь?
Один вопрос по си
Аноним 25/11/16 Птн 07:59:46  881799
>>881798
Никого нету. Но ты все равно спрашивай.
Аноним 25/11/16 Птн 08:03:22  881800
>>881799
Окей, например

...
char A[5];
char B[] = "hello3"


Из строки B переписать в А только цифры.

Да, вопрос глупый, но я хз
В интернете ничего не нашел
Аноним 25/11/16 Птн 08:03:43  881801
>>881797
Спасибо.
Я, идиот, делал ptr = callback(); а надо было ptr = callback;
Аноним 25/11/16 Птн 08:10:39  881802
>>881800
Помогите пожалуйстаа
Аноним 25/11/16 Птн 08:11:20  881803
>>881800
Ну объявляешь указатели на оба массива. В цикле читаешь символы по указателю на B, если прочитал '\0' - выходишь из цикла, если прочитал что-то, для чего isdigit() вернул ненулевое значение - пишешь символ по указателю на буфер A. После выхода из цикла пишешь '\0' по указателю на буфер A. Про инкременты указателей не забудь. Алсо, можешь сделать то же с индексами, а не с указателями.
ПЕРЕКАТ Аноним # OP  25/11/16 Птн 08:19:26  881808
>>881807 (OP)
>>881807 (OP)
>>881807 (OP)
>>881807 (OP)
>>881807 (OP)
Аноним 25/11/16 Птн 08:22:15  881809
1480051304748-1[...].jpg (2203Кб, 3264x2448)
>>881803
Делаю с индексами, она почему то ругается
Аноним 25/11/16 Птн 08:28:21  881812
>>881809
Ты не можешь присвоить массив, прочитай в правой части от = нужный тебе символ.
Аноним 25/11/16 Птн 08:30:54  881814
1480051758963-4[...].jpg (2604Кб, 3264x2448)
>>881812
Только не А катое
Аноним 25/11/16 Птн 08:33:42  881815
laba1.png (6Кб, 412x90)
>>881812
Забыл k инициализировать. Ну да похуй, пикрелейтед.
Аноним 25/11/16 Птн 08:33:48  881816
148005199751798[...].jpg (2612Кб, 3264x2448)
>>881812
Так правильнее?
Аноним 25/11/16 Птн 08:40:35  881817
148005241140390[...].jpg (2847Кб, 3264x2448)
>>881815
Ахахахах, пиздец
Да мне кажется мой препод тут ничего кроме while не поймет
Бтв, все равно ругается
Аноним 25/11/16 Птн 08:42:01  881819
>>881817
Ну оно же тебе на чистейшем русском языке говорит, что у тебя не так.
Аноним 25/11/16 Птн 09:09:38  881825
>>881819
Да, спасибо
Доделал, все работает правда пришлось новые слова учить, но это даже хорошо
Спасибо большое, анон

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 513 | 37 | 135
Назад Вверх Каталог Обновить

Топ тредов
Избранное