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

C Programming Language #12

 Аноним OP 07/09/16 Срд 20:35:58 #1 №837592 
14732697590980.png
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Что читать:

- Классика от Отцов: 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/

Шапка: http://piratepad.net/bJ1SdmkZyu
sageАноним 07/09/16 Срд 20:46:38 #2 №837607 
>2016
>C
/thread
Аноним 07/09/16 Срд 20:54:33 #3 №837611 
>>837607
> 2k14+2
> /thread
Аноним 07/09/16 Срд 22:15:24 #4 №837660 
Есть гайд для тупых как комить на gcc?
а то слишком СЛОЖНА.
Тем более я только начал учить, не бейте.
sageАноним 07/09/16 Срд 22:19:40 #5 №837662 
>>837660
>а то слишком СЛОЖНА
???
Аноним 07/09/16 Срд 22:21:07 #6 №837663 
>>837660
> как комить на gcc?
Кодить? Компилировать? Если второе, то cc file.c (или даже make file). А если первое, то книжки у нас в шапке.
Аноним 07/09/16 Срд 22:48:36 #7 №837686 
Есть литература на родном языке? Уровень знания английского низкий, особенно без понимания базовых вещей.
Аноним 07/09/16 Срд 22:52:09 #8 №837693 
>>837686
K&R есть на русском (ищи третье издание перевода), Прата тоже. Обе книги гуглятся.
Аноним 08/09/16 Чтв 00:51:45 #9 №837769 
>>837693
Нашел & Схоронил. Спасибо.
Аноним 08/09/16 Чтв 14:40:36 #10 №838039 
Закину и сюда, вдруг это какой-то подводный камень и в ньюфаго треде о нём не знают.
Есть один цикл
while ( read(client_socket, &c, 1) > 0)

Теперь тело. Варианты:
putchar(c) - всё окей, результат устраивает.

putchar(c)
printf("%d ", c)
После каждого символа он ещё и код поясняет.

А теперь внимание:
printf("%d ", c) выдает совсем другой результат. По крайней мере, коды последних символов не совпадают с вариантом, в котором есть putchar(c). Что за говно? С сокета гарантировано постуают одинаковые символы.
Аноним 08/09/16 Чтв 14:51:16 #11 №838056 
>>838039
Никаких подводных камней, просто я не сбрасывал буфер.
Аноним 08/09/16 Чтв 21:24:35 #12 №838437 
>>838056
лошара
Аноним 08/09/16 Чтв 22:04:21 #13 №838474 
14733614618720.jpg
>>838056
Аноним 08/09/16 Чтв 22:06:00 #14 №838476 
>>838474
Там должно быть написано setbuf(stdout, NULL);
Аноним 09/09/16 Птн 12:15:49 #15 №838838 
Пацаны, скиньте пожалуйста ссылку на пак с VS.
Аноним 09/09/16 Птн 14:04:51 #16 №838893 
>>838476
>setbuf
чё за говно? опять парашка, в стили винами или позикс?
Аноним 09/09/16 Птн 19:13:13 #17 №839087 
>>838893
Не, вполне себе стандарт.
Аноним 09/09/16 Птн 20:57:25 #18 №839175 
>>838838
https://www.visualstudio.com/ru-ru/products/visual-studio-community-vs.aspx
Аноним 09/09/16 Птн 21:25:12 #19 №839206 
Какого черта, уже несколько дней одну главу про указатели читаю и перечитываю, хоть бы чего в ней осталось.
Аноним 09/09/16 Птн 21:35:10 #20 №839217 
>>839206
Если не достигаешь полного понимания, попробуй посмотреть отладчиком или порисовать ячейки памяти на бумаге.
Аноним 09/09/16 Птн 21:36:38 #21 №839218 
>>839206
https://www.youtube.com/watch?v=6pmWojisM_E

Вот попробуй, мне зашло
Аноним 09/09/16 Птн 21:57:19 #22 №839233 
>>839218
Не, мне не очень зашло именно это видео, хотя все что я услышал на этих лекциях про указатели я понял сразу же. У меня теперь другая проблема, хорошо запомнить это., усвоить, и свободно использовать, и я не могу придумать как этого достичь. Читаю сейчас рекомендованную литературу для этого курса, хоть и просрочил все их "сроки" на джве недели уже.
>>839217
Спасибо, именно так всегда и делаю. Когда не ищу отговорочки.
Аноним 09/09/16 Птн 22:05:14 #23 №839239 
>>839233
Там в задании на сервер (6 сет) наебешься с указателями на указатели
Аноним 09/09/16 Птн 22:11:24 #24 №839245 
Мимо-студент вкатился. Dev c++ хватит пока для лабораторок ?
Аноним 09/09/16 Птн 22:13:53 #25 №839249 
>>839245
Если забыть, что он древний и слегка течет GDI-хэндлами, то да, хватит.
Аноним 09/09/16 Птн 22:16:12 #26 №839250 
>>839249
А вообще gcc самый оптимальный вариант я так понимаю?
Аноним 09/09/16 Птн 22:17:24 #27 №839251 
>>839250
Да, но у шланга местами лучше диагностические сообщения.
Аноним 11/09/16 Вск 00:28:02 #28 №839814 
Привет, анон.

Поясни пожалуйста про регистры и RAM model.
К примеру, у меня есть регистры размера w и слова размера w.
Насколько я понял, то чтобы добавить 2 числа мне нужно:
1. Из памяти по указателю достать первое значение
2. Записать его в регистр
3. Из памяти по указателю достать второе значение
4. Совершить арифметическую операцию
5. Выгрузить результат из регистров в память

Что будет если у меня будет регистры размера w и слова такие, что l > w ?
Смогу ли я их записать в регистры?
Насколько я понял, то могу передавать на указатель на начало ячейки и размер самого слова.
Аноним 11/09/16 Вск 00:39:41 #29 №839819 
>>839814
> Насколько я понял, то могу передавать на указатель на начало ячейки и размер самого слова.
Не совсем понятно, о чем ты спрашиваешь. Ты не можешь записать слова размером l в регистры - получатся только остатки от деления, если у тебя little endian или частные, если у тебя big endian.

> Насколько я понял, то могу передавать на указатель на начало ячейки и размер самого слова.
Кому передавать?

Если числа не влезают в регистры, ты складываешь по кускам, используя аппаратный флаг переполнения (если у процессора он есть) или вручную (если сумма меньше одного из слагаемых, добавляешь в следующий раз 1 к слагаемым).
Аноним 11/09/16 Вск 11:46:36 #30 №839928 
Из предыдущего треда.
Антуаны-железячники и мимопроходящие, подскажите, может быть кто-то знает, как решить мою проблему. Есть один CRC32, реализованный в железе. Соответственно, доступа к алгоритму нет. Есть файл и хеш к нему. Как узнать алгоритм, чтобы рассчитать контрольную сумму для других файлов? Перебором полинома? Может быть, какие-то методики есть?
Брутфорс - крайне медленное, но, похоже, единственное решение.
Аноним 11/09/16 Вск 17:00:26 #31 №840072 
сисюны, есть ли стандартная функция для вывода на консоль подстроки из массива, не оканчивающейся на ноль но с известной длиной (типа printf %★s но без спотыка на 0).
Аноним 11/09/16 Вск 17:21:26 #32 №840092 
>>840072
Есть, putchar внутри for.
Аноним 11/09/16 Вск 17:44:19 #33 №840126 
>>840092
ты серьезно?
нет, блядь, ты серьезно так стал бы делать?
Аноним 11/09/16 Вск 17:46:53 #34 №840130 
>>840072
еще раз почитай описание printf, она позволяет так делать
Аноним 11/09/16 Вск 18:14:06 #35 №840170 
>>840130
не, если есть нулевой байт в середине подстроки то пиздос
Аноним 11/09/16 Вск 18:16:52 #36 №840175 
>>840170
Ну а ты как хотел? Другого способа найти конец нет сроки нет, ты же не передаешь длину.
Аноним 11/09/16 Вск 18:22:35 #37 №840183 
>>840175
еще раз. есть подсторка, ее длину я знаю, как ее распечатать то? с чотом того, что внутри нее можеть буть нуляка
Аноним 11/09/16 Вск 18:25:00 #38 №840188 
>>840183
>840072
>Есть, putchar внутри for.
Аноним 11/09/16 Вск 18:25:31 #39 №840190 
з.ы. вот такую ебу предлагают
fwrite(string, sizeof(char), length, stdout)
чето я не думал, что все так с принтф хуево
Аноним 11/09/16 Вск 18:27:10 #40 №840193 
>>840092
>putchar внутри for
не самый хуевый вариант
Аноним 11/09/16 Вск 18:27:52 #41 №840194 
>>840190
С printf все хорошо. Просто не нужно от него ждать волшебства.
Аноним 11/09/16 Вск 18:31:51 #42 №840201 
>>840194
где тут волшебство? нахуй на ноль проверять если длину строки я ее в ебало тычу?
Аноним 11/09/16 Вск 18:32:45 #43 №840203 
>>840201
нет бля, длина сторки мне похую, у тебя нолик в серединке. ненавижу
Аноним 11/09/16 Вск 18:44:43 #44 №840211 
>>840126
Почему бы и нет?
Аноним 11/09/16 Вск 18:47:04 #45 №840214 
>>840072
>>840170
>>840183
>>840203
По определению, строка — это последовательность символов, оканчивающаяся нулём.

Или ты из тех, кто лезет кодить даже не выучив определений?
Аноним 11/09/16 Вск 18:50:06 #46 №840219 
>>840214
>По определению, строка — это последовательность символов, оканчивающаяся нулём.
нет, ты пытаешься умничать про лексические строки
Аноним 11/09/16 Вск 18:50:58 #47 №840220 
>>840219
и да, как насчет 'превед'?
Аноним 11/09/16 Вск 18:51:49 #48 №840222 
>>840126
да конечно
Аноним 11/09/16 Вск 18:52:15 #49 №840224 
или "жо\0пко" лол
Аноним 11/09/16 Вск 18:54:14 #50 №840226 
>>840219
> лексические строки
Что такое "лексический строки"?
Аноним 11/09/16 Вск 18:56:27 #51 №840227 
>>840226
>Или ты из тех, кто лезет кодить даже не выучив определений?
кек
Аноним 11/09/16 Вск 18:57:33 #52 №840230 
>>840227
Страницу в стандарте, где приведено определение "лексическая строка"
Аноним 11/09/16 Вск 19:01:54 #53 №840233 
>>840230
я ссу в ротешник твоему стандарту. лексическая строка это строка доступная на этапе конпиляции и вычисляемая по sizeof.
Аноним 11/09/16 Вск 19:06:48 #54 №840239 
>>839928
Стандартные способы расчета пробовал?
Аноним 11/09/16 Вск 21:20:23 #55 №840312 
>>840233
А вот если бы ты не читал кривые переводы, то знал бы общепринятый термин string literal. Алсо, string literal - не строка, а последовательность символов. И если ты не хочешь следовать формату строк, который ожидает printf, можешь тупо вывести свою последовательность символов через fwrite, который как раз и предназначен для вывода последовательностей элементов.
Аноним 11/09/16 Вск 21:32:33 #56 №840324 
>>840239
Что значит "стандартные"?
Аноним 11/09/16 Вск 21:37:08 #57 №840330 
>>840312
> вывести свою последовательность символов через fwrite
спасибо кэп
Аноним 11/09/16 Вск 23:35:47 #58 №840369 
14736261479600.png
Сап. Объясните ньюфагу, почему на втором круге цикла программа дважды выводит строчку "ЗАГАДАННОЕ ВАМИ ЧИСЛО %число%? (пикрелейтед). Не могу разобраться, аж бесит.
Вот код: http://pastebin.com/04TWJ0Vg
Аноним 11/09/16 Вск 23:37:23 #59 №840370 
>>840369
flush buffer
Аноним 11/09/16 Вск 23:56:14 #60 №840379 
>>840369
добавь ещё один scanf("%c", &answer); в конец цикла (после 26ой строки)
Аноним 12/09/16 Пнд 00:01:57 #61 №840381 
>>840379
или при работе с программой жми Ctrl+D (или что там в винде нужно жать, чтобы дать знать, что ты закончил input) вместо Enter, а то получается, что ты ещё вводишь знак переноса строки и он также считывается scanf'ом
Аноним 12/09/16 Пнд 05:21:10 #62 №840433 
Аноны, чот я соснул, не омгу запилить функцию чтобы добавляла новый элемент в линкед лист. Укажите, где ошибка в коде? про ошибку в моих генах я уже знаю

https://ideone.com/FH1jwK
Аноним 12/09/16 Пнд 05:49:56 #63 №840437 
>>840433
Давай разберем:
1) В строке 27 ты ебешь list_pointer, пока он не станет NULL. В строке 31, где ты вызываешь insertEntry, он, удивительное дело, все еще NULL.
2) В строке 43 ты определяешь автоматическую (локальную) переменную. Автоматические переменные "живут", пока не выйдут из области видимости. Т.е., после выхода из insertEntry все указатели, которые у тебя указывают на newEntry уже указывают на мусор. Тебе нужен malloc() или пусть вызывающий создает новый элемент, а insertEntry будет его только втыкать (допустим, ты в main создал элемент, вызвал insertEntry, она его воткнула, и пока выполняется main, жив и элемент, все ок).
3) В строке 50 ты зацикливаешь список (нарисуй и увидишь). Тебе бы нужно присваивать list_pointer->next.
4) Там же после вставки уже нет смысла крутиться в цикле. Воткни break или return.
5) Подумай, что ты передашь, если захочешь элемент в начало (сделать его первым). Алсо подумай, как в таком случае ты уведомишь вызывающего о том, что его начало списка - уже не начало списка (можешь либо всегда возвращать указатель на правильное начало списка, либо принимать указатель на указатель на начало и модифицировать его по необходимости).
Аноним 12/09/16 Пнд 06:03:41 #64 №840438 
>>840437
Грандмерси! Все тепреь работает, вот я олух
Аноним 12/09/16 Пнд 19:10:43 #65 №840761 
>>840379
Пасиба большое :3
Аноним 12/09/16 Пнд 22:02:24 #66 №840898 
>>839928
Бамп. Ну же, нерды-матанщики, дайте мне волшебную формулу.
Аноним 12/09/16 Пнд 22:08:42 #67 №840905 
>>840324
Дебил, стандартные, значит описанные в литературе, значит те о которых ты прочитаешь на вики.
Аноним 13/09/16 Втр 03:53:36 #68 №841042 
Сап. Поясните нюфане, что значит "error: address of stack memory associated with local variable 'array' returned"

У меня есть функция
int toArray (int length, int number) {
int array[length];
for (int i = length-1; i >= 0; i--) {
array = (number % 10);
number = number / 10;
}
return array;


в методе main делаю так: int
array = toArray(5, 13542);

Как фиксить? не бейте только
Аноним 13/09/16 Втр 03:54:26 #69 №841043 
>>841042
int* toArray (int length, int number) {

быстрофикс. Указатель проебался при копипасте
Аноним 13/09/16 Втр 04:10:05 #70 №841045 
>>841043
Такс, все равно все спят или всем похуй, но я всё таки нашел решение. Если возвращать не array, а создать новый массив в функции, например ar, и сделать
ar=array;
return ar;
то всё будет работать. Стоит ли в это вникать новичку, или забить?
Аноним 13/09/16 Втр 04:11:44 #71 №841046 
>>841042
Смотри сюда >>840437 пункт 2, копипастить лень.
Аноним 13/09/16 Втр 04:13:47 #72 №841048 
>>841046
Понял, спасибо. Пошел изучать malloc()
Аноним 13/09/16 Втр 18:37:05 #73 №841377 
>>840905
>>840898
Ничего не хочешь делать, хочешь, чтобы за тебя все анон сделал?
Аноним 13/09/16 Втр 20:25:54 #74 №841458 
>>839245
Pelles C хватит с головой.
Аноним 13/09/16 Втр 23:02:13 #75 №841529 
14737969333310.png
Нужно написать программу, считающую периметр квадрата (знаю, что для даунов задача, язык учить начал буквально пару дней назад, а программы нужно писать уже сейчас). Объясните, где проебался, что не так, а то я понять не могу.
Аноним 13/09/16 Втр 23:35:19 #76 №841536 
>>841529
1) В строке 6 scanf хочет указатель на int, а не int.
2) В строке 8 printf хочет первым аргументом форматную строку (%d), а не int.
Аноним 14/09/16 Срд 02:52:32 #77 №841590 
>>841529
Почитай как правильно работает scanf и printf.
 Аноним 14/09/16 Срд 11:46:25 #78 №841692 
>>841529
man scanf
Аноним 15/09/16 Чтв 06:00:16 #79 №842111 
тут опять приуныл, что нельзя никак проверить вместимость члена структыры в статик ассерте. как же, всё-таки, хуёво. но придумать что-то надо, а то этож пиздец, забудешь, изменишь, и в переполнение.
Аноним 15/09/16 Чтв 06:03:45 #80 №842112 
ещё было бы ништяк, иметь сравнитель членов разных структур по имени, чтобы они совподали или нет. или проще, чтоб одна структура была подмножеством другой. иногда так нужней, ведь меньше оверхеда, ну, определить значения, чем в оболочке структуры пребывать.

всё это заставляет меня пить, пить много. хотя не это, а воля. попёр ка я до ночного незаконного
Аноним 15/09/16 Чтв 06:03:51 #81 №842113 
>>842111
Ну есть sizeof на худой конец и всякие UINT_MAX. Нормальным людям этого достаточно, а ненормальные могут посмотреть в сторону _Generic.
Аноним 15/09/16 Чтв 06:05:06 #82 №842114 
>>842112
>совподали
по смещениям, естественно. может, даже, с от аргументного смещения.
Аноним 15/09/16 Чтв 06:06:17 #83 №842115 
>>842112
Это вам в кресты, батенька. Алсо, вот сколько пишу, никогда из-за этого проблем не было. Из-за == были, на единичку ошибался, маски неправильно писал, промоушены эти блядские опять же. Но вот чтобы структуры перепутать - это надо суметь!
Аноним 15/09/16 Чтв 06:06:20 #84 №842116 
>>842113
всё это для бедных, и не как не поможет от ошибки. поможет, только от ошибки во второй части выражения.
Аноним 15/09/16 Чтв 06:07:14 #85 №842117 
>>842115
идиот. ну в общем-то чтец жопой и не должен быть умным.
Аноним 17/09/16 Суб 13:31:32 #86 №843356 
ну ладно,чё вы сразу, ну понаписал я хуйни, поругался, всеж мы люди. возвращайтесь.
Аноним 17/09/16 Суб 13:33:22 #87 №843357 
возможно ли сделать инлайн функцию, не в хедере, но чтоб также работало? чёт как-то не красиво получается. нихуя не понимаю как оно там работает, везде леплю static inline
Аноним 17/09/16 Суб 13:49:43 #88 №843360 
>>843357
Я тебе сейчас очередной секрет открою: когда компилируешь с высоким уровнем оптимизации (в современных компиляторах не обязательно) от этой директивы не зависит вот совсем нихуя.

Погугли про weak функции в си, насколько я помню инлайн так же для этого используется.
Аноним 17/09/16 Суб 17:09:08 #89 №843448 
>>843360
разбазариватель секретов, плеаз. статик функция ограничивает область видимости функции в файле, а вот инлайн да.
Аноним 17/09/16 Суб 17:16:52 #90 №843453 
Хочу посимвольно обработать строку из кириллицы.
Однако, даже когда просто вывожу символы, выходит лютая хуита.
Что почитать, чтобы разобраться?
Аноним 17/09/16 Суб 19:03:41 #91 №843517 
Аноны, какие есть годные туториалы по ncurses?
В гугле ничего толкового не нашёл.
sageАноним 17/09/16 Суб 21:40:29 #92 №843611 
>>843453
Узнай, что такое "кодировка".
Аноним 17/09/16 Суб 22:18:42 #93 №843636 
>>843360
Есть всякие __forceinline компиляторозависимые.
Аноним 17/09/16 Суб 22:51:54 #94 №843656 
Как на win api отредактировать, например, 24 байта заголовка файла, не копируя файл никуда и не читая его хвост?
Аноним 17/09/16 Суб 23:24:39 #95 №843671 
>>843656
fopen(..., 'rb')/fseek по вкусу/fwrite/fclose или CreateFile(..., OPEN_EXISTING, ...)/SetFilePointer по вкусу/WriteFile/CloseHandle.
sageАноним 17/09/16 Суб 23:26:31 #96 №843672 
>>843671
> rb
rb+, конечно же.
Аноним 17/09/16 Суб 23:47:34 #97 №843679 
>>843671
>CreateFile(..., OPEN_EXISTING, ...)/SetFilePointer по вкусу/WriteFile/CloseHandle
Что-то не работает. https://ideone.com/mXM6HC
sageАноним 17/09/16 Суб 23:49:17 #98 №843682 
>>843679
Уебывай отсюда нахуй.
sageАноним 17/09/16 Суб 23:49:37 #99 №843683 
>>843679
Солидарен с предыдущем ананасом.
Аноним 17/09/16 Суб 23:53:04 #100 №843687 
>>843679
А, не, все нормально, лол.
>>843682
Ссыкнул тебе в ротик.
(Автор этого поста был забанен. Помянем.)
Аноним 17/09/16 Суб 23:57:00 #101 №843690 
Ох как заебись заработало.
Аноним 17/09/16 Суб 23:58:33 #102 №843692 
Просто охуенно заработало!
Аноним 18/09/16 Вск 07:02:59 #103 №843786 
test
Аноним 18/09/16 Вск 16:06:17 #104 №843959 
14742039773120.png
Анон, прошу помощи:
Прога должна выделять заголовки функций в тексте программы
Пикрил - результат работы
Подкинете тестовых примеров? Какие подводные камни? Что не учтено?
Аноним 18/09/16 Вск 16:50:16 #105 №844000 
>>843959
Затести вот это.
http://pastebin.com/1wsRwXEr
Аноним 18/09/16 Вск 16:57:48 #106 №844007 
>>844000
Так, я вас понял и благодарю..
Невалидного объявления не может же быть в правильно написанной программе?
Заголовок может находиться в одной строке с объявлением глобальных переменных, да?(

Алсо, может подскажешь, можно ли эту всю задачу делать без регулярных выражений, но и не каким-то тупым посимвольным перебором?
Аноним 18/09/16 Вск 17:04:20 #107 №844012 
>>844007
>Невалидного объявления не может же быть в правильно написанной программе?
Это да. Но ведь твоя программа только исходник получает на вход и не может знать, правильная программа или нет. Или я что-то не так понимаю?

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

>без регулярных выражений
Синтаксический анализ. Если не хочешь заморачиваться вручную, то найди описание синтаксиса сишки в формате БНФ, возьми оттуда правила, которые описывают объявление функций (со всеми зависимостями, разумеется) и задействуй ебическую силу flex+yacc.
Аноним 18/09/16 Вск 17:17:14 #108 №844014 
> можно ли эту всю задачу делать без регулярных выражений, но и не каким-то тупым посимвольным перебором?

Выделяешь формальные грамматику, атомарные и не очень структуры и описываешь все через ооп.
Аноним 18/09/16 Вск 18:08:37 #109 №844049 
>>844012
>ебёшься такой с генераторами парсеров и лексеров
>целуешь писос когда они генерируют этот самый посимвольный перебор с милиардами goto

А вообще, есть куча более современных и функциональных генераторов, чем это говно зверя с логотипа ГНУ.
Аноним 18/09/16 Вск 18:13:41 #110 №844050 
>>843959
http://ideone.com/HBZnhH
Удачи!
Аноним 18/09/16 Вск 18:34:03 #111 №844064 
>>844049
Ну какбе выхлоп генератора тебя волновать не должен, вне зависимости от его вида. В этом же весь его смысл. Другое дело, если имеется требование наговногодить парсер вручную. В таком случае надо получше смазать анус и попытаться сесть им на дерево грамматического разбора, попутно теребя лексемы и надрачивая на алгоритм сортировочной станции.
sageАноним 18/09/16 Вск 18:44:23 #112 №844070 
>>844064
> Другое дело, если имеется требование наговногодить парсер вручную.
Все парсеры сколько-нибудь не-хипсторских языков "наговнокожены" вручную.
Аноним 18/09/16 Вск 18:47:11 #113 №844073 
>>844070
Насколько я понял, у анона была задача написать детектор объявлений функций, а не полноценный язык. Поэтому я и говорю, что в данном случае проще воспользоваться генератором, если не стоит жесткого условия ручной реализации.
Аноним 18/09/16 Вск 20:42:44 #114 №844115 
>>844012
>>844014
>>844050
>>844073
Спасибо каждому анону за сочувствие , но я почти ничего не понял
Условия задачи: тестовая программа написана правильно, а сама задача - лаба (2 курс), стандартные библиотеку подключать можно
Аноним 18/09/16 Вск 20:48:40 #115 №844116 
>>844115
Для лабы сойдет, а в реальности ты обосрешься об макросы >>844050.
sageАноним 18/09/16 Вск 21:29:31 #116 №844123 
>>844116
Макросы — это не C.
Аноним 18/09/16 Вск 21:48:16 #117 №844128 
>>844123
Чет орнул.
Аноним 18/09/16 Вск 22:40:50 #118 №844171 
>>843959
Задача гораздо сложнее, чем ты думаешь. http://pastebin.com/Gf25Psct - абсолютно валидный синтаксис, хоть и бессмысленный. Для лабы норм и то, что у тебя.
Аноним 19/09/16 Пнд 20:15:41 #119 №844629 
Господа сишники, помогите найти легковесную реализацию md4 или md5.
sageАноним 19/09/16 Пнд 20:40:38 #120 №844646 
>>844629
Бывают не-легковесные?
какшечка 19/09/16 Пнд 23:05:51 #121 №844741 
Сисюны, абасыте меня, а то я ща йобнусь с гцц. Почему не изменяется значение по указателю в функции?

http://pastebin.com/wyYEPvQZ

вывод:
1->one
2->one

хочу:
1->one
2->two
sageАноним 19/09/16 Пнд 23:13:40 #122 №844745 
>>844741
>Сисюны, абасыте меня
Зделано.
Аноним 19/09/16 Пнд 23:13:57 #123 №844747 
>>844741
Ты не значение по указателю меняешь, а сам указатель
Аноним 19/09/16 Пнд 23:14:34 #124 №844748 
>>844741
Ты передаешь по значению указатель на массив символов. Внутри функции ты присваиваешь указателю адрес другого массива символов. После выхода из функции этот указатель перестает существовать. Чего же ты ожидал? Тебе нужно две звездочки, а не одна.
Аноним 19/09/16 Пнд 23:14:50 #125 №844749 
>>844741
уатаквот работает http://pastebin.com/4tC7vYEX

ебать... указатель на указатель? хм...
Аноним 19/09/16 Пнд 23:15:31 #126 №844750 
>>844748
>>844747
пасиб
Аноним 19/09/16 Пнд 23:18:34 #127 №844752 
>>844748
>Тебе нужно две звездочки, а не одна.
а вот нихуя, утаквот тоже работает http://pastebin.com/RaYwCp6v

Аноним 19/09/16 Пнд 23:20:21 #128 №844753 
>>844752
з.ы. тока конпилятор ругаецо сильно
Аноним 19/09/16 Пнд 23:29:00 #129 №844755 
>>844752
Работает лишь по недоразумению. По счастливому совпадению указатели на две строки отличаются только младшим байтом: 0xaaaaaa10 и 0xaaaaaa14, например. И внутри функции ты пишешь единственный char, и этим char ты правишь младший байт указателя с 0x10 на 0x14, например. Но если конфигурация (количество строк в программе, компилятор, опции компиляции) изменится, магия может не случиться, и на выходе будет мусор. Не делай так больше никогда.
Аноним 20/09/16 Втр 21:00:43 #130 №845125 
>>844749
>ебать... указатель на указатель? хм...
привыкай к такой разработке своего очка
Аноним 20/09/16 Втр 21:47:51 #131 №845142 
С какого стандарта начать? С первого или сразу читать C11?
Аноним 20/09/16 Втр 21:52:05 #132 №845145 
>>845142
Начинать изучать язык с чтения стандарта не стоит. Возьми Прату сначала хотя бы. Если язык знаешь, и хочешь почитать именно стандарт, читай C11.
Аноним 22/09/16 Чтв 00:42:56 #133 №845831 
Подскажите нюфагу.

char *str;
scanf("%s", str);
printf("%s placed on %p and contains %i\n",str, &str, sizeof(str));

Как бы я не пытался, sizeof выдает 4 (очевидно, размер указателя).
Как получить всё-таки размер строки?
Аноним 22/09/16 Чтв 00:55:33 #134 №845834 
>>845831
strlen
Аноним 22/09/16 Чтв 06:26:58 #135 №845907 
>>845831
Заодно подумай, а куда у тебя scanf строку-то пишет? Вот str - указатель, а НА ЧТО он указывает?
Аноним 22/09/16 Чтв 08:54:12 #136 №845947 
>>845907
Первый элемент массива, который заканчивается на '\0'?
Я же правильно понимаю, что ОС просто выделяет адрес памяти, начиная с которого я могу что угодно сохранить, но не задену ли я что-то другое в памяти, если введу слишком большую строку?
Аноним 22/09/16 Чтв 09:14:04 #137 №845951 
>>845947
> Первый элемент массива, который заканчивается на '\0'?
Ну да, только если ты этот массив в str присвоил. Ты присвоил?

> Я же правильно понимаю, что ОС просто выделяет адрес памяти, начиная с которого я могу что угодно сохранить
Неправильно. По счастливой случайности str указывает на какую-то область данных, в которую у scanf получается насрать без видимых последствий. В следующий раз может повезти меньше. Алсо, ОС тебе ничего не выделит, пока ты не попросишь. Тебе нужно char str[скольконадо] или str = malloc(скоканадо) или char buffer[скольконадо]; str = buffer.

> не задену ли я что-то другое в памяти, если введу слишком большую строку
Заденешь. Поэтому стоит указать максимальный размер строки, которую scanf скопирует по твоему указателю (%32s, например).
Аноним 22/09/16 Чтв 11:54:08 #138 №846005 
Анонче, скастуй указатель туда, где мне ошибку искать? Решил cs50 пройти 2016го года, решаю шифр вижненера. Очевидно, что с вычислениями где-то напортачил, двоешник
https://ideone.com/IlQ4GL
Аноним 22/09/16 Чтв 11:59:28 #139 №846006 
>>846005
Нашел, неверно вычисляю индекс для буквы из k
Аноним 22/09/16 Чтв 13:03:26 #140 №846033 
>>845951
Спасибо, даже не ожидал от двачей таких ответов, лол.
Аноним 22/09/16 Чтв 16:23:28 #141 №846111 
Вопрос, как в консоли выводить псевдо/графику/символы в режиме реального времени и строго в пределах одной границы. Например, что бы полоса бегала в пределах [ ] квадратных скобок. Или символ в скобке менялся в той же строке. В сторону какой библиотеки смотреть? Пробывал бесконечные циклы, так они мне засирали весь терминал
Аноним 22/09/16 Чтв 17:05:24 #142 №846148 
Хочу написать процедуру, где на вход подаются координаты точек (float x, float y). А в теле производится серия вычислений с заранее известными точками. Таких точек будет 475 (соотвественно у каждой будет 2 координаты). Каким образом мне в самом коде программы ввести это точки, чтобы было удобно и работать и вводить? Массив?
Аноним 22/09/16 Чтв 17:09:31 #143 №846152 
>>846148
Вот так?
float myArray[950] = { 0.1, 0.2, -0.56345, ...};
Все уже забыл нахуй.
sageАноним 22/09/16 Чтв 17:10:12 #144 №846153 
>>846111
curses
Аноним 22/09/16 Чтв 18:05:54 #145 №846170 
>>846148
typedef struct {float x; float y} Point;
Point yoba[] = {{0.0f, 0.0f}, {0.0f, 0.0f}...}
[ftwtryhard] Аноним 22/09/16 Чтв 21:22:02 #146 №846312 
14745685225890.png
По учебе пришлось установить visual studio
Установил, не могу найти Си, только шарп и плюсы
Что делать?
В гугле не могу найти
Аноним 22/09/16 Чтв 21:24:33 #147 №846317 
>>846312
Создавай пустой проект C++, создавай файл, сохраняй с расширением .c. Компилятор там один и тот же, язык определяет по расширению (ну или в свойствах можно насильно указать).
[ftwtryhard] Аноним 22/09/16 Чтв 21:26:17 #148 №846318 
>>846317
Я и так создал сначала С++, написал свою программку на Си и мне выдало тип
int не поддерживается
Думаешь, если сохранить и запустить, поможет?
Аноним 22/09/16 Чтв 21:27:20 #149 №846319 
>>846318
> тип int не поддерживается
Лолшто? Скриншот?
[ftwtryhard] Аноним 22/09/16 Чтв 21:38:30 #150 №846326 
14745695106410.png
>>846319
Да забей, я даун
Нажал консольное приложение С++, а не пустой проект
Вот пустой проект, сори за тупой вопрос, но куда тут писать? Ахахахаахах
Аноним 22/09/16 Чтв 21:39:26 #151 №846328 
Проект создал, теперь файл создавай. Ctrl+N.
Аноним 22/09/16 Чтв 21:41:27 #152 №846330 
PellesC ругается на Unresolved external symbol '_WinMain'. Создавал консольный проект, в исходнике определил функцию WinMain, после этого в настройках проекта включил расширения майкрософта и прописал точку входа WinMain. Не помогло. Изменил тип проекта на Windows - тоже не помогло. Как тут это настраивается?
[ftwtryhard] Аноним 22/09/16 Чтв 21:41:40 #153 №846331 
14745697008140.png
>>846328
Этот?
Аноним 22/09/16 Чтв 21:42:42 #154 №846333 
>>846331
Да, сохранишь потом как .c только, и всё.
[ftwtryhard] Аноним 22/09/16 Чтв 21:48:41 #155 №846341 
14745701211940.png
>>846333
Оййй
Бля, можешь помочь немного? Просто завтра надо сдать кое-что, а я вообще хз
Аноним 22/09/16 Чтв 21:49:49 #156 №846344 
>>846341
Не спрашивай. Код выкладывай.
[ftwtryhard] Аноним 22/09/16 Чтв 21:53:34 #157 №846347 
>>846344
да это вряд ли можно кодом назвать

int a, b, c;
a = 14; b = 15; c = 14;
if (a==b) printf(3); exit;
if (a==c) printf(2); exit;
printf(1); exit;

это просто вообще первое, что я написал, ахххахахх
а через 7 часов уже сдавать
Аноним 22/09/16 Чтв 21:55:17 #158 №846349 
>>846347
>exit;
А это чего?
[ftwtryhard] Аноним 22/09/16 Чтв 21:57:07 #159 №846352 
>>846349
Ну тип если первая строка не выполняется, то дальше
Убрать?
Аноним 22/09/16 Чтв 21:58:23 #160 №846354 
>>846352
>printf(1)
Вот это не будет работать. Откуда ты знаешь про эту функцию, ты видел как она используется?
Аноним 22/09/16 Чтв 21:59:10 #161 №846355 
>>846347
Ох, как все тяжко. Нагугли хелловорлд что ли, вставляй код в функцию main(), а не просто в файл.
> exit
Для вызова функций надо () обязательно указать. А у exit() еще и аргумент есть - код возврата. 0, например.
> if ... printf(3); exit;
if действует только на первое после скобочек выражение. Если хочешь условно выполнить несколько выражений, заключи их в {}: if (a==b) { printf(...); exit(...); }

> printf(3)
Принтф не печатает числа, он их форматирует, и ему нужно указать, как именно. Например, printf("%d\n", 3), чтобы отформатировать 3 как целое число (со знаком, если есть), а \n добавляет переход на новую строку.
Аноним 22/09/16 Чтв 21:59:39 #162 №846356 
>>846170
И написать простейший скрипт, который конвертит координаты из того формата, в котором они у тебя сейчас, в сишный код. А то заебешься вручную.
[ftwtryhard] Аноним 22/09/16 Чтв 22:01:59 #163 №846358 
>>846354
Нет, ну я типо знаю что в паскале вывод это println, тут printf
Поэтому и написал

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

Нам просто нихуя не показали в универе, даж за компы не пускали ещё, хахх

>>846355

Хелловоорлд запускал кстати, сразу как установил. Все работало в консоли.
Аноним 22/09/16 Чтв 22:06:20 #164 №846364 
>>846358
printf("%d\n, 1);
Нужно указывать шаблон строки для вывода
семен
Аноним 22/09/16 Чтв 22:07:10 #165 №846367 
>>846364
Обосрался с закрывающей кавычкой
Аноним 22/09/16 Чтв 22:09:26 #166 №846371 
>>846358
>>846358
Тебе надо пару глав Праты того же прочитать в темпе вальса, сразу все напишешь
[ftwtryhard] Аноним 22/09/16 Чтв 22:09:33 #167 №846373 
14745713732110.png
>>846364
Бляя, крч я рил хз, совсем не разбираюсь в этом
Так лучше? И сюда тоже надо "%d\n, ?
[ftwtryhard] Аноним 22/09/16 Чтв 22:10:00 #168 №846374 
Было 9 ошибок, стало 108, норм
Аноним 22/09/16 Чтв 22:11:35 #169 №846375 
>>846373
iostream - это кресты. Тебе нужно #include <stdio.h>. Алсо, одинарные кавычки - для символов. Для строк - двойные. А у тебя еще и открывается одинарной, а закрывается двойной. Так даже в этих ваших паскалях нельзя.
[ftwtryhard] Аноним 22/09/16 Чтв 22:11:45 #170 №846376 
>>846373
Это не я написал, просто единственное что я нагуглил по этой задачке на Си
Аноним 22/09/16 Чтв 22:13:21 #171 №846378 
>>846376
Не сегай тред великого языка современнсоти
[ftwtryhard] Аноним 22/09/16 Чтв 22:13:55 #172 №846380 
>>846378
Я и не сегал, лул
Аноним 22/09/16 Чтв 22:14:53 #173 №846382 
>>846380
А ну лан
[ftwtryhard] Аноним 22/09/16 Чтв 22:15:18 #174 №846383 
14745717182580.png
Ну рил, подскажите что тут не так
(Устранил все ошибки которые мог)
Аноним 22/09/16 Чтв 22:16:49 #175 №846384 
>>846383
Тебе майкрософт свою функцию с рюшечками впаривает. Тоже мне ошибка
Аноним 22/09/16 Чтв 22:18:02 #176 №846386 
>>846383
Напиши #define _CRT_SECURE_NO_WARNINGS в самой первой строке файла (перед #include). Алсо, оно обычно предупреждение, а не ошибка, как ты это сделал?
[ftwtryhard] Аноним 22/09/16 Чтв 22:18:14 #177 №846387 
>>846384
Ахахха, что?
Бл, ну дедлайн серьёзный, если не сделаю то заказчик завтра уволеееееет!!
Аноним 22/09/16 Чтв 22:20:09 #178 №846389 
>>846387
Да забей ты, сходи в армейку
[ftwtryhard] Аноним 22/09/16 Чтв 22:20:21 #179 №846390 
14745720210690.png
>>846386
>как ты это сделал?
Что именно?
>Алсо, оно обычно предупреждение, а не ошибка
Если ты про это, то я хз

Спасибо, помогло
Теперь 0 ошибок, вроде все должно работать
[ftwtryhard] Аноним 22/09/16 Чтв 22:22:52 #180 №846392 
14745721723740.png
Аххахха, так и должно быть?
[ftwtryhard] Аноним 22/09/16 Чтв 22:24:44 #181 №846393 
Странно, сначала поодумал, что тип введите нужно на транслите написать
Написал - не помогло
Аноним 22/09/16 Чтв 22:26:12 #182 №846395 
>>846392
#include <locale.h> в начало файла
setlocale(LC_CTYPE, "Russian"); в начало main(). Или латиницей пиши. И переконпелировать не забудь.
[ftwtryhard] Аноним 22/09/16 Чтв 22:30:54 #183 №846397 
14745726543480.png
>>846395
Так?
[ftwtryhard] Аноним 22/09/16 Чтв 22:33:05 #184 №846399 
>>846395
Накосячил немноого с setlocale
Пофиксил, русский язык работает, спасибо
[ftwtryhard] Аноним 22/09/16 Чтв 22:35:31 #185 №846403 
>>846395
А как сделать, что бы консоль не сразу закрывалась?
Она выдает ответ на секунду после ввода чисел и закрывается
Аноним 22/09/16 Чтв 22:38:58 #186 №846404 
Раз тут такая нюфаго-движуха началась.
Вот я, например, студентота, 2 курс.

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

И, собственно, вопрос: насколько чистый С востребован сейчас, и сложно ли потом перекатиться на плюсы(который сейчас, думаю, всяко популярней)?
Аноним 23/09/16 Птн 01:54:35 #187 №846494 
>>846404
>
>Узнал от старшекуров, что С на кафедре очень востребован, и есть смысл его учить к дополнению к преподающимся предметам, чтобы участвовать во всяких кафедральных движухах, преподских проектах и прочем ботанстве

Ты уверен что тебе по пути с этими чуханами?

>И, собственно, вопрос: насколько чистый С востребован сейчас,

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

> и сложно ли потом перекатиться на плюсы(который сейчас, думаю, всяко популярней)?

Легко перекатываться
Аноним 23/09/16 Птн 02:00:09 #188 №846495 
>>846404
>насколько чистый С востребован сейчас
Скорее всего будет востребован всегда, покуда архитектура кампуктеров не будет меняться. Язык простой. Можно за месяц выучить целиком и полностью. В отличии от крестов писать на нем приятно. Хоть и гемморно местами.
sageАноним 23/09/16 Птн 02:11:01 #189 №846496 
>>846397
Пишу на Си больше десяти лет, и до сих пор его не знаю. За короткий срок можно научиться только писать наполненный UB и зависимый от платформы код, который сломается в следующей версии компилятора. Ну и тривиальные хелловорлды, состоящие из библиотечных функций, в которых налажать просто негде.
Аноним 23/09/16 Птн 05:24:54 #190 №846515 
Сисюны, накидайте ссылы на скоростные библиотеки реализующие динамические массивы.
Аноним 23/09/16 Птн 09:55:25 #191 №846537 
>>846496
+1
same shit
от себя добавлю: положим, я вот в собственном кодинге не юзаю вещественные типы (не та прикладная облвсть в общем), дак вот скажу честно - что и не знаю всех подводных камней с плавающей точкой
или вот, в принципе, на нелокальных переходах можно сэмулировать исключения (в потрохах постри, например, так сделано), но я не делал так, так чтож не могу сказать что я знаю это
то есть сишка хоть и выглядить маленьким языком (строк нет, встроенных средств работы с массивами нет, управления динамической памяти нет и прочее и прочее), но в ней хватает тех областей, которые ты не будешь знать, тк это не будет покрывать круг твоих практических испльзований
Аноним 23/09/16 Птн 11:04:54 #192 №846566 
>>846403
system("pause");
В конце пропиши
Аноним 23/09/16 Птн 11:39:02 #193 №846572 
>>846403
Sleep(10000);
Аноним 23/09/16 Птн 11:45:46 #194 №846573 
>>846404
Работаю разрабом электронных девайсов, кодю на сях контроллеры и под венду в среде лабвиндовс, для моих потребностей хватает с лихвой. Мой коллега тоже сишник, недавно вкатился в плюсы без проблем.
Аноним 23/09/16 Птн 11:50:17 #195 №846576 
>>846573
>кодю на сях контроллеры
Аноны, посоветуйте книгу по архитектуре и программированию ARM с акцентом на практику.
Аноним 23/09/16 Птн 12:08:53 #196 №846584 
Когда используете винапи в программах на си, какой стиль именования переменных и функций используете? Такой же, как принято в winapi, или snake_case?
Аноним 23/09/16 Птн 12:12:37 #197 №846587 
Эта вкусовщина в именовании всякий раз доставляет мне баттхерт.
Аноним 23/09/16 Птн 12:17:10 #198 №846589 
>>846584
Динамически менять стиль в зависимости от либы? Да ты охуел. Будь последователен: или пиши всю программу, как майкрософт заповедал, или используй свой стиль везде. Я вот, например, camelсase предпочитаю даже в сишечке (fooBar для переменных и функций, FooBar для типов), брат жив, на хейтеров похуй.
Аноним 23/09/16 Птн 12:24:32 #199 №846595 
>>846589
>Будь последователен: или пиши всю программу, как майкрософт заповедал
Тогда не получится определять функции с именами типа ReadFile. Использование read_file стиля здесь бы выручило.
Аноним 23/09/16 Птн 12:30:33 #200 №846600 
>>846595
Иметь ReadFile и read_file в одной программе? Да ну его нахуй. Если это какой-то конкретный тип файлов, я бы отразил это в имени - ReadConfigurationFile, например, а если это просто обертка, то это тоже стоит как-то показать. Ты же почему-то ее пишешь вместо вызова ReadFile, вот и называй соответственно.
Аноним 23/09/16 Птн 12:52:41 #201 №846603 
>>846576
Вообще не читал книжек, всë по примерам и руководствам различным. На сайтах производителей контроллеров обычно тысячи примеров, как правило привязанных к периферии. Компилишь пример, проверяешь работоспособность на железе, а дальше уже смотришь что из него взять в свой проект, что доработать.
Аноним 23/09/16 Птн 14:13:38 #202 №846642 
14746292186940.jpg
Посоны, посоны, снова та студентота со всё той же подгорающей лабой и кое-чем ещё
Условие: в тексте правильно написанной программы на С выделить заголовки функций.
Пикрил - результат работы. Очевидно, что 4-ая непустая строка не обрабатывается (а очень бы хотелось)
Прога: http://pastebin.com/nEdEyQC7
Возможно, более важную роль должны играть круглые скобки, но я просто вот ни..чего не могу заделать :(

Мб кто поможет

Можно разбивать строку на части от ; до ; и проверять эти части.. Но так у меня получается правильно только для 4-й строки пикрила, а всё прочее через кое-что подгорающее
Аноним 23/09/16 Птн 14:29:23 #203 №846648 
>>846642
Какой курс-то? Препод тебя затроллил скорее всего. В таком виде это нереализуемо (алсо, >>844171). Да даже просто для такого вот:
int foo
= 1;
и
int foo
(void);
тебе придется заглядывать вперед, и ты никак подсветку на лету не сделаешь.
Аноним 23/09/16 Птн 14:31:27 #204 №846649 
>>846589
>Я вот, например, camelсase предпочитаю даже в сишечке (fooBar для переменных и функций, FooBar для типов), брат жив, на хейтеров похуй.
Бро, я ещё и отступы по Оллману делаю, все смеются и показывают пальцем.
Аноним 23/09/16 Птн 14:33:28 #205 №846651 
>>846648
Курс 2, Си 2-й семестр идёт.
Я был бы рад, будь это троллинг, но на то не похоже. Как мне кажется, ему надо, чтобы были рассмотрены случаи, что у меня на пике, но как бы не то чтобы у меня и они все получились
Аноним 23/09/16 Птн 15:05:54 #206 №846663 
>>846651
Ну попробуй немного другой алгоритм (он тоже кривой, но словит чуть больше функций). Тебе надо прочитать весь файл, удалить (или скипать по ходу дела, что сложнее) все комментарии и директивы препроцессора. Дальше идешь по тексту в поисках открывающих top-level { и ; top-level - значит, что ты увеличиваешь счетчик фигурных скобок всякий раз, когда найдешь открывающую, и уменьшаешь, когда найдешь закрывающую, и тебя интересуют { и ; только когда этот счетчик равен 0. Варианты развития событий:
1) Ты встретил по пути =, это инициализированная глобальная переменная, ищешь точку с запятой. Если этот вариант не проверять, сломаешься на int foo = (1); .
2) Ты встретил { - это либо struct/union/typedef/массив/итд, либо это начало функции, узнаешь это по наличию ) прямо перед {. Пробелы и переводы строк, разумеется, игнорируешь. Затем ищешь закрывающую } этой функции.
3) И, наконец, ты встретил ; - это какая-то декларация, проверяешь по наличию ) перед ; . Вот как-то так.

Как это сломать: атрибуты гцц, old-style (K&R) functions, static_assert, на программах с синтаксическими ошибками тоже сломается, но в целом, наверное, должно работать. Хотя хуй знает, я не пробовал.

Естественно, выводить очередной блок текста ты начинаешь, когда встретил ; у декларации (1, 3) или } у функции (2).
sageАноним 23/09/16 Птн 15:14:44 #207 №846665 
>>846663
Алсо, вариации вот такого void foo(char a[1+(sizeof((int){1})==2)]); сломают и условие про =, и условие про ){, а код, между тем, вполне валидный.
Аноним 24/09/16 Суб 10:59:08 #208 №847182 
>>846404
>И, собственно, вопрос: насколько чистый С востребован сейчас
Платиновый вопрос. Пока будут существовать UNIX-like системы, этот язык будет востребован. Но работу на нём (особенно в рашке) ты в лучшем случае найдёшь только для эмбедеда.
Аноним 24/09/16 Суб 11:03:10 #209 №847184 
>>846665
>(int){1}
Что означает эта конструкция? В первый раз вижу.
Аноним 24/09/16 Суб 11:13:58 #210 №847189 
Ну это бесполезно в приведенном примере, но вообще, это compound literal. Оно создает безымянный int равный 1. Слева тип, справа инициализаторы для него. Как если бы ты сделал:
int foo = {1};
но только без имени. Для int оно нахуй не нужно, но, например, у тебя есть функция, принимающая указатель на вектор, и ты можешь не создавать лишнюю переменую явно, а сделать:
result = some_function(&(Vector) { 1.0f, 0.0f, 0.0f });
Это C99, если что.
Аноним 24/09/16 Суб 11:47:48 #211 №847201 
>>847184
массив, который приводится к int, видимо
Аноним 24/09/16 Суб 11:49:39 #212 №847203 
Привет, программачик, я ньюфаг в C. Поясни, можно ли сделать в нём адекватный гуй? С чего начать? Я спермоблядь, на линукс нет места в данный момент. Сейчас я поставил Code::Blocks IDE и вроде как запустил свой первый хэлловорлд. Как мне высрать окошко, формочку, кнопочку? Какую библиотеку для этого посоветуешь использовать?
Аноним 24/09/16 Суб 11:53:45 #213 №847206 
>>847203
Из худо-бедно кроссплатформенных гуев есть только GTK. Но я бы порекомендовал сделать либу, а морду нарисовать на крестах с Qt.
sageАноним 24/09/16 Суб 11:56:29 #214 №847207 
>>847206
Ну в крайнем случае, ты можешь нарисовать интерфейс на Windows API, а чтобы не ебаться с созданием окошечек вручную и прочиими циклами обработки сообщений, используй dialog manager (загугли DialogBoxParam), тогда диалоги сможешь рисовать в любом редакторе ресурсов.
Аноним 24/09/16 Суб 11:58:19 #215 №847208 
>>847206
Я знаю, C++ для этого куда больше подходит, но я бы всё же хотел именно на сишечке.
Что такое GTK? Как его установить? Сам я пытался, но ничего не вышло.
Аноним 24/09/16 Суб 12:31:33 #216 №847223 
>>847203
Первый свой гуй под винду писал в среде лабвиндовс. Правда это весьма специфичная среда, для разработки виртуальных приборов.
Аноним 24/09/16 Суб 12:32:12 #217 №847224 
>>847208
>Сам я пытался, но ничего не вышло.
тебе здесь не место. пиздуй к плюсанам и юзай божественеый кьют для гуя
Аноним 24/09/16 Суб 12:33:19 #218 №847226 
>>847223
>лабвиндовс
это еще что за параша? винапи?
Аноним 24/09/16 Суб 14:51:57 #219 №847303 
>>847223
поясни за нее, подойдет ли она для прикладных задач?
sageАноним 24/09/16 Суб 16:26:50 #220 №847358 
>>847208
>Как его установить?
apt-get install libgtk-3-dev
Аноним 24/09/16 Суб 16:38:42 #221 №847367 
>>847226
>>847303
Визуальный конструктор со своей библиотекой контролов типа показометров, индикаторов, тумблеров, кнопок. Есть также текстовые элементы, таблицы, графики, обработка данных, сеть, многопоточность, еще куча всего. Можно и для прикладных задач использовать, почему бы и нет. Винапи поддерживается, но для своих задач я только Sleep использовал из винапи, больше не потребовалось. Куча примеров есть в дистре и на сайте.
Аноним 24/09/16 Суб 19:09:03 #222 №847441 
>>847367
Есть бесплатная версия? Или только пиратить?
Аноним 24/09/16 Суб 22:30:07 #223 №847527 
>>847358
Сказано ведь, я спермоблядь. Зачем мне твои прыщи?
Аноним 24/09/16 Суб 22:32:42 #224 №847529 
>>847527
В Windows 10 теперь есть apt-get. В младших версиях Windows есть MSYS2 и pacman.
Аноним 24/09/16 Суб 22:35:28 #225 №847531 
>xor ebx, ebx // clear ebx
>mov ebx, fs:[ 0x30 ]

Для чего здесь сначала обнулили регистр, а потом записали в него адрес PEB? Зачем тратить байты на обнуление, когда и так адрес займет весь регистр?
Аноним 24/09/16 Суб 22:43:38 #226 №847537 
>>847531
> Для чего здесь сначала обнулили регистр
Ни для чего. Скорее всего, код написан вручную, и человек НИРАЗБИРАЕТСЯ.
Аноним 24/09/16 Суб 23:27:38 #227 №847556 
>>847203
mfc (в vs 2015 community бесплатен)
связка alt + wtl
builder c++
Аноним 24/09/16 Суб 23:38:48 #228 №847562 
>>847556
также на крестах можно писать winrt приложения, gui включительно, доступные с windows 8
также на крестах можно писать UWP приложения, доступные с windows 10
Аноним 24/09/16 Суб 23:48:31 #229 №847565 
>>847556
>>847562
> также на крестах
Ты тредом ошибся. Алсо, если уж выбирать кресты, то сразу кутэ.
> WinRT, UWP
Нинужно. Это такой сервелат, который в отличие от сервелата еще не стух.
Аноним 25/09/16 Вск 15:02:06 #230 №847639 
Пишу такой кодес, гайз: https://ideone.com/HqB6WC

Что почитать о деклараторе __declspec(naked) и для чего он используется? Я его заюзал просто потому, что нужна была функциональная обертка для моего ассемблера. Но возникла проблема при компиляции FindGetProcAddr: error #2202: 'auto' not allowed in function with __declspec(naked)

Почему так? Как использовать результат вызова GetKernel32 внутри другой naked-функции?
Аноним 25/09/16 Вск 16:08:08 #231 №847662 
>>847639
Ты сказал, что тебе не нужно создавать стековый фрейм. Естественно, что теперь компилятор не может выделить KERNELBASE на стеке. Можешь сам выделить, можешь KERNELBASE в регистре хранить. Можешь выкинуть нахуй naked.
Аноним 25/09/16 Вск 17:59:53 #232 №847744 
Что за залупа здесь происходит? Как прочитать выражение в левой части присваивания? Зачем там &?

https://ideone.com/IFtNF8
Аноним 25/09/16 Вск 18:12:16 #233 №847748 
>>847744
> Что за залупа здесь происходит?
Нет такого синтаксиса в си. Видимо, кто-то попытался объявить указатель на функцию, но не смог.
Аноним 25/09/16 Вск 18:42:47 #234 №847767 
>>847441
Пиратка онли, на руборде есть активатор.
Аноним 28/09/16 Срд 05:31:35 #235 №847940 
14750298958380.jpg
Сап, первый курс не знающий нихуя язык и его возможности, а лабы делать уже надо, много. С целью экономии времени и более легкого вкатывания в язык, нужен анон, который сможет дописать бегинер уровня лабу в 80 строк и объяснить мне ее в скупе за денежное вознаграждение , либо прямо со мной вместе ее в скупе сделать
http://ipm.ifmo.ru/wp-content/uploads/2016/09/pb-s1-lab2.pdf - лаба, вариант 12
Вот то что успел накатать сам
http://pastebin.com/K3dQy9QM
Skype: atomraspad
Аноним 29/09/16 Чтв 16:57:00 #236 №848377 
14751574211370.jpg
>>848203
Не совсем (совсем не) по си, но все равно репостну сюда.
Может кто захочет пояснить.
Аноним 29/09/16 Чтв 17:01:09 #237 №848378 
Как можно получить счет как в виндовом калькуляторе?
Т.е когда я ввожу 480 / 1024 я получаю ноль int foo, bar foo = bar/baz
А в калькуляторе я получаю 0.46875, можно ли получить такой ответ если не делать

foo = bar/baz
foo2 = bar%baz
printf("%d%d",foo,foo2)
?
Аноним 29/09/16 Чтв 17:06:58 #238 №848381 
>>848378
Ему дали FPU, но нет, он хочет ебаться с интами.
Аноним 29/09/16 Чтв 17:11:47 #239 №848382 
>>848381
И ведь блять логично.
Аноним 29/09/16 Чтв 18:04:05 #240 №848402 
>>848378
Тыкаешь последовательно: 4 8 0 / 1 0 2 4 | 0
Аноним 01/10/16 Суб 07:47:44 #241 №848823 
Поцчему все туториалы для SDL писаны для плюсов, что за несправидлёж
Аноним 01/10/16 Суб 12:08:08 #242 №848871 
>>848823
Разница минимальна. Читай плюсовые, а если что-то не сможешь переделать на Си - показывай, мы поможем.
Аноним 01/10/16 Суб 13:18:14 #243 №848905 
У меня есть такой код, который я скопипастил из своего проекта на C++ и переписываю на си: http://pastebin.com/BZ9yE3mm

Почему-то ничего не компилируется. Выдаются ебанутые ошибки:

error #2001: Syntax error: expected ')' but found 'msg'.
Extraneous old-style parameter list.
Syntax error: expected ';' but found ')'.
Syntax error: expected ')' but found 'msg'
Extraneous old-style parameter list

Что я делаю не так?
Аноним 01/10/16 Суб 13:36:56 #244 №848911 
>>848905
> LPTSTR
Не вижу, чтобы ты тип определял. Ты забыл #include <windows.h>?
Аноним 01/10/16 Суб 13:50:45 #245 №848917 
>>848911
>Ты забыл #include <windows.h>
Блять, меня переклинило.
Аноним 01/10/16 Суб 17:50:48 #246 №848979 
Почему Крис Касперски хуесосил линуксы и двачевал фри бздю? Это правда, что бздя более стабильна, чем линукс? Как сейчас дела обстоят?
Аноним 01/10/16 Суб 17:56:39 #247 №848981 
>>848979
Может быть, ты лучше у него спросишь? Или он уже и на кывте не появляется?
Аноним 01/10/16 Суб 18:33:41 #248 №848989 
>>848979
У него и спроси, если он там еще в лепешку не разбился со своими парашютными делами
Аноним 02/10/16 Вск 08:44:29 #249 №849187 
сисюны, решительно пояснили за архитектуру. как трушней, чтобы функция возвращала значения установив код ошибки в ссылочном параметре или наоборот, возвращать код ошибки инициализировав значение в ссылочном параметре?
Аноним 02/10/16 Вск 09:48:25 #250 №849195 
>>849187
Честно говоря, мне представляется только одна ситуация, когда использование первого варианта обосновано. Это когда любое возвращаемое функцией значение может быть интерпретировано как корректное. Но даже в этом случае я не стал бы для кода ошибки заводить отдельный ссылочный параметр, т.к. если функций, потенциально завершающихся с ошибкой, будет много, то это что, каждой такой параметр заводить? И тогда в каждой обособленной части программы должна быть своя переменная для хранения кода ошибки? Или что, делать несколько способов обработки ошибок в одной програме? Ну это 100% отсос и лишняя путаница.
Так что советую второй вариант.
Либо же возвращать значние, а в случае ошибки возвращать некорректное значение.
Например, если программа возвращает указатель, то в случае ошибки возвращай NULL.
Если функция при нормальном завершении возвращает положительные числа, то в случае ошибки пускай возвращает отрицательные.
Если по возвращаемому значению нельзя сказать, произошла ошибка или нет, то код/флаг ошибки можно устанавливать в глобальной переменной или определеить целую глобальную структуру, хранящую состояние программы/модуля и несколько полей внутри нее для хранения кодов ошибок от разных источников. Доступ к полям такой структуры, разумеется, лучше обеспечить через процедуры.
Аноним 02/10/16 Вск 10:13:29 #251 №849206 
>>849195
>каждой такой параметр заводить?
да. но не каждая функция будет его использовать. зато все API будет выглядеть охуено.

void fun1(int ★param, int ★err);
void fun2(int ★param1, int ★param2, int ★err);
void fun3(int ★param1, int ★param2, int ★rval, int ★err);
void fun3(int ★param1, int ★param2, int ★rval1, int ★rval2, int ★err);
Аноним 02/10/16 Вск 11:44:18 #252 №849272 
>>849206
Говно.

int func(int bar, int •rval);

if (!func(1488, &result)) {
pizdec();
exit(1);
}
Аноним 02/10/16 Вск 14:47:30 #253 №849328 
>>849206
> зато все API будет выглядеть охуено
Это охуенное API? Я должен в каждую функцию передавать указатель под код ошибки, даже когда мне на него насрать? Притом, мне вообще в большинстве случаев нужно знать, произошла ли ошибка, а какая конкретно - интересно только при взаимодействии с ОС. Если тебе так хочется выдавать вменяемую информацию об ошибках - сделай явный или неявный (per-thread) контекст. В остальных случаях return false/return NULL/return -error/return SIZE_MAX будет вполне достаточно.
Аноним 02/10/16 Вск 16:30:56 #254 №849401 
Суп, хеккеры. Где можно почитать о том, что такое extern "C" и для чего это нужно? Как я понимаю, эта штука позволяет объявлять функции так, чтобы их имена были без декораторов.
Аноним 02/10/16 Вск 16:40:35 #255 №849406 
>>849401
Именно extern "C" в си нету, это плюсовая хуитка, для обратной совместимости. Просто extern – это о линковке и у него дохуя предназначений, открой гугл.
Аноним 02/10/16 Вск 16:43:06 #256 №849410 
>>849406
> у него дохуя предназначений
У extern в Си одно предназначение - явно указать, что декларация относится к публичному (внешнему) символу.
Аноним 02/10/16 Вск 16:50:28 #257 №849413 
>>849410
Одно предназначение не всегда означает применения для одной цели.
Аноним 02/10/16 Вск 17:12:36 #258 №849424 
>>849328
> передавать указатель под код ошибки, даже когда мне на него насрать
можешь пихать 0, если он не используется. хотя мне такой подход тоже уже разанравился. ща еще пару десятков функций накидаю и буду посмотреть, может действитьльно хуйня выйдет.
Аноним 02/10/16 Вск 17:17:13 #259 №849428 
>>849328
и да контекст есть, но он не везде используется, такая же хуйня как с еррорами, только в профиль.
а вот если везде пихать контекст, в нем ставить ошибку и все функции возвращают как бул? хм...
Аноним 02/10/16 Вск 17:59:08 #260 №849458 
14754203486010.png
>>849428
> контекст есть, но он не везде используется
> если везде пихать контекст
Зачем везде что-то пихать. Я ведь писал уже: сделай его глобально доступным через процедуры (см. пикрел, например).
Аноним 02/10/16 Вск 18:08:33 #261 №849468 
>>849458
У такого подхода есть недостаток - у тебя может быть только один инстанс (или, если контекст thread_local - один инстанс на поток). Для твоего примера это вполне нормально, но представь, что у тебя не приложение, а либа, которая как-то обрабатывает данные и выделяет память по необходимости. Чаще всего, у тебя будет какой-то стейт, и вот тут-то логично хранить в нем и код ошибки тоже. Стейт придется пихать в каждую функцию или делать его текущим, как контексты в OpenGL/OpenAL.
Алсо, никогда не начинай идентификаторы с подчеркиваний. И других не приучай к плохому.
Аноним 02/10/16 Вск 18:17:21 #262 №849477 
>>849468
Ну ясное дело, что тут универсального решения нет. Надо учитывать многие вещи. Для этого и нужна стадия проектирования.

>никогда не начинай идентификаторы с подчеркиваний
А где у меня там такое?
Аноним 02/10/16 Вск 18:21:31 #263 №849483 
>>849477
> А где у меня там такое?
__APPCONTEXT_H__ же. Да, вероятность проблем в данном случае околонулевая, но лучше раз и навсегда отучиться. И с одного подчеркивания тоже нельзя, если, конечно, ты не пилишь свой компилятор.
Аноним 02/10/16 Вск 18:29:31 #264 №849491 
14754221714030.png
>>849483
Общепринятая практика же при объявлении хедеров.
Аноним 02/10/16 Вск 20:43:46 #265 №849597 
>>847940
Нахуй ты в итмо пошёл, если сам кодить не можешь?
Аноним 02/10/16 Вск 20:54:30 #266 №849609 
>>849491
двачую, хедеры только так и объявляют
Аноним 02/10/16 Вск 20:56:22 #267 №849612 
>>849609
Объявляют. И это еще раз иллюстрирует, как в мире линуксов все срать хотели на стандарты.

Аноним 02/10/16 Вск 20:56:36 #268 №849613 
>>849468
>как контексты в OpenGL/OpenAL.
поясни по быстрому, чем их подход отличается от других подходов?
Аноним 02/10/16 Вск 20:59:19 #269 №849618 
>>849612
? с подчеркиваний начинаются еще приватные функции, ничего в этом нет плохого.
Аноним 02/10/16 Вск 21:08:00 #270 №849629 
>>849613
Там есть глобальный скрытый активный контекст, ты можешь в него писать и читать соответствующими функциями (glClearColor, например), только в него, и только через API, но не напрямую. Ты можешь создать сколько угодно других контектстов и делать их активными по необходимости. Так как основной юзкейс таких библиотек - один контекст, это позволяет упростить код, избавившись от передачи контекста в каждую функцию, но и не проебать возможность иметь несколько контекстов (неосновной юзкейс), пусть и ценой некоторого неудобства.

>>849618
А вот стандарт сишечки говорит, что с __имена и _Имена зарезервированы языком. Приватные переменные и функции с одного подчеркивания начинать можно, если они static (не торчат наружу).
Аноним 02/10/16 Вск 21:18:57 #271 №849638 
>>849629
>А вот стандарт сишечки говорит, что с __имена и _Имена зарезервированы языком. Приватные переменные и функции с одного подчеркивания начинать можно, если они static (не торчат наружу).
вся это хуйня от приплюснутых блядей, всервано их конпилятор символ '_' приставляет.
Аноним 02/10/16 Вск 21:22:56 #272 №849642 
>>849638
Нет, эта хуйня, чтобы в новом стандарте могли беспрепятственно запилить _Static_assert, а твой код из-за этого не сломался. И, что важнее, чтобы не сломался код тысяч пользователей твоей либы. И чтобы разработчики компилятора могли без помех для тебя объявлять в хедерах стандартной библиотеки всякие _printf_locked и прочие детали реализации.
Аноним 02/10/16 Вск 21:27:18 #273 №849644 
>>849642
>_Static_assert, _printf_locked
я вод даже не знаю что это такое, а тем более подстраиваться под эту хуету нет никакого желания.
Аноним 02/10/16 Вск 21:54:04 #274 №849662 
14754344444290.png
>>849612
> в мире линуксов все срать хотели на стандарты
Боюсь, что в данном случае на стандарт насрать абсолютно всем.
На пике хедеры из состава MS Developer Studio, Solaris, OpenBSD и IRIX. Таким образом объявлять хедеры учит даже Таненбаум в своей книжке по разработке ОС.
Аноним 02/10/16 Вск 22:06:08 #275 №849672 
>>849662
Окей, убедил.
Аноним 02/10/16 Вск 22:10:30 #276 №849676 
>>849672
Хотя с другой стороны, я тоже не понимаю, почему бы не объявлять хедеры просто заглавными буквами.
Аноним 02/10/16 Вск 22:24:41 #277 №849685 
>>849676
>почему бы не объявлять хедеры просто заглавными буквами
кто тебе мешает?
sageАноним 02/10/16 Вск 22:27:18 #278 №849688 
>>849685
У нас тут был околофилософский срач о том, как правильно, а не кто мешает.
Аноним 02/10/16 Вск 22:27:18 #279 №849689 
>>849685
Никто, разумеется. Просто как-то неуютно становится, когда отходишь от общепринятой практики. Все таки, не язык для стандарта, а стандарт для языка.
Аноним 02/10/16 Вск 22:50:47 #280 №849701 
>>849689
> Все таки, не язык для стандарта, а стандарт для языка.
твоему стандарту пять лет в обед и его еще будут переписывать и переписывать если не забьют, а соглашения пошли когда и с99 небыло.
Аноним 03/10/16 Пнд 17:55:14 #281 №850092 
Зачем меня студентоту учат хардкорному байтоебству? У вас было такое? Я понимаю реальные задачки - маски, сдвиги и проч, реально нужно для ембедщиков. Но есть абстрактное говно чтобы заебаться. Например проверить можно ли сложить два целых числа без переполнения. Нельзя никаких циклов и операторов вообще (if && || < > и тд) только битовые | & ^ и тп. Это на интервью что ли такие вопросы задают? Ответы легко гуглятся но там какая то тарабарщина из ^ ~() & () , просто пиздец.
Аноним 03/10/16 Пнд 18:23:50 #282 №850122 
>>850092
> там какая то тарабарщина
Вот чтобы это не было для тебя тарабарщиной, чтобы ты понимал, а не выучивал шаблонные действия, тебе и дают странные задачки. Хотя стоило бы потратить время на подбор реальной задачи, но нашим преподам обычно лень.
Аноним 03/10/16 Пнд 19:24:01 #283 №850159 
>>850092
а ты думал погромисты с чем ебутся, с пездами чтоли?
Аноним 03/10/16 Пнд 22:12:21 #284 №850206 
>>850159
Программисты ебуться с реальными задачами, а с не битоебством без задач.
Аноним 03/10/16 Пнд 22:15:29 #285 №850210 
>>850092

Учи все до чего дотянешься не ной, во-первых мозги развивает, во-вторых однажды таки понадобится и будешь хоть иметь предствавление что есть такая штука.
Аноним 03/10/16 Пнд 22:26:40 #286 №850217 
>>850210
Вот смотрите, нужно написать функцию которая сравнивает два числа и возвращает 0 или 1.

То есть вместо простого if (a > b)

нужно как-то так:

return !!(((( ~(x ^ y) ) & (y + ~x + 1) ) | ( y & ( x ^ y ) ) ) >> 31 );


Сириусли? Реальный синьор программер сможет такое написать? Оно нужно ему? Как это развивает? Не ною просто спрашиваю. Анон ты бы устроился на работу, где бы тебя заставили искать баг в таком коде?
Аноним 04/10/16 Втр 00:08:19 #287 №850250 
>>850217
нытик ебаный, на тебе риал пример, есть сорта вафель 1-325, и есть группы к которым эти вафли относятся, например малиновые: 1, 7, 9, 20, 55, 85, 90, 253...321. на вход поступает вафля и нужно в риалтайме определить входит ли она в группу. вот здесь и начинается битоебство с масками и сдвигом, чтобы было быстро и понятно, а ифы и свитчи в этом случае для таких вот плачущих пидоров как ты.
Аноним 04/10/16 Втр 00:12:12 #288 №850253 
>>850250
Надуманный пример. Как думаешь, во сколько инструкций развернется битоебля и что будет быстрее - битоебля или один лукап в таблице?
В общем-то, большинство обоснованных случаев битоебли перечислено здесь: https://graphics.stanford.edu/~seander/bithacks.html А задачки, как раз, чтобы понимать, а не гуглить и копировать.
Аноним 04/10/16 Втр 00:19:35 #289 №850258 

>>850253
>битоебля или один лукап в таблице?
а вот здесь ты ошибаешься, битоебство дает пасасать свитчу, я тут даже примеры выкладывал, но всем как всегда.
sageАноним 04/10/16 Втр 00:21:47 #290 №850259 
>>850258
Помню. Так и знал, что это ты.
Аноним 04/10/16 Втр 00:25:50 #291 №850260 
>>850259
и к свичу у меня какоето оивращение, наверное перл сказывается.
Аноним 04/10/16 Втр 00:40:03 #292 №850265 
>>850250
Покаже пример такого ирл кода. Ты просто пиздишь мне. Зачем? Даже в ассемблере есть условные операторы.
Аноним 04/10/16 Втр 00:44:03 #293 №850267 
>>850265
ищи в архиваче
Аноним 04/10/16 Втр 00:49:28 #294 №850270 
>>850250
Что такое "малиновые" - это сорт или группа? Ничего не понятно из условия, что это за цифры.
Аноним 04/10/16 Втр 14:28:36 #295 №850421 
>>837592 (OP)
Ананасы, посоветуйте какие-нибудь анализаторы использования динамической памяти, чтобы получить более-менее интуитивно понятные результаты в виде текста и, может быть, графики.таблицы. Я, конечно, могу LD_PRELOADнуть какой-то свой хук для malloc и сыпать дебажной инфой, но может быть есть какие-то элегантные решения?
Аноним 04/10/16 Втр 15:10:55 #296 №850454 
Привет, антошки. Допустим есть на локальном компе прога которая обменивается пакетами с сервером. Каким образом можно отловить их и посмотреть содержимое?
Аноним 04/10/16 Втр 15:13:18 #297 №850458 
14755831990330.png
>>850421
valgrind? http://valgrind.org/docs/manual/ms-manual.html

>>850454
Если тебе нужен софт Wireshark, то тебе в /s/. Если ты сам написать хочешь - гугли pcap для начала.
Аноним 04/10/16 Втр 15:21:58 #298 №850464 
>>850458
А если зашифрована информация, как с не работать?
Аноним 04/10/16 Втр 15:31:23 #299 №850473 
>>850464
Ты, сука, пентагон собрался ломать?

>>850458
>http://valgrind.org/docs/manual/ms-manual.html
Отлично, спасибо
Аноним 04/10/16 Втр 15:32:19 #300 №850476 
>>850473
Ах да,
>А если зашифрована информация, как с не работать?
Если что-нибудь вроде AES-128 и выше - никак не работать, только соснуть хуйца.
Аноним 04/10/16 Втр 15:45:00 #301 №850488 
>>850464
Если у тебя ключ есть, можешь плагин написать, чтобы парсило. Если нет - отлаживай софт и вытаскивай из него ключ, но если у софта ассиметричное шифрование, и его писали не дебилы, то это тебе ничего не даст.
Аноним 05/10/16 Срд 22:42:52 #302 №851329 
>>850464
Реверси прогу, извлекай пакеты из памяти до их шифрования
Аноним 06/10/16 Чтв 19:56:47 #303 №851719 
Котаны, можно ли в макросах работать с подстановкой?
Например, если второй аргумент макроса не ноль, вызвать выполнить подстановку одной функции, иначе другой:

#define fun1(a, b)
b > 1 ? calla(a) : callb(a)

Аноним 06/10/16 Чтв 20:02:42 #304 №851726 
>>851719
Почему бы и нет? Или выражение можно посчитать на этапе компиляции, то компилятор с любой минимальной оптимизацией ненужную ветку выкинет. Только не забывай скобочки расставлять, а то 2 * func(1, 2) может посчитаться не так, как ты предполагаешь.
sageАноним 06/10/16 Чтв 20:03:26 #305 №851727 
>>851726
если выражение можно посчитать
Аноним 06/10/16 Чтв 20:07:34 #306 №851732 
>>851726
не, мне нужно чтобы макрос разворачивался на этапе препроцессинга в зависимости от условия
Аноним 06/10/16 Чтв 20:08:45 #307 №851734 
>>851732
типа условный макрос
Аноним 06/10/16 Чтв 20:12:19 #308 №851738 
>>851732
Опиши, как ты это использовать собрался. Если у тебя константное выражение, то #if expr никто не отменял.
Аноним 06/10/16 Чтв 20:56:57 #309 №851769 
>>851738
смотри, есть функция для получения значения из хеша:
hash_get(hash, key, len)
третий параметр длина строки. в коде, мне нужно иметь доступ как по литеральным строкам, так и по динамическим:
hash_get(hash, "name", sizeof("name"))
hash_get(hash, str, l)

так вот, хочу макрос где если третий параметр равен нулю, то длина будет вычисляться как sizeof(key) иначе использовать переданное значение.
Аноним 06/10/16 Чтв 21:01:18 #310 №851772 
>>851769
з.ы. или макрос с переменными количествами аргументов, типа перегруженный
Аноним 06/10/16 Чтв 21:36:09 #311 №851785 
>>851772
На _Generic из C11 посмотри. Или сделай:
#define myhash_(a, b, c, ...) myhash(a, b, c)
#define myhash(a, ...) hash_(a, __VA_ARGS__, sizeof(c)-1,)

myhash(hash, "name");
myhash(hash, ptr, strlen(ptr));

Но этот подход не детектит ошибки типа:
myhash(hash, ptr); // Развернется в myhash(hash, ptr, sizeof(ptr) - 1).
Аноним 06/10/16 Чтв 22:15:50 #312 №851812 
>>851785
хм.. variadic macros? как то через жопу.. пожалую сделаю два разных макроса.
Аноним 06/10/16 Чтв 22:35:43 #313 №851825 
>>851812
> как то через жопу
Лол, ты просто не видел, наверное, как препроцессор по-настоящему ебут. Я вот могу тебе сделать то, что ты просил (>>851769 с проверкой на литеральный 0), и вот уж это точно будет через жопу.
Аноним 06/10/16 Чтв 22:49:38 #314 №851838 
Анон, есть такой код:
http://pastebin.com/QR3Q7XXm
http://pastebin.com/qUwxGFmh

Из-за HHOOK h = 0; я получаю ошибки:

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2146: syntax error: missing ';' before identifier 'h'
warning C4081: expected 'newline'; found ';'

При этом еще и на выражение HHOOK hHook = NULL; компилятор ругается: не может найти определение NULL. В чем тут проблема?
Аноним 06/10/16 Чтв 22:57:08 #315 №851846 
>>851838
#include <windows.h>
Аноним 06/10/16 Чтв 23:08:00 #316 №851861 
Аноны, подскажите
есть
[code]
int revolution = 20;
float Tdr = 1.12345;
float tm = int * Tdr;
printf("T\t%f", tm);
[/code]
Получаю хуйню округленную до сотых! Какого хуя? Собственно вопросы
1. Если умножаю int на float, результать какого типа получаю в итоге?
2. Почему такое дикое округление?
3. Физический смысл, умножаю натуральное число на вещественное, хочу получить вещественное число, как это сделать на си?
4. Где эти моменты описаны в стандарте?
Аноним 06/10/16 Чтв 23:25:55 #317 №851880 
>>851861
> Получаю хуйню округленную до сотых!
Где? http://ideone.com/L2KZNL

1. Указывай нужную точность. Например, %.8f.
3. Просто умножить эти два числа, компилятор сам сконвертирует натуральное до вещественного.
4. С11 (в шапке), 6.3.1.8, Usual arithmetic conversions; 7.21.6.1, The fprintf function.
Аноним 07/10/16 Птн 00:14:19 #318 №851939 
>>851825
>как препроцессор по-настоящему ебут.
нет не видел, это наверное мамкины хипстеры, нормальные люди делают без выебонов
>Я вот могу тебе сделать то,
сделай
Аноним 07/10/16 Птн 00:20:14 #319 №851942 
>>851939
Открой исходники любого сишного проекта (например исходники питона, за них ручаюсь), папкин нехипстер. Будешь очень удивлён насколько они вымазаны макросами с ног до головы и как ими долбятся во все щели.
Аноним 07/10/16 Птн 00:54:28 #320 №851952 
>>851942
>питона
так это изначально пидерская параша, еще бы опенэсэсл посоветовал. открой исходники майскюэл и посмотри как нужно писать.
Аноним 07/10/16 Птн 01:22:28 #321 №851964 
>>851939
К сожалению, Си -это тебе не кресты.
Неймспейсов и енумов там нет. И дохуя чего нет, и шаблонов - не завезли.
Поэтому - макросы там рулят.

Ненавижу эту хуету.
Аноним 07/10/16 Птн 01:28:10 #322 №851967 
gcc main.c -lpthread -ldl -lstd -lpsockets -ldmd -ltpd -lfcgi_i -o str_cgi_server -Wall -Wl,rpath=/usr/lib

Как вы эту херню терпите только..
Аноним 07/10/16 Птн 01:28:20 #323 №851968 
>>851964
ну вот шаблонов тока нинадо это же пиздец в кубе.
Аноним 07/10/16 Птн 01:29:05 #324 №851969 
>>851967
через мэйкфайл
Аноним 07/10/16 Птн 01:30:27 #325 №851970 
>>851968
Хорошо все в меру.

Это хороший компромис между строгой статической типизацией и обобщенным программированием.

Не пистон, конечно, но в разы быстрее, зато.
И в грамотных руках не так уж и сильно увеличивает время компиляции...
Аноним 07/10/16 Птн 01:31:24 #326 №851971 
>>851969
Ты еще АВТОТУЛЗ предложи.

Как только можно разродить было это...
Посоны выбирают СиМейк.
Аноним 07/10/16 Птн 01:34:26 #327 №851973 
>>851970
>обобщенным программированием.
это практически шаг к ооп, нахуй, нахуй.
Аноним 07/10/16 Птн 01:35:20 #328 №851974 
>>851971
мне мэйка хватает и всякую отдельную поеботу ставить нинуно
Аноним 07/10/16 Птн 01:36:09 #329 №851975 
>>851973
Нет, это шаг к динамической типизации.
К ООП оно отношения не имеет.

Шаблоны функций были бы полезны и в чистых Си, тем более с ограничением на их перегрузку,которая однако - синтаксический сахар, опять таки.
Аноним 07/10/16 Птн 01:37:36 #330 №851976 
>>851974
Ты свыше тысячи строчек не писал, поди.

Хотя, да, можно всё делать на мейках, но проебать что-то гораздо проще.

СиМейк более нагладен.

Вот что действительно говно - это сконс всякий.
Аноним 07/10/16 Птн 01:40:01 #331 №851978 
>>851975
>К ООП оно отношения не имеет.
о до, вначале обобщишь до структур, потом подумаешь чому бы структуры сами себя не приводили к типам
Аноним 07/10/16 Птн 01:41:06 #332 №851979 
>>851976
тысячи строчек мэйкфайла? ты ебанутый?
Аноним 07/10/16 Птн 01:43:55 #333 №851980 
>>851979
Нет, когда у тебя проект из 10 подкпроектов с подпроектами состоит, и в каждом подпроекте таргет - shared object, то становится крайне геморрой мейк писать.Еще проблемы с переносимостью и зависимостями.
У тебя в мейке нет нормального способа определить целевую платформу или компилятор системы.
Аноним 07/10/16 Птн 03:54:31 #334 №852000 
>>851939
> сделай
Наслаждайся: http://ideone.com/4seDQT
У первого варианта есть очевидные проблемы - оно матчит именно литерал, т.е., если третьим аргументом 0+0 передать, то будет бида-бида. И, что гораздо хуевее, оно в целом не работает, если третий аргумент начинается не с идентификатора.

>>851971
> Симейк
Хуета с синтаксисом похуже сишного препроцессора, с прибитыми гвоздями путями и ключами компилятора, которую не понимают даже ее разработчики. Шаг вправо, шаг влево от того, что оно считает нормальным? Добро пожаловать в ад, снова. Нет макросов для твоего компилятора? У тебя персональный ад. Кросскомпиляция? Нутыпонел.
Аноним 07/10/16 Птн 08:11:59 #335 №852025 
Есть тут кто?
Аноним 07/10/16 Птн 08:13:21 #336 №852026 
>>852025
Да, чего тебе?
Аноним 07/10/16 Птн 08:21:55 #337 №852028 
>>852026
Можешь хелпануть кое с чем, тут вообще треш
Аноним 07/10/16 Птн 08:33:21 #338 №852033 
Можете попробовать объяснить далбаёбу? Не могу понять работу cin.clear(); хотя и прочитал уже много где чего. К примеру почему при неправильном вводе (вводе букв в int переменную) я попадаю в бесконечный цикл?

int main() {

int i = 0;
int j = 0;

while (1) {
i++;

cin >> j;

if (cin.fail())
{
cout << "Fail!" << endl;
cin.clear();
}

cout << "Integer " << i << ": " << j << endl;
}
}
Аноним 07/10/16 Птн 08:34:21 #339 №852034 
>>852033
тут ещё и табуляция прописывается, наверное я действительно далбаёб.
Аноним 07/10/16 Птн 08:36:33 #340 №852036 
>>851980
Специально для тебя придумали autotools.
sageАноним 07/10/16 Птн 08:45:51 #341 №852039 
>>852036
В глаза ебусь.
Аноним 07/10/16 Птн 09:19:11 #342 №852051 
>>852033 -> >>840964 (OP)
Аноним 07/10/16 Птн 12:01:17 #343 №852108 
>>852000
насладился. в первом случае variadic macros со всеми вытекающими, во втором не соответствует условию, т.е. нужно разворачивание на этапе препроцессинга. два однострочных макроса с различными именами - вин. хотя очень странно, почему препроцессор не имеет своего полноценного языка, хотябы типа мэйка, с циклами условиями и прочим.
Аноним 07/10/16 Птн 12:30:28 #344 №852121 
>>851838
Бамп.
Аноним 07/10/16 Птн 12:33:21 #345 №852122 
>>852108
Навесь любой внешний препроцессор.

Я вон на руби генерирую код (в руби удобная подстановка в строках)
Аноним 07/10/16 Птн 12:59:38 #346 №852140 
>>851952
Я специально для тебя прошёлся поиском по кучке ведущих сишных ПИДАРСКИХ проектов, итого вымазано в макросах с ног до головы:
- OpenSSL;
- Его БИЖАПАШНЫЙ форк из которого по заверениям авторов вырезано 2/3 всего - LibreSSL (макросов там реальзо заметно меньше, но всё равно дохуени);
- Cpython;
- Ruby;
- Erlang;
- Perl (лол);
- GCC (там от плюсов только перегрузка операторов и отсутствие большинства shadow cast-ов, лол, хз нахуя они вообще с си слезали официально);
- Linux (да, их там дохуя, хотя учитывая кол-во драйверов, хуиток вроде perf и пр. в одной репе нельзя сказать что всё ядро ими измазано, но всё на удивление легко читаемо - и ничего сложнее коротких побитовых смещений из 2-3 действий, вот как действительно надо писать);
- jemalloc;
- gdb;
- а дальше заебался, алсо, во многих кроме того ещё сторонние кодогенераторы/скрипты были.

После этого ты приводишь аргумент о непидорстве mysql - самой обоссаной бд особенно в 2к16 когда настолько уёбищно масшабируемая бд даже вебмартышкам не упала нахуй, которую любят и не поносят только пхпшники, лол. Про долбоебизм людей, которые полностью пишут бд на си, при том что 95% времени своей работы она записывает и считывает что-то с жд: это, конешно, кек.
Алсо, пхп кстати тоже так же писался чисто и без макросов, что как бы намекает.
Аноним 07/10/16 Птн 13:09:40 #347 №852149 
>>852140
ой бля, я обосрался, не майэскюэл, а эскюэлайт.
ну во первых, тут разговор не в количестве макросов, макросы это заебись, а в их сложности. второе, в таких проектах много опционального и платформозависимого кода разруливаемого препроцессором.
Аноним 07/10/16 Птн 13:14:18 #348 №852151 
>>852149
>эскюэлайт
Лол.
>второе, в таких проектах много опционального и платформозависимого кода разруливаемого препроцессором.
Всякую хуиту с условной компиляцией я и не учитывал если что.
Аноним 07/10/16 Птн 13:26:24 #349 №852164 
>>852151
>Лол
нет, погугли его часто ставят как пример хорошего кода, это можно сказать мем.
так вот, здесь вопрос в том как ебут макросы, ты там много встречал наподобии >>852000, или они все довольно просты? в нормальных проектах, они сходу читаемы и никакого мозгоебства с ними нет.
Аноним 07/10/16 Птн 13:37:52 #350 №852174 
>>852140
А о чём вообще спор? В любом сишном проекте макросов туева хуча. Сложно найти проект, где бы их не было

>хуиток вроде perf
Это ты хуитка. perf отличная тулза.
Аноним 07/10/16 Птн 13:38:43 #351 №852175 
Устрою кстати на секундочку хит парад трёхэтажных макросов филиал говнокодру, с примерами кода:

1 место - libjit. Присуждается премия "Самые вложенные макросы в макросах".:
#define x86_mov_memindex_imm(inst,basereg,disp,indexreg,shift,imm,size) \
do { \
if ((size) == 1) { \
(inst)++ = (unsigned char)0xc6; \
x86_memindex_emit ((inst), 0, (basereg), (disp), (indexreg), (shift)); \
x86_imm_emit8 ((inst), (imm)); \
} else if ((size) == 2) { \
(inst)++ = (unsigned char)0x66; \
(inst)++ = (unsigned char)0xc7; \
x86_memindex_emit ((inst), 0, (basereg), (disp), (indexreg), (shift)); \
x86_imm_emit16 ((inst), (imm)); \
} else { \
(inst)++ = (unsigned char)0xc7; \
x86_memindex_emit ((inst), 0, (basereg), (disp), (indexreg), (shift)); \
x86_imm_emit32 ((inst), (imm)); \
} \
} while (0)

2 место - Perl. Присуждаются премии "самое нечитабельное говнокодище" и "лучшее наименование полей":
# define GvNAME_HEK(gv) \
(({ GV const _gvname_hek = (GV *) (gv); \
assert(isGV_with_GP(_gvname_hek)); \
assert(SvTYPE(_gvname_hek) == SVt_PVGV || SvTYPE(_gvname_hek) >= SVt_PVLV); \
assert(!SvVALID(_gvname_hek)); \
&(GvXPVGV(_gvname_hek)->xiv_u.xivu_namehek); \
}))

3 место - GCC. Присуждаются премии "самые длинные макросы" и "самое большое число копипасты":
#define DEF_PRIMITIVE_TYPE(ENUM, VALUE) \
case ENUM: return make_primitive_type (ENUM);
#define DEF_FUNCTION_TYPE_0(ENUM, RETURN) \
case ENUM: return make_fn_type (ENUM, RETURN, 0, 0);
#define DEF_FUNCTION_TYPE_1(ENUM, RETURN, ARG1) \
case ENUM: return make_fn_type (ENUM, RETURN, 0, 1, ARG1);
#define DEF_FUNCTION_TYPE_2(ENUM, RETURN, ARG1, ARG2) \
case ENUM: return make_fn_type (ENUM, RETURN, 0, 2, ARG1, ARG2);
#define DEF_FUNCTION_TYPE_3(ENUM, RETURN, ARG1, ARG2, ARG3) \
case ENUM: return make_fn_type (ENUM, RETURN, 0, 3, ARG1, ARG2, ARG3);
#define DEF_FUNCTION_TYPE_4(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4) \
case ENUM: return make_fn_type (ENUM, RETURN, 0, 4, ARG1, ARG2, ARG3, \
ARG4);
#define DEF_FUNCTION_TYPE_5(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5) \
case ENUM: return make_fn_type (ENUM, RETURN, 0, 5, ARG1, ARG2, ARG3, \
ARG4, ARG5);
#define DEF_FUNCTION_TYPE_6(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \
ARG6) \
case ENUM: return make_fn_type (ENUM, RETURN, 0, 6, ARG1, ARG2, ARG3, \
ARG4, ARG5, ARG6);
#define DEF_FUNCTION_TYPE_7(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \
ARG6, ARG7) \
case ENUM: return make_fn_type (ENUM, RETURN, 0, 7, ARG1, ARG2, ARG3, \
ARG4, ARG5, ARG6, ARG7);
#define DEF_FUNCTION_TYPE_8(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \
ARG6, ARG7, ARG8) \
case ENUM: return make_fn_type (ENUM, RETURN, 0, 8, ARG1, ARG2, ARG3, \
ARG4, ARG5, ARG6, ARG7, ARG8);
#define DEF_FUNCTION_TYPE_9(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \
ARG6, ARG7, ARG8, ARG9) \
case ENUM: return make_fn_type (ENUM, RETURN, 0, 9, ARG1, ARG2, ARG3, \
ARG4, ARG5, ARG6, ARG7, ARG8, ARG9);
#define DEF_FUNCTION_TYPE_10(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \
ARG6, ARG7, ARG8, ARG9, ARG10) \
case ENUM: return make_fn_type (ENUM, RETURN, 0, 10, ARG1, ARG2, ARG3, \
ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, \
ARG10);
#define DEF_FUNCTION_TYPE_11(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \
ARG6, ARG7, ARG8, ARG9, ARG10, ARG11) \
case ENUM: return make_fn_type (ENUM, RETURN, 0, 11, ARG1, ARG2, ARG3, \
ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, \
ARG10, ARG11);
#define DEF_FUNCTION_TYPE_VAR_0(ENUM, RETURN) \
case ENUM: return make_fn_type (ENUM, RETURN, 1, 0);
#define DEF_FUNCTION_TYPE_VAR_1(ENUM, RETURN, ARG1) \
case ENUM: return make_fn_type (ENUM, RETURN, 1, 1, ARG1);
#define DEF_FUNCTION_TYPE_VAR_2(ENUM, RETURN, ARG1, ARG2) \
case ENUM: return make_fn_type (ENUM, RETURN, 1, 2, ARG1, ARG2);
#define DEF_FUNCTION_TYPE_VAR_3(ENUM, RETURN, ARG1, ARG2, ARG3) \
case ENUM: return make_fn_type (ENUM, RETURN, 1, 3, ARG1, ARG2, ARG3);
#define DEF_FUNCTION_TYPE_VAR_4(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4) \
case ENUM: return make_fn_type (ENUM, RETURN, 1, 4, ARG1, ARG2, ARG3, \
ARG4);
#define DEF_FUNCTION_TYPE_VAR_5(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5) \
case ENUM: return make_fn_type (ENUM, RETURN, 1, 5, ARG1, ARG2, ARG3, \
ARG4, ARG5);
#define DEF_FUNCTION_TYPE_VAR_6(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \
ARG6) \
case ENUM: return make_fn_type (ENUM, RETURN, 1, 6, ARG1, ARG2, ARG3, \
ARG4, ARG5, ARG6);
#define DEF_FUNCTION_TYPE_VAR_7(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, \
ARG6, ARG7) \
case ENUM: return make_fn_type (ENUM, RETURN, 1, 7, ARG1, ARG2, ARG3, \
ARG4, ARG5, ARG6, ARG7);
#define DEF_POINTER_TYPE(ENUM, TYPE) \
case ENUM: return make_ptr_type (ENUM, TYPE);
Аноним 07/10/16 Птн 13:40:05 #352 №852177 
>>852140
>mysql - самой обоссаной бд
>особенно в 2к16 когда настолько уёбищно масшабируемая бд даже вебмартышкам не упала нахуй
Такие категоричные заявления могут себе позволить только люди мало что понимающие в БД. Что собственно подтверждается
>Про долбоебизм людей, которые полностью пишут бд на си, при том что 95% времени своей работы она записывает и считывает что-то с жд: это, конешно, кек.
Видно студентика или человека который о БД знает понаслышке.
мимокрокодил

Аноним 07/10/16 Птн 13:43:31 #353 №852179 
>>852174
>А о чём вообще спор? В любом сишном проекте макросов туева хуча. Сложно найти проект, где бы их не было
Спор о том, что тот госопдин спизданул что-то в стиле "макросами всё вымазывают только пидары".
>Это ты хуитка. perf отличная тулза.
Хуитка по кол-ву кода относительно всего кода в репе.
>>852164
>так вот, здесь вопрос в том как ебут макросы
Мальчик, ты не видел что такое "ебут макросы".
>нет, погугли его часто ставят как пример хорошего кода, это можно сказать мем.
Исходники гита тоже часто так называют. Тольк вот суть их простоты как и у ядра линукса - они сами по себе максимально простые, и десятиэтажными макросами срать там негде.
>или они все довольно просты?
Это как шаблоны в плюсах. Пока их мало - всё хорошо читается, когда разрастаются в вложенные 10 раз хуитки - получается write-only говно с магией.
>>852177
>пук
Аноним 07/10/16 Птн 14:17:03 #354 №852202 
>>852179
> "макросами всё вымазывают только пидары".
ой не пизди, господин писал, что
>нормальные люди делают без выебонов
без хитровыебанныз макррсов, капиш
>>852175
>2 место - Perl. Присуждаются премии "самое нечитабельное говнокодище" и "лучшее наименование полей":
Здесь ты обосрался, Sv это скалярный вектор, ну и остальные буковки имеют смысл.
Аноним 07/10/16 Птн 14:19:46 #355 №852203 
>>852179
> ядра линукса
>гит
лол, этоже образец говнокодинга и непродуманной архитектуры в одном флаконе
Аноним 07/10/16 Птн 14:21:53 #356 №852204 
>>852202
Sv это как Gv, только Sv?
Наименование-то может и осознанное, но выглядит как конченное говно из-за экономии на буквально паре символов, как и весь перл.
>>852203
Ну лан.
Аноним 07/10/16 Птн 14:24:04 #357 №852206 
>>852202
>без хитровыебанныз макррсов, капиш
У господина "хитровыебанными" считаются генерик-макросы из си11, лол.
Аноним 07/10/16 Птн 14:29:20 #358 №852208 
>>852204
фигасе пару, я тоже такой подход с буквенным кодированием активно пользую, очень удобно.
>>852206
>из си11
да
Аноним 07/10/16 Птн 14:35:11 #359 №852215 
>>852204
з.ы. и да, вот смотри как в перл кодируют http://perldoc.perl.org/perlapi.html#svtype
я считаю это охуенчик, главное незабыть документашку.
Аноним 07/10/16 Птн 14:38:26 #360 №852218 
>>852208
>фигасе пару
Да, пару. Можно назвать хотя бы в стиле s_vec — на клавиатуру нужно нажать на 2 кнопки больше, зато читаемость несравнимо выше.
>да
Бля, а я-то забыл что сижу в си треде с ретроградо-неосиляторами.
>>852215
>главное незабыть документашк
Всегда помнить документацию чтобы знать что это за тип — это блять просто максимальное днище в мире стилей кодирование. Хорошо что перл умер.
Аноним 07/10/16 Птн 14:47:11 #361 №852224 
>>852218
ну давай, покажи не днище
sageАноним 07/10/16 Птн 14:56:13 #362 №852229 
>>852224
AbstractSingletonProxyFactoryBean.
Аноним 07/10/16 Птн 15:02:49 #363 №852233 
>>852229
Двачую, кончил.
>>852224
Что угодно из того >>852140 списка кроме перла. Настолько нечитаемого стиля кода нигде блять нету.
Аноним 07/10/16 Птн 16:05:53 #364 №852259 
>>852233
> AbstractSingletonProxyFactoryBean.
> Двачую, кончил.
скажи мне, что ты угараешь, пожалуйста
Аноним 07/10/16 Птн 16:09:00 #365 №852265 
>>852259
Скажи мне, что ты не долбоёб и пытаешься меня потралить, а не на полом серьёзе не видишь тут сарказма, пожалуйста.
Аноним 07/10/16 Птн 16:14:53 #366 №852268 
>>852108
> variadic macros со всеми вытекающими
Какой variadic macros? Там три фиксированных аргумента - hash(a, b, c). Ты __VA_ARGS__ увидел и испугался? Там нам нем if реализован. Но там есть другие проблемы, и я о них уже сказал

> нужно разворачивание на этапе препроцессинга
Впервые слышу. Оно на этапе компиляции разворачивается, зачем тебе именно препроцессором?

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

>>852175
1 место норм код, не вижу никакой проблемы вообще, это идиома. Если платформ полторы, то можно inline/forceinline, если нужно C89, то приходится так.

3 место должно быть на первом.

Аноним 07/10/16 Птн 16:46:09 #367 №852293 
>>852265
Если бы я это воспринял на полном серьёзе, я бы не уточнял. Но я рад, что всё не так с тобой плохо.
Аноним 08/10/16 Суб 03:15:13 #368 №852655 
14758857138590.png
ребзя, после того, как я отредактировал текст, в консоле в конце иногда печатается пикрелейтед ( a n d l e r f g ШcXH). причем по разному, иногда просто _ h a n d l e r ШсХН, всякие квадратики, которых там быть не должно например. что за хуета?
Аноним 08/10/16 Суб 03:22:31 #369 №852660 
>>852655
Чем редактировал? Это линукс? Делал ли clear/reset? Что на самом деле записано в файле?
Аноним 08/10/16 Суб 04:20:38 #370 №852666 
14758896388090.jpg
>>852660
Забудь, проблема решена.
Аноним 08/10/16 Суб 09:33:33 #371 №852687 
Котаны, как выбрать каждый второй элемент в массиве?
Например дан такой массив -
int arr[15] = {3,7,8,2,8,2,2,4,6,3,1,0,0,0,5};


нужно что бы вывело только = 7,2,2,4,3,0,0
Аноним 08/10/16 Суб 09:42:08 #372 №852689 
>>852687
for (int i = 0; i < 15; i++) printf("%d\n", arr[++i]);
Аноним 08/10/16 Суб 09:58:52 #373 №852692 
14759099329710.jpg
>>852689
Так просто, спасибо
Аноним 08/10/16 Суб 10:22:50 #374 №852701 
>>852689
Ловкач Джэк
Аноним 08/10/16 Суб 10:56:15 #375 №852712 
>>852689
i += 2 чем не устроило?
Аноним 08/10/16 Суб 11:52:08 #376 №852736 
>>852712
слишком очевидно
Аноним 08/10/16 Суб 15:15:03 #377 №852849 
В некоторых учебниках по си, пишут main() без int, а в других наоборот.
Мой компилятор ругается если пишу без int.
Как правильно?
Аноним 08/10/16 Суб 15:20:15 #378 №852852 
>>852849
clang ругается, а gcc нет.
Аноним 08/10/16 Суб 15:46:29 #379 №852860 
>>852849
>Как правильно?
с инт
Аноним 08/10/16 Суб 17:09:59 #380 №852918 
>>852849
В последних двух стандартах неявный int запрещен. Поэтому правильно: int main(void) или вариант с аргументами.

> clang ругается, а gcc нет.
gcc -std=c11 file.c
Аноним 08/10/16 Суб 17:52:01 #381 №852946 
>>852918
>int main(void)
вангую, что void конпилицо как main с нулевыми аргументами. иже есть сахарок
Аноним 08/10/16 Суб 17:58:27 #382 №852952 
>>852946
void в аргументах по историческим причинам. Раньше в декларациях функций не нужно было указывать типы аргументов. Чтобы отличить древние декларации с какими-то аргументами* от современных функций без аргументов, в сишечке в функциях без аргументов пишут void, а использующих пустые скобки всячески обоссывают за неспособность учиться.
Аноним 09/10/16 Вск 11:54:31 #383 №853248 
>>852952
вдруг поймал себя на мысли, что практически не встречал функций без аргументов в большинстве исходников
Аноним 09/10/16 Вск 12:27:35 #384 №853263 
>>853248
Нормальные программисты минимизируют число побочных эффектов, а функция без аргументов и есть один сплошной побочный эффект.
Аноним 09/10/16 Вск 14:01:26 #385 №853312 
>>853248
>не встречал
а они там есть
Аноним 10/10/16 Пнд 09:46:49 #386 №853793 
Аноны, решил написать JS обертку (node.js модуль) для C библиотеки http://wordnet.princeton.edu/wordnet/documentation/.
Проблема в том, что я незнаю с чего начать, составьте для меня небольшой todo-лист, кто понимает.
Вот даже уже готовый пример есть https://github.com/dariuszdziuk/wordnet, но мне нужно разобраться как это делается впринципе.
Аноним 10/10/16 Пнд 13:14:18 #387 №853891 
>>853793
Вопрос не правильно поставил.
Сейчас более менее вник. Суть API этого - обращение к дб. Т.е если я хочу использовать JavaScript, мне нужно просто переписать все функции на нем.

Другой вопрос, не лучше ли будет написать скрип в JS, который будет запускать С программу (child process) и output из этого С скрипа передавать обратно (через pipe)?
Т.е использовать С библиотеку все-таки.

Это будет экономнее по времени, чем переписывать функции в JavaScript?
По производительности?
Аноним 10/10/16 Пнд 14:15:30 #388 №853924 
ребят, есть способ посмотреть код стандартных функций? сейчас на обучение часто встречаю задачки из разряда "репродюс такуе то функцию", и иногда не понимаю до конца логику функции из мана (саму идею понял но потом встречаю пару исключений и появляются вопросы)
Аноним 10/10/16 Пнд 15:03:37 #389 №853934 
Ананасы я так понимаю на 32 битной системе указатель будет 32 бита, а на 64 битной 64 бита?
Аноним 10/10/16 Пнд 15:11:22 #390 №853942 
>>853934
Да.
Аноним 10/10/16 Пнд 19:05:54 #391 №854055 
когда создаю типа свою библиотеку функций как хедеры подтянуть чтоб потом при компиляции мейна с этой библиотекой функции работали без прототипизации?
Аноним 10/10/16 Пнд 20:11:16 #392 №854108 
>>853934
>>853924
Таки нет. Хотя я не программист.
Я не могу дать определение разрядности процессора, но могу привести примеры.

1) Древний 8-разрядный 6502. АЛУ работает с 8-разрядными числами, адресное пространство 64КБ. Соответственно указатели 16-битные.
2) x86. Адресное пространство ограничено системой команд до 64ГБ. Регистры общего назначения 32-разрядные. Указатели 32-битные. Но есть всякие SSE, в которых есть регистры с большей разрядностью.

То есть разрядностью процессора нельзя назвать ни разрядность АЛУ, ни разрядность шины адреса. Может быть разрядность процессора это разрядность регистров общего назначения, но что называть регистром общего назначения?
Так что по моему нельзя дать однозначное определение.
Аноним 10/10/16 Пнд 20:21:24 #393 №854120 
>>854108
> x86. Адресное пространство ограничено системой команд до 64ГБ
Один дурак сказал, все повторяют. 4 ГБ адресного пространства. Иди еще раз посмотри на картинку дескриптора сегмента из мануалов.

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

>>854055
Гитхаб, различные опенсорсные сишные рантаймы. Вижуал студия, исходники CRT в комплекте.
Аноним 10/10/16 Пнд 21:09:50 #394 №854142 
>>854120
>> x86. Адресное пространство ограничено системой команд до 64ГБ
>Один дурак сказал, все повторяют. 4 ГБ адресного пространства.
https://en.wikipedia.org/wiki/Physical_Address_Extension
Аноним 10/10/16 Пнд 21:14:59 #395 №854150 
>>854142
Ты еще про оверлеи расскажи. PAE - это те самые оверлеи, когда ты в разное время маппишь разные участки физической памяти в виртуальную. Адресное пространство остается 4 ГБ, такие дела.
Аноним 10/10/16 Пнд 21:15:23 #396 №854151 
>>854150
Ок.
Аноним 10/10/16 Пнд 21:22:30 #397 №854161 
Здарова всем.

Решил заняться настоящим программированием, но послее ООП головного мозга не очень понятно как в процедурщине реализовать тру шаблоны проектирования.
Существуют ли они вообще? Конкретно шаблоны проектирования под Си, не под си с объектами, а именно в том виде каким он должен быть?
Киньте ссылку на литературу годную. Поиск выдает какую-то поебень типа Objective-C и тому подобное.
Аноним 10/10/16 Пнд 22:23:50 #398 №854203 
>>854161
Object-oriented ansi c
Cyclone
Все книжкт zmq
Аноним 11/10/16 Втр 00:35:17 #399 №854299 
>>854203
>Object-oriented ansi c
книга годная, но бля это же пиздец пиздецовый, для ооп есть плюсы и
жаба, зачем страдать хуйней то? >>854161 чем тебя ооп не устраивает
Аноним 11/10/16 Втр 01:15:35 #400 №854316 
>>854299
П - переносимость.
Аноним 11/10/16 Втр 01:41:26 #401 №854328 
>>854316
>переносимость.
лол
Аноним 11/10/16 Втр 20:15:41 #402 №854853 
Сильно не ссыте на меня, в ВУЗе дали задание:

Разработайте программу,которая вводит целое положительное число в промежутке от 1 до 100 (необходимо предусмотреть обработку ошибок при вводе). В соответствии с этим числом сформировать записи трех видов:
"Ваш возраст 1 год", "Ваш возраст 22 года", "Ваш возраст 75 лет"
''Вам до совершеннолетия 17 лет'',''Вы совершеннолетний 4 года'','''Вы совершеннолетний 57 лет"
"Вам до пенсии 59 лет", "Вам до пенсии 48 лет", "Вы на пенсии 15 лет"

Наваял программку, она компилируется, но ничего не выводит (параша, да).
http://ideone.com/oUP7qD
Аноним 11/10/16 Втр 20:18:34 #403 №854857 
>>854853
У тебя в main декларации функций т.е., ты как бы говоришь "сап, гцц, есть одна функция", а не их вызовы. Вызовы делаются так же, как и у всяких библиотечных printf(): имяфункции(тут аргументы, если есть);
Аноним 11/10/16 Втр 20:30:30 #404 №854874 
>>854857
Не прокатило.
http://ideone.com/oUP7qD
Аноним 11/10/16 Втр 20:32:25 #405 №854875 
По отдельности все работает, специально отдельно проверял каждую из функций с разными значениями, вот только все вместе не работает, хотя и ошибки не выдает.
Аноним 11/10/16 Втр 20:54:23 #406 №854888 
Ананасы, в чём пишете/отлаживаете программы на C под шиндоус? А то я только под мк писал. Насоветуйте что-нибудь легковесное не особо навороченное.
Аноним 11/10/16 Втр 20:58:09 #407 №854891 
>>854874
> Не прокатило.
Ты так говоришь, как будто это было единственной проблемой твоего кода:
> return dy[3];
Ты, вероятно, думал, что возвращаешь массив из трех элементов? Нет, ты читаешь значение за пределами массива (всего три элемента, а ты читаешь четвертый), а возвращать массивы напрямую нельзя, используй указатели или, на худой конец, объяви глобальную переменную.

>>854888
Легковесное: берешь gcc (и msys/msys2 заодно), берешь любой текстовый редактор (например, саблайм). Отлаживаешь чем придется (x64dbg, IDA, gdb). Если хочется IDE, есть Pelles C, там свой компилятор и свой source-level отладчик.
Аноним 11/10/16 Втр 21:00:50 #408 №854896 
>>854891
Саблайм лучше ноутпада плюх-плюх?
>Отлаживаешь чем придется (x64dbg, IDA, gdb)
Во что проще вкатиться, что удобнее?
Gcc под шиндоус - mingw? Или что?
Аноним 11/10/16 Втр 21:06:34 #409 №854901 
>>854896
> Саблайм лучше ноутпада плюх-плюх?
Дело вкуса.

> Gcc под шиндоус - mingw? Или что?
Да. Ставится в комплекте msys.

> что удобнее?
Удобнее - нормальный отладчик с человеческим лицом типа студийного но студия весит в районе 5-10 Гб или Pelles C. В принципе, если потребность есть, то и gdb несложно осилить.
Аноним 11/10/16 Втр 21:26:42 #410 №854911 
>>854901
А легковесные аналоги студии есть адекватные? Помню, в студенчестве пытался угорать по опенсорсу и лабы делал в code blocks. Не особо был от него в восторге. Студия годная, но жирная и платная, я не уверен, что такой софт на работе можно ставить себе. Да и мне по мелочам иногда использовать надо будет, так как я в большинстве случаев под arm/avr пишу, а на пекарне для тестов и облегчения себе жизни проще змею использовать.
Аноним 11/10/16 Втр 21:35:01 #411 №854915 
>>854911
> студия ... платная
Есть Community-версия, она бесплатная, но на работе ее использовать действительно нельзя.

Code::Blocks никуда не делся, оброс фичами и, возможно, стал более юзабельным. Есть еще всякие IDE на Java, тот же эклипс и CLion - они достаточно удобные, но как по мне, слишком уж неповоротливые.
Аноним 11/10/16 Втр 21:38:22 #412 №854917 
>>854915
>на работе ее использовать действительно нельзя
Ну вот о том и речь.
Code blocks вообще юзабельный? Лет семь назад он мне показался весьма корявым. Но он как раз вроде легкий был весьма.
CLion же тоже вроде платная.
Аноним 11/10/16 Втр 21:39:42 #413 №854918 
14762111822070.png
>>854911
Юзаю NetBeans. Легковесной ее не назвать (ибо Java), но в остальном вполне удовлетворяет моим потребностям.

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

>CLion
Платная же. Хотя, я слышал, они еще распространяют какую-то кастрированную версию.
Аноним 11/10/16 Втр 21:59:43 #414 №854934 
>>854853 кун на связи.
Я понял, что я полный еблан. Я не знаю, почти нихуя про функции, и в этой программе нагородил полнейшую херню. Как это лечить? Это пройдет? Что посоветуете?
Аноним 11/10/16 Втр 22:24:11 #415 №854950 
>>854934
1) Написать функцию, которая выводит правильное склонение год/года/лет (printf) или возвращает указатель на правильное склонение слова.
2) Написать функцию ввода (читать ввод, проверять на ошибки, возвращать 1 int, ты это умеешь).
3) Написать функцию, выводящую информацию о текущем возрасте.
4) Написать/исправить функции совершеннолетия и пенсий.
В результате получится:
int get_age(void) { ... }
void print_years(int age) { ... }; // Или char *get_years_declenision(int age) { ... }
void print_current_age(int age) { ... }
void print_adult_status(int age) { ... }
void print_pension_status(int age) { ... }

int main(void) {
int age = get_age();
print_current_age(age);
print_adult_status(age);
print_pension_status(age);
}

Пиши по-порядку и сразу тестируй написанное. Ничего сложного в задании нет, а все, что тебе нужно знать, уже есть в том коде, что ты постил выше.
Аноним 11/10/16 Втр 23:13:36 #416 №854985 
>>854934
Вот твоя программа: http://ideone.com/1KfgB8
Удиви препода. На первый взгляд может показаться, что я издеваюсь. На самом деле я просто не люблю городить многоэтажные if'ы и терпеть не могу наличия в одной функции нескольких return'ов. Но если хочешь, можешь переписать как тебе надо.
Аноним 11/10/16 Втр 23:22:00 #417 №854996 
>>854985
Баги специально оставил, чтобы >>854934 помучался? grammatic_form показывает нам все, что нужно знать о тернарном операторе. Алсо, твоя enter() сломана - введи a и нажми Enter. Вангую, что ты сам недавно выучил язык. Если будешь писать на нем, то с годами все перекосы пройдут.
Аноним 11/10/16 Втр 23:38:38 #418 №855004 
>>854996
Один баг уже успел пофиксить (в последней функции). enter() тоже переделал. scanf - зло. Изменения внем прямо на ideone.

>Вангую, что ты сам недавно выучил язык.
Лол. Так или иначе связан с Сишкой уже больше 10 лет. Просто внимательность никогда не была моей сильной стороной. Ну и да, прогу через отладчик не прогонял.
Аноним 11/10/16 Втр 23:39:10 #419 №855005 
>>855004
>внем
внёс
фикс
sageАноним 11/10/16 Втр 23:51:32 #420 №855010 
>>855004
> Так или иначе связан с Сишкой уже больше 10 лет.
Ну хуй знает. Я не про баги. Я про комментарии с линиями, const int абсолютно ничем не отличается от int с точки зрения компилятора, разве что изменять нельзя напрямую, многострочные тернарные операторы нечитаемы, прототипы в .c, inline на который всем насрать... будем считать, что мой детектор дал сбой.
Аноним 12/10/16 Срд 00:06:03 #421 №855018 
>>855010
>комментарии с линиями
Вопрос вкуса, ящитаю. Просто мне так удобнее визуально воспринимать код. Первый раз такие коменты увидел в 2004 году и стех пор сам их использую.

>const int
>inline
Я это не для компилятора пишу, а для себя и для потенциальных читателей кода. Согласен, в маленьких учебных прогах можно забить на все эти нюансы. Как и на static в объявлении функции (файл-то один). Это уже чистая привычка. Я всегда так пишу. Да что там говорить, я даже restrict юзаю.

>прототипы в .c
ideone же. Там нельзя создать отдельный буфер для хедера. Можно было, конечно, определить все функции перед main, но я делал методом "сверху вниз" и, как мне кажется, это затруднило бы чтение.

>тернарные операторы
Ну тут я полностью согласен. Разумеется, в продакшн-коде такому говну не место. Но и давать очевидно наивное решение тоже не хотелось. Мне кажется, что >>854853 не помешает немного напрячь мозг.
Аноним 12/10/16 Срд 16:42:54 #422 №855353 
Пока решил забить хуй на SDL, хочу попросить у анона совета насчет ncurses. Читал ли анон что-то по нкурсес охуенное, или ничего охуенней документации не придумано?
Аноним 12/10/16 Срд 16:44:00 #423 №855354 
Помогите с кодом на си, условие if (((x - a) != 0) || ((x - c) != 0)) работает через раз.
http://pastebin.com/dK5gYxG3
https://pp.vk.me/c637922/v637922388/16006/V3EM_Qn_rI8.jpg
Аноним 12/10/16 Срд 20:11:09 #424 №855473 
Поставил msys2 и code blocks. Mingw не заметил, что вместо установщика там менеджер пакетов, поэтому не поставилось. Инета на рабочем компе нет. Code blocks mingw из msys сам не находит, я пути руками указал, жму конпелировать, он пишет, что конпелятор вернул 0, но при этом нихуя не происходит. Как подружить его с msys2?
Аноним 12/10/16 Срд 21:10:06 #425 №855508 
>>855354
Код не читал, хуй знает, что там считается, а ссылка на дуро^Wмэйлру не открывается. Но раз x и a типа double, то, их разность может быть достаточно малой, и при этом не нулевой. Сравнивать числа с плавающей точкой операторами == и != можно только в очень редких случаях. Используй вместо != 0 что-нибудь типа >= N, где N - достаточно маленькое ненулевое число.
Аноним 12/10/16 Срд 21:32:05 #426 №855521 
>>855473
> вместо установщика там менеджер пакетов
> Инета на рабочем компе нет
Можно выкачать пакеты в офлайн (/etc/pacman.d/mirrorlist.*) и поставить с помощью pacman -U.

> жму конпелировать, он пишет, что конпелятор вернул 0, но при этом нихуя не происходит
У Code::Blocks есть окно с логом компиляции. Компилятор там точно правильный и по правильному пути вызывается? Все ли длл оно находит наиболее частая проблема? Попробуй из виндовой консольки руками gcc сказать, проставив все пути так же, как в Code::Blocks.

Алсо у Code::Blocks есть дистр со включенным в него mingw.
Аноним 12/10/16 Срд 21:37:21 #427 №855524 
>>855521
Скачал пакеты, попробую завтра. Ну и заодно дистр codeblocks вместе с mingw. Спасибо за помощь, анон.
Аноним 13/10/16 Чтв 15:49:12 #428 №855932 
Тук-тук. Есть кто?
Аноним 13/10/16 Чтв 16:04:36 #429 №855940 
14763638763920.jpg
>>855932
NIET. A KTO SPRASHIVAYET?
Аноним 13/10/16 Чтв 16:22:53 #430 №855953 
>>855940
Фрилансер 300кк/сек
Нужна небольшая помощь с циколом
Аноним 13/10/16 Чтв 16:26:16 #431 №855956 
>>855953
Ну выкладывай, че там у тебя.
Аноним 13/10/16 Чтв 16:34:03 #432 №855962 
14763656437360.jpg
>>855956
Дано натуральное n и действительное a. Вычислить: ПИК


CODE(ОЧЕНЬ КРИВОЙ):

#include <stdio.h>
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
int main()
{
int n;
double a;
cin >> a;
cin >> n;
double result = 0;
for (int i = n; i = n; i++)
{
double temp = a;
for (int j = 1; j < i; j++)
{
temp *= (a + j);
}
result += 1 / temp;
}
cout << result;
return 0;
_getch();
}
Аноним 13/10/16 Чтв 16:39:45 #433 №855965 
>>855962
Код лучше на pastebin скинь. Или скрин сделай. Так нечитаемо. Но я сразу могу сказать, что твоя программа написана не на Си.
Аноним 13/10/16 Чтв 16:41:07 #434 №855966 
>>855962
double f = 1;
double sum = 0;
for (int i = a; i <= n; i++) {
....f = f / i;
....sum += f;
}
Аноним 13/10/16 Чтв 16:45:31 #435 №855969 
>>855965
http://pastebin.com/dARRBXbA как это не на си?
На си писал.
Аноним 13/10/16 Чтв 16:46:30 #436 №855971 
>>855966
>for (int i = n; i = n; i++)
тут опечатался, у меня
for (int i =0; i < n; i++) было, и работала она пплохо
Аноним 13/10/16 Чтв 16:50:54 #437 №855972 
>>855971
В каком смысле плохо? У тебя двойной цикл, который совсем не нужен.
>>855969
В си нет cin/cout.
Аноним 13/10/16 Чтв 16:54:17 #438 №855976 
14763668577190.png
>>855969
Твоя программа написана на C++. Ну это сильно сказано. Потому что если ты пользуешься iostream, то зачем подключать stdio? conio.h, насколько мне известно, не входит ни в стандарт C, ни в стандарт С++. В Си не бывает iostream, cin, cout и using namespace std.
Попробуй мое решение. Оно довольно грубое, поскольку в идеале надо бы проверку на переполнение запилить. А я пока отойду не надолго. Если что, пиши.
Аноним 13/10/16 Чтв 16:58:52 #439 №855978 
>>855972
>В каком смысле плохо?
Выдавала совсем не тот результат
>В си нет cin/cout.
бляяяяяя, точно
сука
сорян, просто уже 10 часов подряд сижу за математиками, вообще голова едет
завтра ещё эту прогу надо сдать
помоги пожалуйста переписать убрать
>У тебя двойной цикл, который совсем не нужен
>>855976
Да. Ну крч, мне тут один чел помог именно с циклом, видимо он не так поонял и написал на крестах
но надо на Си
щас чекну твое
Аноним 13/10/16 Чтв 16:59:23 #440 №855980 
>>855978
БФ
>переписать лишнее
Аноним 13/10/16 Чтв 17:08:46 #441 №855986 
>>855976
Псс, ты ещё тут?
Аноним 13/10/16 Чтв 17:09:49 #442 №855987 
>>855976
>conio.h
ну это точно в Си входит
она у меня чисто для _getch();
Аноним 13/10/16 Чтв 17:21:25 #443 №855992 
>>855986
Да. Ты пиши сразу, что нужно. Я минут через 10-15 буду.
Аноним 13/10/16 Чтв 17:21:34 #444 №855993 
>>855966 >>855976
Оба ответа неправильные.
Аноним 13/10/16 Чтв 17:23:59 #445 №855996 
>>855992
http://pastebin.com/QXqi1dWH довел прогу до ума, теперь она работает.
Осталось переписать с С++ на Си.
Это возможно?
Аноним 13/10/16 Чтв 17:27:51 #446 №855999 
>>855996
scanf/printf вместо cin/cout, namespace, iostream убрать.
Аноним 13/10/16 Чтв 17:31:41 #447 №856003 
>>855993
Анон, поясни, где у меня ( >>855976 ) обосрамс?
Аноним 13/10/16 Чтв 17:33:28 #448 №856005 
>>855999
int n;
double a;
scanf("%f,%f", &a, &n);

Так пойдет?
Аноним 13/10/16 Чтв 17:34:25 #449 №856010 
>>856003
1 / a + 1 /a + ...
Аноним 13/10/16 Чтв 17:54:17 #450 №856027 
>>856010
Фиксанул, вроде. Допустим, a = 1, n = 2. Должно получиться 1 + (1/(1∙(1+1))) + (1/(1∙(1+1)∙(1+2))) = 1 + 1/2 + 1/6 ~= 1.667, так ведь?
http://ideone.com/ArHkgC
Аноним 13/10/16 Чтв 17:56:11 #451 №856029 
>>856005
Ясно же что нет.
Аноним 13/10/16 Чтв 17:56:48 #452 №856030 
>>856027
Ошибка быстро будет накапливаться. Ты это понимаешь, надеюсь?
Аноним 13/10/16 Чтв 17:59:05 #453 №856033 
>>856030
Ну я сразу написал, что решение грубое. Я же не буду детально прорабатывать чужую лабу. Эпсилон и проверка на переполнение легко гуглятся.
Аноним 13/10/16 Чтв 18:01:10 #454 №856036 
>>856033
Тут надо не эпсилон, а рациональные числа делать.
Аноним 13/10/16 Чтв 18:01:36 #455 №856037 
>>855999
>>856029
Не понимаю, как написать, что бы printf выводил результат
Хелп плеес
Аноним 13/10/16 Чтв 18:02:32 #456 №856038 
>>856037
scanf("%ld %d", &a, &n)
printf("%ld %d", &a, &n)
Если я не путаю.
Аноним 13/10/16 Чтв 18:04:35 #457 №856041 
>>856036
Лол, я даже не знаю, ожидает ли препод такого решения от >>855962 Обычно же хватает варианта "на отъебись". Если конечно это не лаба по мат. программированию.
Аноним 13/10/16 Чтв 18:09:06 #458 №856044 
>>856041
> Если конечно это не лаба по мат. программированию.
Нет
>ожидает ли препод
Вряд ли, у меня преподша очень странная, я для себя пытаюсь понять просто

>>856038
>l
что это перед d?
Раньше в прогах писал
>scanf("%f,%f", &a, &n)
и работало
Аноним 13/10/16 Чтв 18:09:48 #459 №856045 
>>856044
А ты ман по scanf/printf почитай. Там эротика.
Аноним 13/10/16 Чтв 18:14:32 #460 №856047 
14763716724790.png
Странно, переделал cin cout, стало выдавать громадные числа.
Где я ошибся?
Аноним 13/10/16 Чтв 18:15:46 #461 №856049 
>>856047
lf, а не ld
туплю
Аноним 13/10/16 Чтв 18:19:19 #462 №856054 
>>856047
Дебил. Зачем ты поинтеры печатаешь?
Аноним 13/10/16 Чтв 18:20:12 #463 №856055 
>>856049
Теперь нули выдает.
>>856054
поинтеры?
Аноним 13/10/16 Чтв 18:21:00 #464 №856056 
>>856054
где они тут?
Аноним 13/10/16 Чтв 18:21:07 #465 №856057 
14763720671710.jpg
>>856055
>поинтеры?
Смена растет.
Аноним 13/10/16 Чтв 18:22:00 #466 №856060 
>>856057
я думал, что это *xxxxxxxxxxxx
Аноним 13/10/16 Чтв 18:22:26 #467 №856061 
аааа, хаххаха, сукаа
Аноним 13/10/16 Чтв 18:23:27 #468 №856062 
>>856047
Ну так все же, что фиксануть?
Аноним 13/10/16 Чтв 18:24:22 #469 №856063 
>>856062
Убрать &ы.
Аноним 13/10/16 Чтв 18:24:28 #470 №856064 
>>856062
Прочитать ман по printf и scanf. А еще не копировать бездумно код, который тебе дали на дваче. Понятно, что для тебя это невыполнимо.
Аноним 13/10/16 Чтв 18:25:25 #471 №856065 
>>856063
Теперь с эксепшенном сваливается почему-то.
Аноним 13/10/16 Чтв 18:28:54 #472 №856067 
>>856065
Не везде убрать, только в некоторых местах.
Аноним 13/10/16 Чтв 18:29:57 #473 №856069 
>>856067
Да я троллю, успокойся.
Аноним 13/10/16 Чтв 18:31:14 #474 №856070 
>>856062
http://ideone.com/YuHA7k
И прочитай все таки доки на stdio.
Аноним 13/10/16 Чтв 18:32:49 #475 №856071 
>>856070
Вот так и становится тред кормушкой для птушников с их лабами.
Аноним 13/10/16 Чтв 18:36:06 #476 №856073 
>>856064
>не копировать бездумно код, который тебе дали на дваче
Ты сам хоть понимаешь, что пишешь?
>>856071
Бляя, я надеюсь ты когда нибудь попадешь на мой факультет
Аноним 13/10/16 Чтв 18:37:37 #477 №856074 
14763730577200.jpg
>>856073
>Ты сам хоть понимаешь, что пишешь?
Понимаю. Проблемы?

>Бляя, я надеюсь ты когда нибудь попадешь на мой факультет
Зачем?
Аноним 13/10/16 Чтв 18:38:13 #478 №856075 
>>856071
Ну, все таки, вопросы использования stdio - это специфика Сишки. Можно, конечно, было отправить его в ньюфаг-тред, но к чему умножать сущности? Как мне кажется, в данном случае, лучше показать, как решить проблему с printf/scanf, чем тупо отправить читать маны. Чисто чтобы потом у него не возникло отвращения к языку из-за одной единственной говнолабы.
Аноним 13/10/16 Чтв 18:43:48 #479 №856083 
>>856070
>И прочитай все таки доки на stdio.
Спасибо большое, добра

>>856074
>Проблемы?
Пруфани, что я код с двачей скопировал


Да и вообще, как я могу это знать?
В школе у нас вообще не было информатики (к егэ сам готовился)
В универе на странного препода попал, щас зайду с телефона кину тебе задание на допуск к этой самой лабе
Все, что она обьяснила это int, while, for, do while и как кубриками этими ебаными рисовать блок-схемы

p.s. уже 11ый час сижу за расчетками по математикам, поэтому туплю довольно жестко
Аноним 13/10/16 Чтв 18:48:24 #480 №856086 
>>856070
printf("%.4lf\n", solve(a, n));
fix
Аноним 13/10/16 Чтв 18:50:59 #481 №856088 
>>856083
>Пруфани, что я код с двачей скопировал
У тебя в >>856047 вконце printf, а следом scanf. Может это конечно у тебя сделано, чтобы press any key before continue, но что-то мне подсказывает, что просто копирнул.
Аноним 13/10/16 Чтв 18:51:35 #482 №856090 
>>856088
>before
to fix
Аноним 13/10/16 Чтв 19:52:02 #483 №856118 
test!
Аноним 13/10/16 Чтв 19:55:56 #484 №856123 
хех чисто тред оживил сегодня хоть немного
Аноним 13/10/16 Чтв 19:59:34 #485 №856124 
>>856123
анус бы себе лучше оживил
Аноним 13/10/16 Чтв 20:14:51 #486 №856129 
>>856124
eto ne vichislimo po turingu
Аноним 13/10/16 Чтв 23:57:04 #487 №856247 
Пацаны, можно ли в sublime 3:
а) запилить подсказку по функциям (ну типа когда вызов пишешь, чтобы он находил в указанных заранее директориях прототип и писал, какие параметры надо передавать. Ну типа как анаконда для пистона)
б) запилить форматирование всего файла хоткеем?
в) отображение определения макросов, а не названия файла, в котором оно находится
Аноним 14/10/16 Птн 00:10:30 #488 №856254 
>>856247
> подсказку
SublimeCodeIntel, но оно это одна большая проблема. В целом, проще считать, что нет.

> форматирование хоткеем
Обертки вокруг astyle и clangformat, тысячи их.

> определения макросов
Хуй знает, поковыряй, как оно там индексирует. Мне достаточно Goto definition (назначь хоткей, по умолчанию вроде нету) и потом Jump Back (Alt -).
Аноним 14/10/16 Птн 01:29:24 #489 №856274 
Вопрос неуча.
Это нормально, что scanf не может прочитать короткое целое число 255>=x>=0 в однобайтовый unsigned char, когда в строке формата стоит %d?
На ideone читает, но не читает в signed. Какое-то непредсказуемое поведение...
Аноним 14/10/16 Птн 01:33:20 #490 №856276 
>>856274
Да.
Аноним 14/10/16 Птн 01:36:51 #491 №856278 
>>856276
На том же ideone читает, если вместо %d указать %u, но на моем компьютере по прежнему ведет себя странно.
Хм. Ну и ладно, проще считать в int и привести к char тогда. Наверное. Я же нуб и могу ошибаться.
Аноним 14/10/16 Птн 04:05:05 #492 №856305 
http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/attrib.html

Анон, отчего в этом коде Example 5 может быть сегфолт? Очепяток нету, написано вроде все верно.
Аноним 14/10/16 Птн 04:12:23 #493 №856306 
>>856305
Под gdb запускать не пробовал? Что пишет?
Аноним 14/10/16 Птн 06:12:44 #494 №856316 
>>856306
Нет пока, не пробовал, только домой сейчас доберусь, где смогу.
Аноним 14/10/16 Птн 19:54:26 #495 №856655 
>>856254
>SublimeCodeIntel
Там по-моему нет C, а для пистона анаконда ну просто конфета.
>Обертки вокруг astyle
В смысле, обертки?
Алсо, сниппеты - это типа как code templates в iar? Нихуя только не понятно, как их самому создавать?
Аноним 14/10/16 Птн 20:48:47 #496 №856685 
>>856655
> SublimeCodeIntel
> Там по-моему нет C
И правда, извини.

> В смысле, обертки?
В смысле, есть много плагинов, у которых внутри бинарник astyle в том или ином виде. Например, SublimeAStyleFormatter, там внутри pyastyle.

> Алсо, сниппеты - это типа как code templates
Ну да. Создавать через Tools->Developer->New snippet, описание http://docs.sublimetext.info/en/latest/extensibility/snippets.html
Аноним 14/10/16 Птн 22:39:43 #497 №856756 
Есть одно приложение, которое отправляет DNS запросы. Нужно перехватить момент отправки. Но не пойму, как оно отправляет. Ставлю брекпойнт на send, sendto, WSASend, WSASendTo, gethostbyname - не использует их. Как отловить?
Аноним 14/10/16 Птн 22:42:13 #498 №856758 
>>856756
getaddrinfo() или, вероятнее, WSAAsyncGetHostByName()?
Аноним 14/10/16 Птн 22:45:13 #499 №856764 
>>856758
>getaddrinfo
Ох, антоша, тысячи благодарностей тебе.
Аноним 14/10/16 Птн 23:16:07 #500 №856773 
Оп, перекатывай давай, хуильник
Аноним 14/10/16 Птн 23:23:57 #501 №856779 
>>856773
Как скажешь.
ПЕРЕКАТ Аноним 14/10/16 Птн 23:25:47 #502 №856780 
>>856777 (OP)
>>856777 (OP)
>>856777 (OP)
>>856777 (OP)
>>856777 (OP)
comments powered by Disqus

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