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

Этого треда уже нет.
Это копия, сохраненная 19 января 2017 года.

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

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

78 Кб, 792x1023

C Programming Language #15 # OP 25 Ноя, 08:17 #881807 В конец треда | Веб

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

Что читать:

- Классика от Отцов: 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/~ats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (он же C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт) не драфт ищем на торрентах
- Стандарт ISO/IEC 9899:2011 (он же C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- man/Dash/zealdocs

Чем конпелировать:

- Очевидный GCC.
- clang: оче годно, батя рекомендует.
- Intel C++ Compiler: оптимизации, тысячи их.
- Visual Studio 2015 Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.
- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.
- TCC: очень маленький компилятор с багами и неполной поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.

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

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

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

Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition" (2002)
Ебаный пересказ стандартов C89 и C99 (включая стандартную библиотеку). Для не осиливающих стандарт в оригинале. Читать в качестве подготовки к собеседованиям (есть задачник с ответами) и для ознакомления с масштабами пиздеца перед написанием своего парсера/компилера.

Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994)
"Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).

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

Stephen G. Kochan "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

MISRA Ltd. "Guidelines for the Use of the C Language in Critical Systems" (2013)
Набор рекомендаций по написанию надежного кода на C (промышленный стандарт). Читать - однозначно, следовать - вдумчиво и без фанатизма. Также можно посмотреть https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard

Еще более длинный список: http://www.iso-9899.info/wiki/Books#Learning_C

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

- https://arhivach.org/thread/106153/
- https://arhivach.org/thread/131949/
- https://arhivach.org/thread/140570/
- https://arhivach.org/thread/153698/
- https://arhivach.org/thread/155908/
- https://arhivach.org/thread/173837/
- https://arhivach.org/thread/180461/
- https://arhivach.org/thread/182958/
- https://arhivach.org/thread/188294/
- https://arhivach.org/thread/193780/
- https://arhivach.org/thread/198868/
- https://arhivach.org/thread/206632/
- https://arhivach.org/thread/211714/
- https://arhivach.org/thread/217128/

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

Ответы>>881980>>882470>>883159>>885279>>891496>>893273>>895749>>895750>>896252>>907444

25 Ноя, 08:58 #2 #881823

c drives all the world!&&of exploits&&

35 Кб, 817x604

3 Кб, 652x49

25 Ноя, 16:22 #3 #881980

>>881807 (OP)
В общем вопрос по последней части "программы", задание на втором пике, как реализовать? Что не так сделал?

Ответы>>882162>>882582

25 Ноя, 16:34 #4 #881989

у Си есть поддержка Utf-8 (по умолчанию или де-факто либа?)

Ответы>>882004>>882162

25 Ноя, 17:05 #5 #882004

>>881989
icu

25 Ноя, 21:43 #6 #882162

>>881989
А что тебе нужно конкретно? Кодирование и декодирование - это 10 строк, но можно и либу найти. Литералы в исходнике с кодировкой UTF-8 и так будут UTF-8, но в C11 можно зафорсить u8"text". Или ты Unicode имел в виду?

>>881980
> Что не так сделал?
Забыл после printf() сделать еще раз цикл по выборке, где ты будешь сравнивать элемент с каждым из средних и увеличивать соответствующий счетчик, элемент меньше среднего. Твой кэп. А if-ы свои в последних 8 строках убери, неправильные они, ты там погоду на Марсе выводишь a[​i​] читает за пределами массива.

Ответы>>882332

26 Ноя, 07:35 #7 #882332

>>882162
А как, собственно, задать сравнение чисел из моего массива с средним значением?

26 Ноя, 15:03 #8 #882470

>>881807 (OP)
Стоит Visual Studio 2015 под C#. Как туда добавить clang?

Ответы>>882478>>882583>>882717

26 Ноя, 15:15 #9 #882478

>>882470
я знаю, но не скажу

Ответы>>882583

26 Ноя, 18:39 #10 #882582

>>881980
>Srednee arifmeticheskoe

Ты в курсе, что Си поддерживает кириллицу в строках, программист уровня /pr?

Ответы>>882603

26 Ноя, 18:39 #11 #882583

>>882478
А вы проказник
>>882470
Лень гуглить спрошу анона?

sage 26 Ноя, 19:20 #12 #882603

>>882582
implementation defined

sage 26 Ноя, 21:56 #13 #882717

>>882470
Запустить инсталлятор (Панель управления, Программы и компоненты, ну ты понял), поставить соответствующую галочку.

Ответы>>882794

27 Ноя, 00:26 #14 #882794

>>882717
Не катит. Надо добавить в уже установленную VS.

Ответы>>882806

sage 27 Ноя, 00:54 #15 #882806

>>882794
А по-твоему он тебе рядом вторую студию поставит? С подобными заявлениями иди-ка ты в /s/.

Ответы>>882979>>883305

27 Ноя, 02:38 #16 #882909

У меня есть ДЛЛка с хуков, который перехватывает сообщения от клавиатуры и отправляет клиентскому окну код введенного символа. Аски-символы передаются нормально, но русские буквы выводятся как шлак. Как сделать поддержку русского ввода?

Ответы>>882913

27 Ноя, 02:41 #17 #882913

>>882909
Код-то покажи? Кто знает, как ты там ввод симулируешь.

Ответы>>882922>>882924

27 Ноя, 02:51 #18 #882922

>>882913
http://pastebin.com/kkmTCbRS

И еще почему-то перехватываются нажатия только в окне студии, а не в любом окне. Почему? ДЛЛка же во все процессы подключается.

Ответы>>882928

27 Ноя, 02:54 #19 #882924

>>882913
Код из клиента: http://pastebin.com/XhggSLhu

27 Ноя, 03:05 #20 #882928

>>882922
Сам потестить не могу, поэтому пока только придирки и догадки:
1) Насколько я помню, шаред-секции не работают с ASLR. Сделай OutputDebugString в процедуре KeyboardMsgProc() и выведи свой hMsgHook, не ноль ли он?
2) Оконные процедуры бывают ASCII-шные и UNICODE-овые. Возможно где-то тут проблема. Возможно, стоит постить еще WM_UNICHAR предварительно, но деталей я не помню.
3) Погугли UIPI.

27 Ноя, 11:48 #21 #882979

>>882806
Посмотрел, как ты сказал. Да, ты прав - пиздую в /s можно добавить clang как компонент. Но в VS это блять не полноценная поддержка Си, а примочка к крестам. Так что съёбываю в линупс.

27 Ноя, 12:32 #22 #882992

Отцы, хочу вкатиться в С. Есть ли у кого книга learn c the hard way? Денег на покупку нет, в гугле не нашёл что-то..

Ответы>>883000>>883403

27 Ноя, 12:45 #23 #883000

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

Ответы>>883031

27 Ноя, 14:00 #24 #883031

>>883000
советуй годноту тогда

Ответы>>883036

27 Ноя, 14:21 #25 #883036

>>883031
Шапку почитайхуль вы шапку не читаете что с вами не так

Ответы>>883308

27 Ноя, 14:50 #26 #883050

Нужно написать небольшой анализатор пакетов, который снифает IPv6-пакеты, слегка анализирует их и решает, отбрасывать пакет или нет. Я наговнокодил такую программу: http://pastebin.com/24FUjTPJ

Почему в функции sniff при выполнении recv в буфере остается мусор? Что в этом коде не так?

Ответы>>883055>>883098>>883501

27 Ноя, 15:01 #27 #883055

>>883050
Забиндил сокет, но recv все равно не принимает информацию.

http://pastebin.com/U5cw6kE9

Ответы>>883098

27 Ноя, 16:19 #28 #883098

>>883050
>>883055
Часть проблем решил. http://pastebin.com/iN4fBp3D

Как добраться до данных в пакете?

Я читаю данные из сокета в память и накладываю на эту память структуру IPHeader. Что именно находится в той памяти после выполнения recv? Заголовок IP в начале, а по указателю *data - переданные данные? Чтобы получить данные, надо перейти по этому указателю?
Как узнать размер данных? Из поля IPHeader.length вычесть sizeof(IPHeader)?

Ответы>>883113>>883114

27 Ноя, 16:51 #29 #883113

>>883098
я знаю, но не скажу

Ответы>>883126

sage 27 Ноя, 16:52 #30 #883114

>>883098
Тора Гой, C это язык созданный для написания Unix и популярный в *nix-среде.

Зачем ты зашквариваешь его WinAPI?

Ответы>>883126

130 Кб, 600x800

27 Ноя, 17:07 #31 #883126

>>883114
>C это язык созданный для написания
Малвари под винду.

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

>>883113
Ну скажии((((

Ответы>>883164

27 Ноя, 17:15 #32 #883130

Почему в IPHeader.data находится BadPtr? Где данные?

27 Ноя, 18:06 #33 #883148

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

typedef struct tagIPPacket
{
IPHeader header;
char data[20000];
} IPPacket;

Какой максимальный размер данных в одном пакете?

Ответы>>883149

sage 27 Ноя, 18:10 #34 #883149

>>883148
> ни хуя не знает
> взялся кого-то спасать

Ответы>>883211

125 Кб, 1280x800

27 Ноя, 18:28 #35 #883159

>>881807 (OP)
Сегодня обнаружил, что под интел в винде нет мокрописьки, умеющей подменять версию и вендора OGL. Пришлось самому написать. Да, студия шестая и стоит как раз для таких редких случаев - так из меня программист как из говна пуля.
мимо ракодил

27 Ноя, 18:32 #36 #883164

>>883126
Мань, большая часть малвари уже давно пишется в лучшем случае на сосярпе и дотнетовской дельфи. В худшем вообще на vbs.

27 Ноя, 19:55 #37 #883211

>>883149
Для IPv4 мой кодес заработал. Переделываю под IPv6, как меня попросили.
Как определить размер данных в пакете? Судя по результатам, поле length в пакете IPv4 значительно превосходит размер заголовка + данных и реальным размером не является.

27 Ноя, 22:40 #38 #883305

>>882806
Поставил clang. Ну и где там создать проект на Си? Нету такого. Только кресты. clang вообще примочка к крестам для андроида.

Ответы>>883307>>883309

27 Ноя, 22:43 #39 #883307

>>883305
Ты ебанат?

Ответы>>883312

27 Ноя, 22:48 #40 #883308

>>883036
>Шапку почитай
abibas написано.

Ответы>>883314

27 Ноя, 22:50 #41 #883309

>>883305
Создаешь VisualC++ это название компилятора Empty project. Добавляешь в проект новый файл, называешь его yoba.c не cpp. В Project properties выставляешь Platform Toolset Visual Studio 2015 - Clang with Microsoft CodeGen (v140_clang_c2). Получаешь сишный проект, собирающийся фронтендом шланга и бэкендом C2 от Microsoft.

Ответы>>883327

27 Ноя, 22:52 #42 #883312

>>883307
Нет. Просто ньюфаг. Расскажи по-порядку от установки до создания и первой конпеляции хэллоуворда.

27 Ноя, 22:58 #43 #883314

>>883308
>2016
>не 228
А еще программист!

27 Кб, 676x392

27 Ноя, 23:14 #44 #883327

>>883309

28 Ноя, 01:03 #45 #883403

>>882992
>learn c with sweet bread
Нет, такого не держим. Только K&R в бумажном виде.

453 Кб, 1200x799

28 Ноя, 03:19 #46 #883442

Что скажите про книгу Лафоре Р. "Объектно-ориентированное программирование в С++"?
Нам препод-аспирант по ней втирает лекции.

Ответы>>883446>>883914

28 Ноя, 03:28 #47 #883446

>>883442
Спроси в джваскрипт треде. Книга норм, не лучше ни хуже иных. Но сам я не чиатл

28 Ноя, 09:40 #48 #883501

>>883050
>std::cout
откуда вы только лезете...

Ответы>>883778

28 Ноя, 09:53 #49 #883506

Они же просто троллят.

28 Ноя, 16:16 #50 #883651

Махатгуру, решительно пояснили когда предпочтительней использовать switch, а когда if. Сейчас я до трёх ветвлений использую if.

Ответы>>883654

28 Ноя, 16:18 #51 #883654

>>883651
И да, как на вложенные свитчи смотрит шариат?

Ответы>>896910

28 Ноя, 19:14 #52 #883778

>>883501
Что тут не так? Используется поток вывода из стандартной библиотеки. Не засорять же пространство имён всякими using namespace.

Ответы>>883873

28 Ноя, 22:02 #53 #883873

>>883778
Может он имел ввиду, что ты постишь С++ код в С треде?

28 Ноя, 23:02 #54 #883914

>>883442
Хуй знает, что за книга, а на картинку подрочил.

29 Ноя, 15:35 #55 #884232

Сап, какое максимальное число символов в строке?
char[?]

Не троллю, рил в гугле найти не могу

Ответы>>884234>>884505

29 Ноя, 15:37 #56 #884234

>>884232
Адын

29 Ноя, 15:44 #57 #884240

g00ru, только не бейте, а помогите советом. Решил я значит написать свой велосипед и по уму разбил его на несколько файлов/модулей, каждый из которых естественно разделен на .h и .c
И с линковкой (на удивление) проблем нет, а вопрос скорее философский. Вот у меня модуль вывода на экран, вот модуль обработки ошибок и создания логов, а вот допустим int main().
В main есть вызов функции текстового вывода на экран, и функции обработчика ошибок. В модуле текстового вывода на экран - есть вызов обработчика ошибок, и (наверное догадались) в обработчике ошибок есть вызов вывода на экран!
Ошибок компилятор не выдаёт, даже Wall и Wextra.
А вопрос в следующем, как это все проинклюдить друг к другу чтобы не запутаться. Я увидел и опробовал два варианта: все хэдеры описать в одном великом хэдере и инклюдить его одного. Но этот хэдер скоро распидорасит как того мальчика из Акиры. Второй вариант: подключать только те хэдеры что нужно туда и только туда куда нужно. И комментировать как бешеный. Если не вызывать хэдеры из хэдеров, то колец не возникнет, и все работает. Но мне кажется что-то не так. Сможете ли вы предложить вариант лучше?

Ответы>>884243>>884495>>884550>>885167

29 Ноя, 15:48 #58 #884243

>>884240
>писать в одном великом хэдере
Да

29 Ноя, 21:49 #59 #884495

>>884240
У меня обычно есть этот самый "великий хедер" с самым основным (/stddef/stdint/stdbool всякие, общие для проекта функции и типы, которые присутствуют в каждом модуле, то же логирование, например), а для модулей я пишу хедеры, сами включающие все необходимое (вплоть до системных хедеров, если они им нужны). Единственная плохо решаемая проблема при таком подходе: енумы при кольцевой зависимости между модулями, потому что у enum нет forward declarations.

29 Ноя, 21:59 #60 #884505

>>884232
#include <stdint.h>
char[SIZE_MAX]

29 Ноя, 22:47 #61 #884550

>>884240
[CODE]# cat /usr/include/stdio.h | grep -A 2 -B 2 _STDIO_H
/

#ifndef _STDIO_H_
#define _STDIO_H_

#include <sys/cdefs.h>
--

__END_DECLS
#endif / !_STDIO_H_ */[/CODE]

Ответы>>886460

Знатоки и не только помогите пожалуйста студенту . 30 Ноя, 18:34 #62 #885156

Учусь на первом курсе,недавно проходили конструирование собственных функций,и сейчас их уже надо использовать в других прогах.Я не могу разобраться с передачей переменным из основной программы в функцию и наоборот,что это вообще за хуйня.
Объясните на примере или хотя бы помогите поправить код.Уже второй день пытаюсь разобраться.
______________________________________________
Написать программу вычисления значений заданной в индивидуальном варианту функции.Расчет значения
функции обязательно реализовать в виде собственной функции, в качестве
параметра предавать ей текущее значение x.
Вот код:
#include<stdio.h>
#include<locale.h>
#include<math.h>
#include<io.h>
#define a -1.5
#define b 1.5
double funk(double x , double shag );
int main (void)
{
setlocale(LC_ALL,"RUS");
double x,h;
puts("Введите шаг функции");
scanf("%lf",&h);
printf("%lf",funk(x,h));
system("pause");
}

double funk(double x, double shag)
{
double y,x;
for (x=a;x<=b;x+=shag)
{
if (x>1)
y=x+sqrt(1+fabs(cos(x)));
else if ((x>=-0.5)&&(x<=1))
y=x;
else y=x*x+2;
}
return y;
}

Хелп плиз,не могу понять что я делаю не так:
Вот ошибки,как это блять идентификатор не объявлен ,если я его объявляю
h: необъявленный идентификатор
x: необъявленный идентификатор
h: необъявленный идентификатор
нет определения; предполагается "extern" с возвратом типа "int"
переопределение формального параметра "x"

Знатоки и не только помогите пожалуйста студенту . 30 Ноя, 18:34 #62 #885156

Учусь на первом курсе,недавно проходили конструирование собственных функций,и сейчас их уже надо использовать в других прогах.Я не могу разобраться с передачей переменным из основной программы в функцию и наоборот,что это вообще за хуйня.
Объясните на примере или хотя бы помогите поправить код.Уже второй день пытаюсь разобраться.
______________________________________________
Написать программу вычисления значений заданной в индивидуальном варианту функции.Расчет значения
функции обязательно реализовать в виде собственной функции, в качестве
параметра предавать ей текущее значение x.
Вот код:
#include<stdio.h>
#include<locale.h>
#include<math.h>
#include<io.h>
#define a -1.5
#define b 1.5
double funk(double x , double shag );
int main (void)
{
setlocale(LC_ALL,"RUS");
double x,h;
puts("Введите шаг функции");
scanf("%lf",&h);
printf("%lf",funk(x,h));
system("pause");
}

double funk(double x, double shag)
{
double y,x;
for (x=a;x<=b;x+=shag)
{
if (x>1)
y=x+sqrt(1+fabs(cos(x)));
else if ((x>=-0.5)&&(x<=1))
y=x;
else y=x*x+2;
}
return y;
}

Хелп плиз,не могу понять что я делаю не так:
Вот ошибки,как это блять идентификатор не объявлен ,если я его объявляю
h: необъявленный идентификатор
x: необъявленный идентификатор
h: необъявленный идентификатор
нет определения; предполагается "extern" с возвратом типа "int"
переопределение формального параметра "x"

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

30 Ноя, 18:51 #63 #885167

>>884240
щас современные компилеры на компах с начиная core2duo поколения компилят .c файл размером 50к строк с незаметной для прогера скоростью
нахуй тогда дурачки разбивают свой пет-проект на кучу файлов, я не понимаю
ладно там система на 1-2 ляма строчек кода, тогда да

Ответы>>885189

30 Ноя, 19:34 #64 #885189

>>885167
>разбивают свой пет-проект на кучу файлов
паржал с хелоуворд-дебила

Ответы>>885257

Что это за хуйня 30 Ноя, 19:56 #65 #885196

Помогите мне блять пидарасы,что значит ебаный "необъявленный идентификатор " .Как он может быть блять необъяслен ,если я сразу после main его объявляю
что это за залупа.Я уже часов 6 сижу с этой хуйней

Ответы>>885261

30 Ноя, 21:31 #66 #885257

>>885189
аргументированно
еще раз, дебик: даже на некро-пека 100к файл компилится в доли секунды
какой смысл делить на файлы проект?

Ответы>>885311

30 Ноя, 21:39 #67 #885261

>>885196
Возможно ты компилируешь в режиме С89. Тогда перемести все декларации в начало функции, до всех остальных выражений.

Ответы>>885294

30 Ноя, 22:14 #68 #885275

>>885156
>#include<io.h>
>setlocale(LC_ALL,"RUS");
Катись к хуям, спермоблядь. (или кто там, Turbo-C-for-DOS-блядь? Всё равно катись)

Ответы>>885280>>885294

30 Ноя, 22:21 #69 #885279

>>881807 (OP)
Какие либы есть для символьной математики?

Ответы>>885280

30 Ноя, 22:22 #70 #885280

>>885275
setlocale-то чего приплел? Это стандартная либа.

>>885279
Биндинги к Mathematica, лол.

Ответы>>885281

30 Ноя, 22:22 #71 #885281

>>885280
"RUS"

30 Ноя, 22:50 #72 #885294

>>885275
Уебище ,очень интеллектуально написать 2 строчки из моего кода и послать нахуй,придурок хуев,ты думаешь после этого что-то изменится ,человек учтет ошибки и что-то из этого вынесет ?
Все в стиле двача,помойка ссаная(Это всех касается).Только один чел что-то подсказал(>>885261),но тут явно дело в коде,а не в компиляторе

30 Ноя, 23:31 #73 #885311

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

Ответы>>885567>>885694

01 Дек, 10:47 #74 #885567

>>885311
Вот это заскринь лучше: https://www.sqlite.org/2016/sqlite-amalgamation-3150200.zip да-да, мы знаем, почему и как оно сделано

Ответы>>885585

01 Дек, 11:29 #75 #885585

>>885567
Это опять ты, долбоеб? Эта версия скриптом генерится.

Ответы>>885596

01 Дек, 12:06 #76 #885596

>>885585
> да-да, мы знаем, почему и как оно сделано
Ты слепой или тупой?

Ответы>>885604

01 Дек, 12:32 #77 #885604

>>885596
Акваланг

01 Дек, 15:07 #78 #885694

>>885311
еще раз: с выключенными оптимизациями в debug конфигурации и настроеными pre-compiled хидерами единица трансляции размером >100k строк сишного кода (мы ведь в си треде, а не у крестоблядей?) компилится со скоростью незаметной для прогера
дак какой, блядь, смысл, разбивать проект на сотню файлов? добавить себе работенки?

Ответы>>885753

01 Дек, 16:35 #79 #885753

>>885694
Мухахаха, жги исчо

Ответы>>886433

02 Дек, 00:34 #80 #886029

Надо добавить в exe-файл ресурс через консоль. Как это можно сделать? Использую компиляторы и линкеры из VS и PellesC.

Ответы>>886032>>886034

02 Дек, 00:36 #81 #886032

>>886029
Сам напиши. Поищи в гугле/MSDN BeginUpdateResource().

sage 02 Дек, 00:40 #82 #886034

>>886029
Или тебе просто скомпилировать с ресурсами? Тогда пишешь .rc-файл, компилируешь в .res с помощью rc.exe/porc.exe, линкуешь link.exe/polink.exe yoba.obj myresources.res

02 Дек, 10:42 #83 #886174

Рубрика: вопросы от нуфага

Подумал, что было бы интересно написать свою реализацию какого-нибудь протокола работающего поверх UDP.
С чего начать, анон? Можно сказать, что ничего по данной теме не знаю, кроме основ TCP/IP. Мне нужно описание стандарта в первую очередь, так? Накидай примерный план, анон, молю!

Ответы>>886214

02 Дек, 11:45 #84 #886214

>>886174
Стивенс, TCP/IP крупным планом. Потом man socket. Читать тонны RFC и узнавать про тонкости работы TCP/IP не нужно.

02 Дек, 13:10 #85 #886251

>>885156
#include <locale.h>
#include <math.h>
#include <stdio.h>

#define a -1.5
#define b 1.5

double funk(double x, double shag);

int main(void) {
setlocale(LC_ALL, "RUS");
double x, h;
puts("Введите X");
scanf("%lf", &x);
puts("Введите шаг функции");
scanf("%lf", &h);
printf("%lf", funk(x, h));
}

double funk(double x, double shag) {
double y=0;
for (x = a; x <= b; x += shag) {
if (x > 1)
y = x + sqrt(1 + fabs(cos(x)));
else if ((x >= -0.5) && (x <= 1))
y = x;
else
y = x * x + 2;
}
return y;
}

02 Дек, 13:10 #85 #886251

>>885156
#include <locale.h>
#include <math.h>
#include <stdio.h>

#define a -1.5
#define b 1.5

double funk(double x, double shag);

int main(void) {
setlocale(LC_ALL, "RUS");
double x, h;
puts("Введите X");
scanf("%lf", &x);
puts("Введите шаг функции");
scanf("%lf", &h);
printf("%lf", funk(x, h));
}

double funk(double x, double shag) {
double y=0;
for (x = a; x <= b; x += shag) {
if (x > 1)
y = x + sqrt(1 + fabs(cos(x)));
else if ((x >= -0.5) && (x <= 1))
y = x;
else
y = x * x + 2;
}
return y;
}

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

304 Кб, 1280x850

02 Дек, 14:26 #86 #886297

Аноны, помогите сделать защиту ввода в си. Использую gcc. Нужно, чтобы можно было вводить только числа(любые), если вводишь другую хуйню, должно появляться сообщение какое-либо. Прочитал всякие гайды по си- там расскказывают про массивы, переменные, ссылки, но не написано, как делать защиту. В гуголе трудно найти, там когда пишешь си, выдает резуьтаты с++, а там я не знаю синтаксис.

Ответы>>886302>>886303

02 Дек, 14:39 #87 #886302

>>886297
Прикольно там у тебя

02 Дек, 14:44 #88 #886303

>>886297
Читай строку@парси ахтунг говнокод: http://ideone.com/UfwAoC

Ответы>>886316>>886341

02 Дек, 14:59 #89 #886316

>>886303
Все понял, спс

02 Дек, 15:27 #90 #886341

>>886303
Хули так сложно? scanf + восстановление после облома

Ответы>>886345

02 Дек, 15:35 #91 #886345

>>886341
scanf - это продукт нечеловеческой логики, созданный для написания лаб. Парсить этим что-то в нормальном коде будет только полный идиот. Алсо, "восстановление" после scanf - само по себе задача. Если у тебя другой опыт, и ты умеешь пользоваться scanf красиво - научи.

Ответы>>886348

02 Дек, 15:37 #92 #886348

>>886345
>"восстановление" после scanf - само по себе задача.
Ага, прям тема для PhD.
getchar() в цикле до '\n' (или EOF), т.е. просто сжираем проблемную строку.

Ответы>>886350>>886351

02 Дек, 15:42 #93 #886350

>>886348
>проблемную строку
*проблемный ввод

02 Дек, 15:44 #94 #886351

>>886348
Ну это понятно. Но я с fgets() могу обработать ситуацию "юзер вводит матрицу 4 столбца 3 строки", на последней строке он ввел хуйню, а с scanf() только одному Томпсону известно, что там юзер ввел, и сколько раз он ткнул Enter.

02 Дек, 16:48 #95 #886403

сучий хелловорлд с sdl не хочет коньеплироваться!

02 Дек, 17:53 #96 #886433

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

Ответы>>886512

02 Дек, 18:47 #97 #886460

>>884550
/thread

02 Дек, 20:44 #98 #886512

>>886433
>ни одного аргумента, ни одного опровергающего факта
читай внимательно

52 Кб, 538x487

02 Дек, 22:08 #99 #886568

Сап, нужна срочная помощь.
Язык: C (с использованием библиотек CS50 (одна команда GetInt, которая заменяет scanf)
Задание: создать матрицу 3 на 3 (сделано), вывести на экран (сделано), найти наибольший элемент каждой строки (не могу додуматься как это сделать)
Всем откликнувшимся + к карме и личная благодарочка
http://ideone.com/9BiEss

Ответы>>886579>>886625>>886627

02 Дек, 22:30 #100 #886579

>>886568
Способы оплаты?

Ответы>>886625

02 Дек, 23:35 #101 #886625

>>886568
сделаю дешевле чем этот >>886579

02 Дек, 23:39 #102 #886627

>>886568
Ну во-первых пересмотри серию Cs50 где говорят о сортировке (в 2015 была третья, сейчас не знаю)
Во-вторых хотел бы сам узнать мнение анонсов об этом курсе.
В третьих, если сдаёшься смотри под спойлер.
Тебе нужен такой же вложенный цикл как те что уже есть. Во внутреннем цикле берёшь текущее число и сравниваешь с тем которое у тебя будет считаться максимальным (изначально можно взять ноль.) То есть дословно берёшь элемент массива и сравниваешь его с нулем. Он больше нуля? тогда записывашь его вместо нуля. Смотришь следующий и сравниваешь с тем что у тебя записано вместо нуля.

Ответы>>886654>>886749>>895641

47 Кб, 493x740

02 Дек, 23:41 #103 #886631

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

03 Дек, 00:43 #104 #886654

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

03 Дек, 00:47 #105 #886657

Я написал программу на сырых сокетах для сниффинга IP-пакетов. Мне нужно сделать фильтрацию по IP:PORT. Как ивлечь порт из этих IP-пакетов? Порты же относятся к протоколу TCP или UDP.

Ответы>>886664>>886930

03 Дек, 01:00 #106 #886664

>>886657
Ну и собирай себе из них TCP/UDP пакеты, и парси их заголовок.

03 Дек, 05:17 #107 #886749

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

03 Дек, 14:58 #108 #886930

>>886657
вот тебе пример для UDP:
[code lang="с"]
int recvSocket = socket(AF_INET, SOCK_RAW, IPPROTO_UDP);
while(1)
{
int data_size = recvfrom(recvSocket , rBuf, 65536, 0 , NULL, NULL);
if (data_size < IPHDR_SIZE + UDPHDR_SIZE)
continue;

PIPHDR iphh = (PIPHDR)rBuf;
int iphdrlen = iphh->ihl4;

PUDPHDR udphh=(PUDPHDR)(rBuf + iphdrlen);
U8 pld = (U8*)(rBuf + iphdrlen + UDPHDR_SIZE);

U32 rSrcIP = ntohl(iphh->saddr);
U32 rDstIP = ntohl(iphh->daddr);
U16 rSrcPort = ntohs(udphh->source);
U16 rDstPort = ntohs(udphh->dest);
U16 rLen = ntohs(udphh->len);
U16 pldLen = rLen - UDPHDR_SIZE;

// пример фильтрации по порту источника
if (srcPort != 0 && rSrcPort != srcPort)
continue;

}
[/code]

03 Дек, 14:58 #108 #886930

>>886657
вот тебе пример для UDP:
[code lang="с"]
int recvSocket = socket(AF_INET, SOCK_RAW, IPPROTO_UDP);
while(1)
{
int data_size = recvfrom(recvSocket , rBuf, 65536, 0 , NULL, NULL);
if (data_size < IPHDR_SIZE + UDPHDR_SIZE)
continue;

PIPHDR iphh = (PIPHDR)rBuf;
int iphdrlen = iphh->ihl4;

PUDPHDR udphh=(PUDPHDR)(rBuf + iphdrlen);
U8 pld = (U8*)(rBuf + iphdrlen + UDPHDR_SIZE);

U32 rSrcIP = ntohl(iphh->saddr);
U32 rDstIP = ntohl(iphh->daddr);
U16 rSrcPort = ntohs(udphh->source);
U16 rDstPort = ntohs(udphh->dest);
U16 rLen = ntohs(udphh->len);
U16 pldLen = rLen - UDPHDR_SIZE;

// пример фильтрации по порту источника
if (srcPort != 0 && rSrcPort != srcPort)
continue;

}
[/code]

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

03 Дек, 18:26 #109 #887095

>>886930
> PIPHDR
> PUDPHDR
Они там что, блядь, упарывали, когда названия придумывали?

Ответы>>887098

03 Дек, 18:32 #110 #887098

>>887095
Хунгерская нотация.

03 Дек, 18:39 #111 #887108

>>886930
А можешь найти пример сканирования пакетов по сигнатурам? http://pastebin.com/zuY2hD5e

Мне нужно написать программу, которая ищет в пакетах, например, vk.com или VKONTAKTE и убивает пакеты, в которых есть такие данные. В моем коде пакеты с такими сигнатурами почему-то проходят.

Я тестировал функцию поиска сигнатуры в данных. Она находит подстроку в тестовой строке. Видимо, при обработке пакетов я ищу сигнатуры где-то не там.

Ответы>>887239

03 Дек, 20:18 #112 #887166

Не могу в арифметику указателей.

Есть структура, в которой нужно хранить пару чисел и два динамических массива чисел. Смысл вроде понимаю: в структуре храним указатель на указатель, который указывает на массив, но выразить в коде не могу. Заготовка кода и его скрин прилагаются. Чтобы не запутать, должен сказать, что pointers в структуре это указатели на верхушки стеков, т.е. просто массив чисел. Проблема в районе 26-27 строк.

Что я не так делаю?

https://ideone.com/rADa2g

Ответы>>887181

11 Кб, 601x290

03 Дек, 20:37 #113 #887180

Погромисты ,хелп
Есть 2 цикла,один выводит х от середины интервала до начала и значение y , другой соответственно x от середины до конца.
Как захуярить табличку с четырьмя столбцами, а не с двумя,как сказать компу чтобы переносил,диапазон в нужное место?
Вот кусок кода:
for (x=0;x>=a;x=x-h)
{
fprintf(out,"| x= %lf | y= %lf |",x,funс(x));
fprintf(out,"\n");
}
for (x=0;x<=b;x=x+h)
{
fprintf(out,"| x= %lf | y= %lf |",x,funс(x));
fprintf(out,"\n");
}

Ответы>>887181>>887218

03 Дек, 20:39 #114 #887181

>>887166
Нихуя не понял. Попробуй рассказать, зачем тебе это нужно. Для динамических массивов достаточно иметь pointer/length/capacity на каждый. И никаких указателей на указатель.

>>887180
Накапливай данные. Или сделай один цикл с одним счетчиком, а x вычисляй для каждого случая в теле цикла.

Ответы>>887194>>887196

03 Дек, 21:02 #115 #887194

>>887181
Не понял,у меня же х каждый раз меняется,как я его могу отдельно считать ?
Можешь код поправить?Уже 2-ой день мучаюсь .
У меня есть только один вариант, это сделать 2 параллельных цикла,чтобы выдавало
вывод(1) вывод(2) перевод строки,но я та не умеют,да и мне кажется все намного проще

58 Кб, 648x774

03 Дек, 21:04 #116 #887196

>>887181
Нужно написать и инициализировать структуру с двумя динамическими массивами. Решаю задачку на вписывание N стеков в массив.

Не понимаю, как тут корректно звездочки расставить. Кстати, пикча в прошлый раз отклеилась.

Ответы>>887198>>887200>>887202

03 Дек, 21:05 #117 #887198

>>887196
На пике CLion

Ответы>>887230

03 Дек, 21:05 #118 #887200

>>887196
Зачем эти касты для malloc?

Ответы>>887230

03 Дек, 21:08 #119 #887202

>>887196
Я все еще не понимаю, зачем тебе указатели на указатель: http://ideone.com/gK690t

Ответы>>887230

03 Дек, 21:24 #120 #887218

>>887180
Ну если у тебя количество элементов у двух циклов одинаковое, почему бы не сделать так: http://ideone.com/BbbMmF

Ответы>>887223

03 Дек, 21:29 #121 #887223

>>887218
Спасибо.
Щас попробую

03 Дек, 21:34 #122 #887230

>>887198
Ты прав.
>>887200
Потому что пока только учусь делать правильно, наверняка это можно сделать лучше.
>>887202
Не ожидал такого разжевывания. Указатель на указатель нужен, потому что пишу как мудак. С радостью обойдусь без него. Твое решение буду сейчас изучать, будет полезно, спасибо. Сейчас было интересно, как исправить ту мою заготовку, просто в рамках обучения. Не меняя структуры, просто исправив указатели. Будет наглостью попросить такой вариант?

Ответы>>887311

03 Дек, 21:42 #123 #887239

>>887108
>Мне нужно написать программу, которая ищет в пакетах, например, vk.com или VKONTAKTE
ну ищи в пакете через strstr()
>и убивает пакеты
сниффер не может убить пакет. Максимум можно послать RST пакет чтоб оборвать тсп соединение.
>В моем коде пакеты с такими сигнатурами почему-то проходят.
>Видимо, при обработке пакетов я ищу сигнатуры где-то не там.
Скорее всего ты сосешь из-за https.

Ответы>>887278>>887296

03 Дек, 22:50 #124 #887278

>>887239
>Скорее всего ты сосешь из-за https
В хекс-дампе я вижу адреса серверов вконтача.

Ответы>>887296

03 Дек, 23:24 #125 #887296

>>887239
>>887278
Как минимум, в https есть SNI, поэтому имя хоста в одном из первых пакетов найти можно.

> В хекс-дампе я вижу адреса серверов вконтача.
Уверен, что это не DNS?

03 Дек, 23:56 #126 #887311

>>887230
> Не меняя структуры, просто исправив указатели
Не могу поправить, потому что я не понимаю, что ты хочешь сделать. Могу предположить что-нибудь вроде этого: http://ideone.com/C6PObS В структуру добавил sizes, потому что чтобы назначить корректные указатели на начало куска со стеком в массиве данных, тебе нужно сначала выделить этот массив, а выделить его ты можешь только узнав его общую длину, т.е., после цикла.

Ответы>>887350

04 Дек, 00:56 #127 #887350

>>887311
Спасибо! Мне было важно понять именно синтаксис этих операций, а задумка у меня там на самом деле не самая очевидная получилась. Завтра доделаю и покажу тогда, для позитивного фидбэка.

04 Дек, 18:33 #128 #887847

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

for (i = 0; i < 256; sbox = (BYTE)i++);

Ответы>>887849

04 Дек, 18:36 #129 #887849

>>887847
Где ты тут видишь неопределенный порядок вычисления?

Ответы>>887866

04 Дек, 18:44 #130 #887866

>>887849
У меня компилятор неправильно инициализировал нулевой элемент.

Ответы>>887868

04 Дек, 18:44 #131 #887868

>>887866
В смысле, при запуске нулевой элемент инициализаруется не так, как задумано.

Ответы>>887869

04 Дек, 18:45 #132 #887869

>>887868
Возможно, ошибка где-то в другом месте. Здесь все правильно.

18 Кб, 363x1079

04 Дек, 20:18 #133 #887941

Вчерашний clion-не-могу-в-указатели-кун на связи.

Задачку про стеки завернутые в массив решил. http://ideone.com/RvKV8e

Обработку ввода и динамическое расширение добавлять не стал. Зато написал такую структуру, чтобы это все было легко сделать. Удивлен, что дебагер в IDE не позволяет смотреть содержимое массива, под который динамически выделена память, из-за этого столько вопросов вчера было. Я думал, что неправильно выделяю память.

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

Ответы>>888042

16 Кб, 524x236

04 Дек, 21:18 #134 #887973

Анон, почему при запуске этого кода возникает ошибка на пикче? http://ideone.com/NMeQrB

Что не так с конвенциями вызова? Когда добавляю pop eax, она исчезает.

Ответы>>888026

04 Дек, 21:53 #135 #887994

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

http://ideone.com/OmHyJR

Ответы>>888009

04 Дек, 22:06 #136 #888009

>>887994
А, видимо, эо из-за отсутствия ExitProcess в конце шеллкода.

Ответы>>888026

04 Дек, 22:24 #137 #888026

>>887973
>>887973
Ты положил в стек 4 байта (саму строку с "cmd", не указатель) и 4+4 байт аргументов для WinMain. WinMain прибрала за собой 8 байт, а твои 4 байта убирать тебе самому, это не аргументы, это данные. Сделай какой-нибудь pop edx после ввызова.

>>888009
> А, видимо, эо из-за отсутствия ExitProcess в конце шеллкода.
Именно. Но можешь просто retn воткнуть.

Ответы>>888027

sage 04 Дек, 22:25 #138 #888027

>>888026
*WinExec

04 Дек, 22:37 #139 #888042

>>887941
> схема массива
Начнем с того, что тебе никто не обещал, что указатель влезет в int (и он таки не влезает на 64-битных системах). Ты бы хоть (u)intptr_t использовал что ли или индексы вместо указателей хранил бы. Хотя лучше не стоит, этот подход ущербен целиком и полностью. Поэтому начиная со строки 20 можно уже не читать. Заодно можешь пояснить, зачем городить комментарии про схему массива, когда можно написать эту "схему массива" описать средствами языка, т.е., структурами? Причем не только описать, но и использовать.

Ответы>>888153

05 Дек, 00:39 #140 #888123

Блджад, я убил фаерфокс инжектом. http://ideone.com/AwswYd

Как правильно заканчивать выполнение шеллкода? Если вызывать ExitProcess, то, видимо, закрывается процесс, в адресное пространство которого сделан инжект. Если в конец вставить опкод ret (0xC3), то что он берет со стека?

Ответы>>888127

05 Дек, 00:46 #141 #888127

>>888123
> Если вызывать ExitProcess, то, видимо, закрывается процесс
Внезапно, да?

> Если в конец вставить опкод ret (0xC3), то что он берет со стека?
Адрес возврата. Если код был инжектнут через CreateRemoteThread, то оно выйдет обратно в заглушку системную, которая тебя и запустила, и она сделает ExitThread. Можешь сам ExitThread сделать.

Ответы>>888130>>888132

sage 05 Дек, 00:48 #142 #888130

>>888127
А, черт, тебе же retn 4 нужен, у ThreadProc один аргумент, и это stdcall, поэтому его за собой из стека убрать нужно.

05 Дек, 00:50 #143 #888132

>>888127
>Внезапно, да?
loled nemnoshk

05 Дек, 00:54 #144 #888135

О, вроде, все норм. Фаерфокс работает, шелл получен.

05 Дек, 00:56 #145 #888136

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

Ответы>>888208

05 Дек, 01:02 #146 #888140

Все равно как-то через раз появляется шелл, а процесс иногда крашится.

05 Дек, 01:23 #147 #888153

>>888042
>Начнем с того, что тебе никто не обещал, что указатель влезет в int (и он таки не влезает на 64-битных системах). Ты бы хоть (u)intptr_t использовал что ли
Не знал как это работает. Буду изучать.
>зачем городить комментарии про схему массива, когда можно написать эту "схему массива" описать средствами языка, т.е., структурами? Причем не только описать, но и использовать.
По условию задачи нужно реализовать 3 стека в рамках одного массива. У меня не получилось придумать структуру, в которой было бы меньше 3 массивов: сами стеки, указатели на верхушки и размерности, а это выходит за рамки условий.

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

Ответы>>888156

05 Дек, 01:40 #148 #888156

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

> структура с динамически выделенными областями будет распределена по памяти как получится. Это так?
Да, все правильно. Если несколько раз вызовешь маллок, даже при самом удачном стечении обстоятельств между областями памяти, скорее всего, будут служебные данные аллокатора.

05 Дек, 05:50 #149 #888208

>>888136
В сорцах зевса видел подобное. Насколько это работоспособно в win > 7 - хз.

05 Дек, 06:19 #150 #888214

http://pastebin.com/VXXf6HrB
Почему компилятор ругается, что я в строке 17 передаю too many аргументов в функцию?

Ответы>>888215>>888216

05 Дек, 06:20 #151 #888215

>>888214
Компилятор TCC

05 Дек, 06:27 #152 #888216

>>888214
Потому что ты сам объявил функцию с одним аргументом в самом верху файла:
int getline(char linef[]);
Конфликтующие декларации - это так-то ошибка, но TCC слишком тупой, чтобы сказать об этом.

Ответы>>888217

05 Дек, 06:30 #153 #888217

>>888216
Спасибо. Теперь работает.

Ответы>>888218

05 Дек, 06:35 #154 #888218

>>888217
Существует стандартная функция getline, не советую называть так свою.

Ответы>>888219>>888220>>888226

05 Дек, 06:36 #155 #888219

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

05 Дек, 06:37 #156 #888220

>>888218
Это был неработающий пример из книги, указанной в шапке. Там ошибок в таких примерах ояебу. И я еще первую главу не осилил.

Ответы>>888221

05 Дек, 06:47 #157 #888221

>>888220
Которая книга?

Ответы>>888224

05 Дек, 06:49 #158 #888224

>>888221
Ритчи и Керниган. Язык программирования Си. Третье издание.

Ответы>>888226

05 Дек, 07:05 #159 #888226

>>888224
> Это был неработающий пример из книги, указанной в шапке.
Где на пике неправильное объявление getline? Алсо, >>888218 не совсем прав. Функцию так называть не стоит, есть такая стандартная, но это до сих пор не стандарт Си. Если кто-то срет своими расширениями в stdio.h - это их проблемы.

Ответы>>888227

177 Кб, 671x461

05 Дек, 07:05 #160 #888227

>>888226
Бля, пик забыл.

Ответы>>888234

05 Дек, 07:52 #161 #888234

>>888227
У меня учебник на русском и
int getline( char [], int MAXLINE)
вообще не компилируется.

Ответы>>888235>>888237

05 Дек, 07:52 #162 #888235

>>888234
* char line[]

05 Дек, 07:57 #163 #888237

>>888234
Не читай на русском, там ошибки и говно

Ответы>>888238

05 Дек, 08:04 #164 #888238

>>888237
Май инглиш ис нот вери велл. Ай трай лëрнинг, бат ай ду ит нот вери фаст.

Ответы>>888239

05 Дек, 08:05 #165 #888239

>>888238
Открой книги парралельно, примеры перепечатывай из оригинала

05 Дек, 23:22 #166 #888815

Анон, есть две программы:

explot: http://ideone.com/oKEt5F
bugged: http://ideone.com/fcJqmk

Я хочу вызвать функцию test в программу bugged второй раз. При отключенной рандомизации базового адреса функция test у меня располагается по адресу 401000, поэтому я переписываю адрес возврата этим значением в обратном порядке. Адрес возврата находится на расстоянии 28 байт от начала буфера.

Заюзать баг пытаюсь так: exploit.exe | bugged.exe в виндовой консоли. Почему программу крашится при этом?

Сами программы: http://rgho.st/7tH4pQfXY и http://rgho.st/8jrsVVBcv

Ответы>>888826

05 Дек, 23:55 #167 #888826

>>888815
1) В строке big у тебя закодирован адрес возврата 0x401001, а не 0x401000, т.е., ты пропускаешь push ebp, и после возврата стек пидорасит.
2) main() возвращается в CRT-шный стаб, который чистит стек (3 аргумента для main()) и вызывает exit(). Твой main() возвращается в test(), а test() в результате пытается вернуться по адресу, численно равному argc.

И вообще, с такими проблемами возьми OllyDbg/x64dbg и потрейси, не нужно вычислять в уме и гадать на кофейной гуще, почему падает, когда можно просто посмотреть.

Ответы>>888832>>888833>>888834

06 Дек, 00:03 #168 #888832

>>888826
>В строке big у тебя закодирован адрес возврата 0x401001, а не 0x401000, т.е., ты пропускаешь push ebp, и после возврата стек пидорасит.
Да, но если я буду передавать 0x401000, то нулевой байт будет означать конец строки.

06 Дек, 00:04 #169 #888833

>>888826
У меня второй вызов test вообще не происходит. Если бы просто пидорасило программу, но были оба вызова, меня бы это устроило пока что.

Ответы>>888838

06 Дек, 00:05 #170 #888834

>>888826
>И вообще, с такими проблемами возьми OllyDbg
Как там передать аргументы командной строки с непечатаемыми символами?

Ответы>>888838

06 Дек, 00:08 #171 #888838

>>888833
> У меня второй вызов test вообще не происходит.
Хз, у меня работает. Воткнуть fflush(stdout) после puts() пробовал?

>>888834
> Как там передать аргументы командной строки с непечатаемыми символами?
Устанавливаешь ольку как JIT-дебаггер (Options-Just in time, и Confirmation там выключи на первое время), в bugged.c в main() втыкаешь __asm __emit 0xcc; или DebugBreak() или еще какую-нибудь хуйню. Запускаешь, как обычно запускаешь, оно свалится на int3 прямо в отладчик.

Ответы>>888843

107 Кб, 1262x815

06 Дек, 00:18 #172 #888843

>>888838
>Запускаешь, как обычно запускаешь, оно свалится на int3 прямо в отладчик.
У меня свалилось в ntdll.

http://ideone.com/6qjWLN

Ответы>>888850

06 Дек, 00:30 #173 #888850

>>888843
Странно. F8 потыкать пробовал? В крайнем случае ты всегда можешь заменить свой gets какой-нибудь memcpy() и притвориться, что это был сплоит.

06 Дек, 01:22 #174 #888870

Не пойму, почему после успешного инжекта в процесс управление не передается из блока __try в блок __finally? http://ideone.com/4DUG8S

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

https://msdn.microsoft.com/ru-ru/library/9xtt5hxz.aspx

Ответы>>888871

06 Дек, 01:29 #175 #888871

>>888870
А, нет. Похоже, все нормально. Это отладчик неправильно отображает работу с SEH.

06 Дек, 12:15 #176 #889063

Анон, внутри либы HTTP-запросов, к примеру CURL (да и любой другой: питоновской urllib, допустим), под капотом всегда используются TCP-сокеты, так? Просто эта либа включает реализацию спецификации HTTP, правильно я понимаю?

Ответы>>889114

06 Дек, 13:15 #177 #889114

>>889063
Da.

06 Дек, 19:08 #178 #889330

http://ideone.com/M9NCbD
Какая функция читабельней?

Ответы>>889413

06 Дек, 19:26 #179 #889343

Как вкатиться в написание драйверов под win32 ради заработка и интересного занятия? Какие скиллы нужны для этого и насколько глубоко надо знать winapi? А главное, как практиковаться при отсутствии железа, к которому можно было бы написать простые дрова?

Ответы>>889358>>889375>>889931>>890520

06 Дек, 19:39 #180 #889358

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

Ответы>>889374

06 Дек, 19:58 #181 #889374

>>889358
К этим задротам не ходи труЪ искатели гениев за копейки, аутисты-линуксоиды

06 Дек, 19:58 #182 #889375

>>889343
>сишка
>win32
Выбери одно из двух, пож.

Ответы>>889378>>889379

06 Дек, 20:00 #183 #889378

>>889375
Внезапно, драйвера под Windows все еще часто на сишке пишутся, да и сама Windows тоже не на C# сделана.

Ответы>>889382>>890518

06 Дек, 20:00 #184 #889379

>>889375
Лолшто.

Ответы>>889382

06 Дек, 20:06 #185 #889382

>>889378
>>889379
Там уже от настоящей сишки не осталось ничего.

Ответы>>889383>>889406

06 Дек, 20:07 #186 #889383

>>889382
А настоящая сишка - это как?

Ответы>>889407

06 Дек, 20:40 #187 #889406

>>889382
Это равносильно как сказать, что boost или qt - это не кресты

Ответы>>889409>>889411

06 Дек, 20:42 #188 #889407

>>889383
Текст мелкими буквами, структуры данных с большой буквы, скобки в стиле Д. Ритчи, ну и так далее. Желательно ещё и API назвать по стандартам (кстати, в MS QuickC так и было), и небольшие заимствования из плюсов, где они не уродуют внешний вид.

Ответы>>889413

06 Дек, 20:43 #189 #889409

>>889406
Это как раз кресты, а вот насчёт MFC 90-х годов я не уверен.

06 Дек, 20:46 #190 #889411

>>889406
Qt творит мерзости, там свой препроцессор, который делает говно-moc говно-файлы, так что формально это действительно не совсем C++.

06 Дек, 20:47 #191 #889413

>>889330
Будь проще, и люди к тебе потянутся: http://ideone.com/MBdqkk

>>889407
> API назвать по стандартам
Стандарт на API не подскажешь?

> уродуют внешний вид
Ахтунг, в треде ахтунгдеффачка, которой нужно крассиффенько, а не ехать.

Ответы>>889429>>889439

06 Дек, 21:07 #192 #889429

>>889413
>>API назвать по стандартам
>Стандарт на API не подскажешь?
Толку вам, йобанным в жоппу рабам Некрософта, вещять о СТАНДАРТАХ!!!!!11111ы

06 Дек, 21:14 #193 #889439

>>889413
При i == 1 переменная state тоже должна обнуляться. Такой вариант катит только если дублировать строку с обнулением в else if.

Ответы>>889456

06 Дек, 21:32 #194 #889456

>>889439
> катит только если дублировать строку с обнулением
Мда, тут я наебался. Ну и продублируй. Все равно будет читаемее, чем гото или распутывание fall-through.

Ответы>>889497

06 Дек, 22:14 #195 #889497

>>889456
Добра. А если будет подобная схема, но только с двумя/тремя сбрасываниями разных состояний, то как лучше поступить?

07 Дек, 08:14 #196 #889670

А где в вкашкечке тусуются сишные нубы?

Ответы>>889693

07 Дек, 09:57 #197 #889693

>>889670
Чем тебя здесь не устраивает? В вкашечке сплошные репосты и "зделойте мне лабу".

Ответы>>889700

07 Дек, 10:12 #198 #889700

>>889693
Ну так делай лабы, быдло, хули тебе не нравится.

Ответы>>889701

sage 07 Дек, 10:17 #199 #889701

>>889700
Я слишком стар для этого дерьма.

Ответы>>889705

07 Дек, 10:25 #200 #889705

>>889701
Вот и сиди в мейлопараше с червями-пидорами, суперстар хуев.

07 Дек, 10:26 #201 #889706

Хуясе лабаребенок обуглился

07 Дек, 16:31 #202 #889931

>>889343
>winapi
>драйвера
у меня для тебя плохие новости

08 Дек, 15:15 #203 #890475

> if (listen(sock, SOMAXCONN) == SOCKET_ERROR)

Такую обработку ошибок можно заменить на if (FAILED(...))?

08 Дек, 15:46 #204 #890504

Какой мёртвый тред.

08 Дек, 16:06 #205 #890518

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

08 Дек, 16:15 #206 #890520

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

Ответы>>890522

08 Дек, 16:17 #207 #890522

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

09 Дек, 20:30 #208 #891276

бамп годному треду

09 Дек, 23:47 #209 #891414

Тут могут помочь с советом по лабе или это не сюда?

Ответы>>891440

10 Дек, 00:42 #210 #891440

>>891414
Задавай вопрос, а не спрашивай о вопросе.

10 Дек, 02:31 #211 #891463

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

Локальные доки типа man libcurl это не то.

Ответы>>891711

4 Кб, 217x203

7 Кб, 404x308

10 Дек, 06:36 #212 #891496

>>881807 (OP)
Нужно вывести матрицу в консоле, я так понял нужно отталкиваться от центра, начиная с 1цы, а следующий элемент(2) будет ниже и правее центра на 1цу? Как записать, пока я достиг только вывода матрицы 1 2 3 4 5 6 на все 6 строк

Ответы>>891499>>891587

10 Дек, 07:10 #213 #891499

>>891496
Сделай функцию, которая рисует внешний треугольник (1 .. 4 .. 10 .. 12), зная его координаты его центра и его ширину, тогда внутренний треугольник нарисуешь этой же функцией. Для рисования самого треугольника можно завести переменные с шагом (сначала step_x = 1, step_y = 1, потом step_x = -1, ну ты понял), и менять эти переменные при достижении правой или левой границы, а при достижении исходной позиции выходить из функции. Хотя наверняка можно проще и оптимальнее.

10 Дек, 12:09 #214 #891587

>>891496
void narisovat_matricu(){
puts( "0 0 0 0 0 0 0");
puts( "0 0 0 0 0 0 0");
puts( "0 0 0 0 0 0 0");
puts( "0 0 0 1 0 0 0");
puts( "0 11 16 15 14 3 0");
puts( "10 9 8 7 6 5 4");
}

Ответы>>891628

10 Дек, 13:52 #215 #891628

>>891587
Хакр чтоле?

10 Дек, 15:32 #216 #891711

Вот важный вопрос >>891463, а вы тут хуйней маетесь.

Ответы>>891911

27 Кб, 980x589

10 Дек, 16:25 #217 #891755

Рейтаните стиль обработки ошибок. Допустимо ли делать столько вложенных условий?
Как вы обрабатываете ошибки?

Ответы>>891769

10 Дек, 16:39 #218 #891769

>>891755
> Допустимо ли делать столько вложенных условий?
С т.з. синтаксиса? Допустимо.
Но вообще принято основной код держать вне else, а из if-блоков, обрабатывающих ошибки, делать goto в конец функции.

> Как вы обрабатываете ошибки?
монады

10 Дек, 20:02 #219 #891911

>>891711
никто просто не понял, о чём ты спрашиваешь

147 Кб, 1270x382

11 Дек, 13:41 #220 #892361

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

Ответы>>892389>>892398>>892749

11 Дек, 14:04 #221 #892389

>>892361
while ((c=getchar())!=EOF) ...
Гугли приоритет операторов. У тебя сначала сравнивается поступивший от getchar символ со знаком конца файла, и результат этого сравнения (0 или 1) присваивается переменной, после чего ты выводишь (управляющий) символ с кодом 1 в сосноль.

Ответы>>892419

11 Дек, 14:07 #222 #892398

>>892361
Первый на моём опыте ньюфаг, который пользуется правильным типом для getchar()

Ответы>>892419

11 Дек, 14:34 #223 #892419

>>892398
Об этом было написано в учебнике спасибо, если это комплимент.
>>892389
Спасибо большое, анон, сейчас дома попробую исправить.

1929 Кб, 3771x2121

2378 Кб, 3771x2121

11 Дек, 19:15 #224 #892604

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

Ответы>>892607>>892610>>892656

11 Дек, 19:19 #225 #892607

>>892604
Потому что ты Enter в буфер не пишешь, а переходишь на ветку вывода, но и в формат printf после %s новую строку тоже не добавил.

sage 11 Дек, 19:21 #226 #892610

>>892604
А, и i ты передаешь в to_put_the_simbol_in_the_buffer() по значению, т.е., изменение i внутри этой функции на i внутри main() никак не влияет. Передавай указатель или возвращай новую i.

11 Дек, 20:52 #227 #892656

>>892604
хуйлуша осиль скрины на маке делать

Ответы>>892749

11 Дек, 23:26 #228 #892749

>>892656
Хуйлуша, я специально для подобных тебе умников извинился под спойлером. А скриншоты я осилил, не беспокойся >>892361, просто мне было неудобно делать скриншот именно тогда.. И у меня не мак.

12 Дек, 15:28 #229 #893037

struct shit {
int i;
};
typedef shit govno;

У меня есть такой код и мне нужно как-то присвоить переменной "i" какое-то число. В функциях присваивать нельзя, как поступить?

Ответы>>893049

12 Дек, 15:48 #230 #893049

>>893037
static govno govno1 = {666};

Ответы>>893097

12 Дек, 17:10 #231 #893097

>>893049
Не работает. Впрочем, я плохо поставил вопрос. Уточню, у меня такой код:
#include <stdio.h>

struct shit {
int i;
};
typedef shit govno;
static govno govno1 = {666};

int main()
{
govno *parasha
parasha = malloc(sizeof(govno));
printf("%d\n", parasha->i); // 1 а не 666, а надо 666. Повторяюсь, нельзя ничего делать присваивать в функциях.
return 0;
}

Ответы>>893105>>893113>>893278>>893282

12 Дек, 17:15 #232 #893105

>>893097
> govno *parasha
";" в конце забыл, это не ошибка.
> ... нельзя ничего делать присваивать ...
... нельзя ничего присваивать ...
fix

12 Дек, 17:24 #233 #893113

>>893097
Нифига не понял. Попробуй memcpy.

Ответы>>893115

12 Дек, 17:29 #234 #893115

>>893113
Да нет, она не подходит.

Слушай, а вот создаю я указатель, в нём точно всегда будет единичка? Можно не присваивать значение явно?

Ответы>>893125

sage 12 Дек, 17:46 #235 #893125

>>893115
Тебе скорее всего нужны кресты, в крестах есть конструкторы. В сишечке ты можешь лишь создать конструктор явно: обернуть malloc() в свою функцию create_govno(), которая будет создавать объект в куче, инициализировать и возвращать указатель. Сишники не видят в таком подходе ничего плохого.

Ответы>>893133

12 Дек, 17:59 #236 #893133

>>893125
Кресты считаю убогим языком.

Ладно, изолью проблему ещё более подробно, раз простого решения нет.
У меня есть тип с интом:
typedef struct type { int i; };

Указатель этого типа создаётся в мейне и отправляется в другую функцию:
int main()
{
type ptr;
func(ptr);
}

Теперь эта функция перво-наперво должна проверить поменялся ли инт в указателе или в мейне его никто не трогал. В целом я могу сделать так:
void func(type ptr)
{
if(ptr->i == 1) {
return 0;
}
...
}

Но по-моему это очень и очень плохо, т.к сам я этот элемент не трогал. Что скажешь? Есть решение?

Ответы>>893136>>893137>>893147

12 Дек, 18:04 #237 #893136

>>893133
Блядь, совсем забыл про макабу.

> type ptr;
type ★prt;

> void func(type ptr)
void func(type ★ptr);

12 Дек, 18:05 #238 #893137

>>893133
Ты какой-то закомплексованный.
Не тащи свои детские психологические травмы в мою няшную сишечку.

Ответы>>893138

12 Дек, 18:07 #239 #893138

>>893137
Ответь блядь нормально. Я не хочу говнокодить.

Ответы>>893142

12 Дек, 18:11 #240 #893142

>>893138
>присваивать нельзя но надо присвоить
>Я не хочу говнокодить.
Таблетки прими свои, шизофреник.

Ответы>>893145

12 Дек, 18:14 #241 #893145

>>893142
Не вырывай из контекста.
У меня задача проверить менялось ли значение в указателе или нет.

Ответы>>893147>>893153

12 Дек, 18:16 #242 #893147

>>893145
Хуение в хуезателе.
У тебя даже в указателе мусор, ебанько - >>893133

Ответы>>893151

12 Дек, 18:18 #243 #893151

>>893147
Пошёл нахуй, жирдяй.

Ответы>>893155

12 Дек, 18:19 #244 #893153

>>893145
> У меня задача проверить менялось ли значение в указателе или нет.
Положи туда два инта, а не один, а потом сравнивай. Это какая-то защита от патчинга памяти? Тогда не выделывайся, шифруй значения.

Ответы>>893158>>893164

12 Дек, 18:19 #245 #893155

>>893151
Ты не присваиваешь переменной ptr никакого значения, имбецил, там мусор.
Жалуйся в спортлото на злой и жестокий С.

Ответы>>893164

12 Дек, 18:21 #246 #893158

>>893153
Еще один.
Два дебила - это сила.
Бедная моя сишечка.

Ответы>>893162

12 Дек, 18:22 #247 #893162

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

Ответы>>893166

12 Дек, 18:23 #248 #893164

>>893153
Нужно проверить менялся ли вручную указатель.

>>893155
> Ты не присваиваешь переменной ptr никакого значения, имбецил, там мусор.
Да ладно нахуй? Гений хуев, ты заебал срать в тред. Код был примерный, чтобы мысль была понятна, мысленно впихни туда malloc и заткнись.

Ответы>>893165>>893166

12 Дек, 18:24 #249 #893165

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

Ответы>>893172

12 Дек, 18:25 #250 #893166

>>893162
>Я просто верю
А зря, пора уже взрослеть.
Люди - говно и дебилы, прими и смирись.
>>893164
>Код был примерный
Уровня /web
>чтобы мысль была понятна
>мысль
Шутку понял.
Смешно.

12 Дек, 18:33 #251 #893172

>>893165
> Менялся ли вручную указатель, ты можешь русским языком спросить у того, кто говнокодил код
А ты не подумал, что у меня библиотечка?

Вопрос снят, уже сам всё решил.

Ответы>>893178

12 Дек, 18:46 #252 #893178

>>893172
>уже сам всё решил.
Дебил дебилом - а все же не совсем.
Малаца!

Ответы>>893190

12 Дек, 19:25 #253 #893190

>>893178
Спасибо, мне приятно.

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

typedef struct type {
int i;
char c;
}

int main()
{
type ★ptr; // В памяти пока ничего нет от этого указателя, верно?
ptr = malloc(sizeof(type)); // А теперь в памяти зарезервировалось место для инта и чара, да?
prt = malloc(sizeof(type->i)); // А если так? При таком варианте я смогу работать с переменной i и никак не оповещать систему о том чаре? Никакого упадка производительности в любом виде помимо компиляции не будет?
}

Прошу не пиздить за возможные проёбы в синтаксисе и терминологии.

Ответы>>893193

12 Дек, 19:28 #254 #893193

>>893190
Ты экономишь на спичках и пытаешься сделать что-то очень странное. Пересмотри свой подход к кодингу. Так даже на асме не пишут.

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

Ответы>>893198

12 Дек, 19:34 #255 #893198

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

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

Ответы>>893200

12 Дек, 19:41 #256 #893200

>>893198
1) Строго говоря, ты обязан выделить как минимум sizeof(структура). Иначе, undefined behavior, гроб-гроб-кладбище, форматирование винта. На практике ничего плохого не случится.
2) Пока у тебя не миллионы таких структур, смысла в этом нет. На 64-битной системе менеджер кучи на указателях больше сожрет, чем вся твоя структура занимает.
3) Я бы не сказал, что выделение кусков структур - это няшно. Это пиздец полный. Сделай union хотя бы.

Ответы>>893204

12 Дек, 19:47 #257 #893204

>>893200
> Сделай union хотя бы.
Не совсем понимаю как конкретно это сделать в данной ситуации и что это даст ньюфаг я!. Объясни подробнее, пожалуйста.

Ответы>>893210

12 Дек, 20:01 #258 #893210

>>893204
> что это даст
Понимание читающими, что существуют два варианта структуры: с чаром и без.
union yoba {
int value;
struct {
int value;
char flag;
} complex_value;
}
В С99 и новее можно так еще:
struct yoba {
int value;
char something[];
}
sizeof для такой структуры равен sizeof(int), а something не учитывается, но ты можешь выделить для него как sizeof(yoba)+0, так и sizeof(yoba)+1 или даже +1048576 байт, и читать (подразумевая, что ты знаешь или можешь узнать, сколько ты выделял, и не будешь читать, если все же не выделил место под something).

Ответы>>893218

12 Дек, 20:15 #259 #893218

>>893210
Я запутался.

Та структура у меня будет состоять из двух типов-структур на два случая:
typedef struct GOVNO {
int i;
};
typedef struct MOCHA {
char c;
};

typedef struct type {
GOVNO raz;
MOCHA dva;
};

Для того, чтобы преобразовать это в union достаточно сделать так?:
typedef union type {
GOVNO raz;
MOCHA dva;
};

Или так?:
typedef union type {
GOVNO raz;
struct {
MOCHA dva;
} complex_value;
};

> В С99 и новее можно так еще:
А чем оно отличается от обычной структуры? Не вижу логики.

12 Дек, 20:15 #259 #893218

>>893210
Я запутался.

Та структура у меня будет состоять из двух типов-структур на два случая:
typedef struct GOVNO {
int i;
};
typedef struct MOCHA {
char c;
};

typedef struct type {
GOVNO raz;
MOCHA dva;
};

Для того, чтобы преобразовать это в union достаточно сделать так?:
typedef union type {
GOVNO raz;
MOCHA dva;
};

Или так?:
typedef union type {
GOVNO raz;
struct {
MOCHA dva;
} complex_value;
};

> В С99 и новее можно так еще:
А чем оно отличается от обычной структуры? Не вижу логики.

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

12 Дек, 21:28 #260 #893253

>>893218
Хотя стоп-стоп-стоп. Я в сотый раз всё обдумал и решил сделать по-другому.

Короче, будет одна typedef структура с разными перменными и в конце короче ещё две переменных, одна из которых будет использоваться в определённом указателе.
typedef struct type {
int i;
double d;
char c;
...

// Вот они две
int odin;
char dzva;
}

int main()
{
type ★ptr1;
type ★ptr2;

ptr1 = malloc(нужно выделить память на все элементы структуры + инту, но чар не трогать);
prt2 = malloc(наоборот, нужно выделить память на все элементы структуры + чару, но инт не трогать);
}

Можно это дело реализовать с помощью union?
И инт с чаром всего лишь примеры, на их местах будут другие типы.

Анончик, помоги, вопрос важный.

12 Дек, 21:28 #260 #893253

>>893218
Хотя стоп-стоп-стоп. Я в сотый раз всё обдумал и решил сделать по-другому.

Короче, будет одна typedef структура с разными перменными и в конце короче ещё две переменных, одна из которых будет использоваться в определённом указателе.
typedef struct type {
int i;
double d;
char c;
...

// Вот они две
int odin;
char dzva;
}

int main()
{
type ★ptr1;
type ★ptr2;

ptr1 = malloc(нужно выделить память на все элементы структуры + инту, но чар не трогать);
prt2 = malloc(наоборот, нужно выделить память на все элементы структуры + чару, но инт не трогать);
}

Можно это дело реализовать с помощью union?
И инт с чаром всего лишь примеры, на их местах будут другие типы.

Анончик, помоги, вопрос важный.

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

12 Дек, 22:03 #261 #893273

>>881807 (OP)
Планирую использовать C вместо MATLAB'a, какие подводные камни?

Ответы>>893275

12 Дек, 22:07 #262 #893275

>>893273
А нахуя? Фортран уж возьми если считать что-то будешь.

sage 12 Дек, 22:12 #263 #893278

>>893097
> struct shit
> typedef shit govno;
Ты вообще C учил?

Ответы>>893292

12 Дек, 22:28 #264 #893282

>>893097
> создает в функции динамический объект
> значения в функции нельзя присваивать
> как присвоить
Никак не присвоить. Нельзя.

почему ты всё время думаешь о говне и параше?

parasha = malloc(sizeof(govno));
(*parasha) = govno1;
printf("%d\n", parasha->i);

Ответы>>893292

12 Дек, 22:57 #265 #893292

>>893278
Ну забыл struct, ну бывает. Повторяю, код примерный.
> Прошу не пиздить за возможные проёбы в синтаксисе и терминологии.

>>893282
Помоги лучше с этим >>893253.

12 Дек, 23:13 #266 #893301

>>893253
typedef struct {
int i;
double d;
char c;
union {
int odin;
char dzva;
} either;
} type;

type ★ptr1 = malloc(sizeof(type));
type ★ptr2 = malloc(sizeof(type));
ptr1->i = 1;
ptr1->either.odin = 123;
ptr2->i = 2;
ptr2->either.dzva = 'x';

Начиная с C11 поддерживаются безымянные юнионы, т.е., either можно выкинуть из определения структуры и использования и делать просто ptr2->dzva = 'z';

Ответы>>893322>>893499

12 Дек, 23:51 #267 #893322

>>893301
> type ★ptr2 = malloc(sizeof(type));
Погоди, так это ты память для двух переменных освобождаешь? Union тут только для наглядности кода?

Ответы>>893487

13 Дек, 10:04 #268 #893487

>>893322
bump

Ответы>>893499

13 Дек, 10:30 #269 #893499

>>893487
union тут говорит, что у структуры может быть только int odin или char dzva, но не оба. Память выделяется под больший из них (sizeof(type.either) == sizeof(int) в данном случае). Ты экономишь байт на char (и проебываешь дохуя из-за выравнивания структруры>>893301 между i и d, между c и odin).

Ответы>>893602

13 Дек, 14:56 #270 #893602

>>893499
А почему я могу писать в две переменные?
typedef struct {
int i;
union {
int odin;
char dzva;
};
} type;

main()
{
type ★ptr = malloc(sizeof(type));
ptr->i = 1;

ptr->odin = 10;
ptr->dzva = 'c';

printf("%d\n", ptr->odin);
printf("%c\n", ptr->dzva);
}

нипанятна Я память неправильно выделяю?

Ответы>>893604

sage 13 Дек, 15:05 #271 #893604

>>893602
Ты можешь писать в любой член union, какой тебе больше понравится, но читать разрешено только тот, в который ты последний раз что-то записывал на практике можно читать из любого, если ты знаешь, что делаешь: union { float f; unsigned int i; } x; x.f = 1.0f; printf("%x\n", x.i);.

Ответы>>893607>>893610>>893612

13 Дек, 15:11 #272 #893607

>>893604
Я всё понял! Добра!

13 Дек, 15:20 #273 #893610

>>893604
> но читать разрешено только тот, в который ты последний раз что-то записывал
Кокрастыке в C разрешено, это в C++ не разрешено.

Ответы>>893621

13 Дек, 15:26 #274 #893612

>>893604
>на практике можно читать из любого, если ты знаешь, что делаешь: union { float f; unsigned int i; } x; x.f = 1.0f; printf("%x\n", x.i);.
Это не "на практике", это стандарт официально поддерживает type punning с помощью union.

Ответы>>893621

Как вставлять символ после каждой буквы в строках? 13 Дек, 15:30 #275 #893613

есть например строка
char str[10] = "Zdarova"
Как получить "Z!d!a!r!o!v!a!" не вводя руками офк,через цикл?

Ответы>>893616>>893619>>893621

13 Дек, 15:43 #276 #893616

>>893613
Здарова. Как сам?

Ответы>>893620

13 Дек, 15:43 #277 #893619

>>893613
Аллоцируешь новую строку длинной x2 от исходной, заполняешь циклом.

Ответы>>893622

13 Дек, 15:44 #278 #893620

>>893616
З!д!а!р!о!в!а!.! К!а!к! с!а!м!?!

sage 13 Дек, 15:44 #279 #893621

>>893610
>>893612
Да, перепутал. Но есть такая штука, как trap representation, и в той сноске, где разрешают type punning, тебе намекают, что может выйти конфуз.

>>893613
char c; while ((c = *ptr_to_str++) != '\0') { putchar(c); putchar('!'); }

Ответы>>893625>>893842

13 Дек, 15:44 #280 #893622

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

Ответы>>893626>>893629

13 Дек, 15:49 #281 #893625

>>893621
я так не умею
через strcat надо

13 Дек, 15:52 #282 #893626

>>893622
Посчитай длину строки, вот тебе и длина цикла.

Ответы>>893634

13 Дек, 15:55 #283 #893629

>>893622
const int size = strlen(str) * 2;

Ответы>>893633

13 Дек, 16:07 #284 #893633

>>893629
+1 для '\0' еще забыли.

13 Дек, 16:23 #285 #893634

>>893626
Да все я разобрался ,меня препод подъебал.
Говорит строку не надо нихуя менять,просто посимвольно выводишь ,символ - знак- символ - знак

Ответы>>893793

13 Дек, 21:14 #286 #893793

>>893634
>Говорит строку не надо нихуя менять,просто посимвольно выводишь ,символ - знак- символ - знак
А в чём проблема так сделать? Хули вы такие тупые все?

Алсо, научись пользоваться запятыми, блядь.

Ответы>>893803

10 Кб, 410x377

13 Дек, 21:31 #287 #893803

>>893793
Вот те бля! Я-то в программач совсем не могу, не учился нигде, ничего не умею, но я всё равно лучше тебя. Да. Я — элита. Я — доминатор. Бля, какой же я охуенный. И код тебе не покажу, потому что я так могу а ты нет. Да. Да.

Ответы>>893835

13 Дек, 22:13 #288 #893835

>>893803
> strlen в условии
> pritnf("%с")
Фу.

Ответы>>893839

13 Дек, 22:20 #289 #893839

>>893835
Как предлагаешь сделать? Ничего подходящего в string.h для вывода символов нет, на сколько я знаю.

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

Можно навелосипедить свою strlen, что ещё хуже.

Ответы>>893841>>893842

13 Дек, 22:21 #290 #893841

>>893839
> сравнении
условии
fix

13 Дек, 22:21 #291 #893842

>>893839
Совсем не нужно два раза бегать по строке, когда можно бегать один: >>893621

Ответы>>893845

13 Дек, 22:23 #292 #893845

>>893842
Согласен. Хороший код. Впрочем, как я уже выше говорил, я не могу в программач, просто хотел немного повысить ЧСВ на фоне неучей.

Ответы>>893847

sage 13 Дек, 22:24 #293 #893847

>>893845
Я точно по тем же самым причинам сижу итт, лол.

15 Кб, 660x446

14 Дек, 00:06 #294 #893899

14 Дек, 12:13 #295 #894114

Си.

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

int *arr[];
int i;

...
i++;
arr = num1;
...
i++
arr = num2;

и т.д. В целом такой способ вроде как работает, но компилятор срёт ворнингами, это вообще нормальный подход?

Ответы>>894115>>894180

14 Дек, 12:14 #296 #894115

>>894114
> arr = num1;
arr = num1;
> arr = num2;
arr = num2;

Извиняюся.

Ответы>>894116

14 Дек, 12:15 #297 #894116

>>894115
Блядь! Макаба сжирает скобки с i! Какого хуя?

Ещё попытка:
arr[ i ] = num1;

Ответы>>894117

14 Дек, 12:16 #298 #894117

>>894116
Вот, надеюсь всё понятно, сорян за каки в треде, это не я виноват.

14 Дек, 12:17 #299 #894119

>- Классика от Отцов: http://www.cypress.com/file/56651/download

Есть на русском?

Ответы>>894120

14 Дек, 12:19 #300 #894120

>>894119
Да, используй сперморепозиторий.

14 Дек, 14:27 #301 #894180

>>894114
Нет, это вообще не должно скомпилироваться (если ты размер у arr[]) не указываешь. А если указываешь, но превышаешь - будешь стек портить. Если количество элементов неизвестно - сделай очень большой массив или реализуй динамический: http://ideone.com/yNPNId

Ответы>>894338>>894644

14 Дек, 18:59 #302 #894338

>>894180
100000000 интовых указателей сколько примерно байт будут занимать? Именно если не маллочить им память, если маллочить, то 3.8G. Много пустых указателей это критично?

Ответы>>894346>>894429

14 Дек, 19:15 #303 #894346

>>894338
>100000000 интовых указателей
Что интовых что неинтовых вообще похуй.
>Именно если не маллочить им память
Что на стеке что из кучи вообще похуй тоже. В стеке переполнение стека словишь, из кучи аут оф мемори.
>Много пустых указателей это критично?
Много это сколько. Критично для чего?
Советую сначала научиться правильно задавать вопросы.

Ответы>>894353

14 Дек, 19:26 #304 #894353

>>894346
> Что на стеке что из кучи вообще похуй тоже. В стеке переполнение стека словишь, из кучи аут оф мемори.
Я, бля, совсем эту часть поста не понял. Поясни за стеки и как вообще проявляется то, про что ты написал.

> Много это сколько.
100000000

> Критично для чего?
Для потребления памяти, скорости работы, стабильности.

Ответы>>894429

14 Дек, 19:30 #305 #894355

В чем принципиальная разница работы фаерволла для ipv4 и ipv6?

14 Дек, 23:28 #306 #894429

>>894353
>>894338
> сколько примерно байт будут занимать
(4 или 8) * количество. Маллочить или не маллочить, разницы нет, память она и та же.

> Много пустых указателей это критично?
Если у тебя пустые указатели, зачем их хранить? Может быть, имеет смысл завести битсет (или дерево какое-нибудь), чтобы хранить только непустые указатели?
> 100000000
Зачем тебе столько? На что они будут указывать?

Ответы>>894448

14 Дек, 23:58 #307 #894447

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

> Если у тебя пустые указатели, зачем их хранить?
> Зачем тебе столько?
С запасом же. Всё что ты дальше написал я не понял, сложно.

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

Ответы>>894448>>894604>>894607

14 Дек, 23:58 #308 #894448

>>894447 ---> >>894429

15 Дек, 12:38 #309 #894604

>>894447
>Это можно как-то объяснить?
Можно.
Это ты писал свой графический тулкит для прыщей?

Ответы>>894637

15 Дек, 12:43 #310 #894607

>>894447
>С запасом же.
Лол, с каким запасом? На зиму?
>На другие указатели, которые будут постепенно появляться.
То есть у тебя указатели будут только на другие указатели указывать? Данные вообще не будет? Охуенно.

Ответы>>894637

15 Дек, 13:45 #311 #894637

>>894604
> Можно.
Как?

> Это ты писал свой графический тулкит для прыщей?
Да. Но тогда я, скорее, изучал теорию вывода графики в прыщиксе, написанием тулкита это назвать сложно. Сейчас же прорабатываю логику самого тулкита. Пока я пришёл к тому, что днём за днём пизжу всё у GTK. Вероятно в итоге у меня выйдет облегчённый GTK с примесью FLTK. А как ты меня задиванонил?

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

Ответы>>894644>>894655>>894678

15 Дек, 13:51 #312 #894644

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

Ответы>>894648

15 Дек, 13:58 #313 #894648

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

> Когда я говорил "с запасом", я имел в виду сотню "лишних" элементов, а не миллион.
Миллион там просто для примера.

Ответы>>894669>>894672

15 Дек, 14:18 #314 #894655

>>894637
>А как ты меня задиванонил?
Ебанутые вопросы и никакого понимания основ. Ты так нихуя не прочитал и никаких курсов не прошёл, судя по всему.

Ответы>>894672

sage 15 Дек, 14:45 #315 #894669

>>894648
> динамический массив
> выглядит как костыль
ШОК

Ответы>>894672

15 Дек, 14:47 #316 #894672

>>894648
> хотя, похоже, придётся делать именно так
Пришлось, всё таки это лучший способ, спасибо.

>>894655
> Ты так нихуя не прочитал и никаких курсов не прошёл, судя по всему.
Да. Я не могу ещё раз наворачивать книги, курсы. Я это уже делал! Если я буду повторно читать то, что уже знаю я быстро устану, мне надоест, проебу время, проебу силы, проебу мотивацию.
Ты наверно думаешь, что я вообще ничего по Си не читал, но это не так, я много чего читал по Си. Только тут есть небольшой камень в виде того, что человек не может запоминать ваще всё. Что-то да забывается. Это нормально.

>>894669
Ну ладно, ладно, извини.

15 Дек, 14:55 #317 #894676

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

Заранее объявлено так:
#define N 15
#define A -100
#define B 100

инициализация массива
...
вывод массива
...

int Sum(int *a, int l, int r)
{
return l ? Sum(a, l-1, r+a[ l-1 ]) : r;
}

int main()
...

И вот как тут быть? Можно даже просто наводку дать какую, а я сам додумаю.

Ответы>>894685

15 Дек, 14:58 #318 #894678

>>894637
>Эти указатели будут указывать на другие указатели, которые уже будут указывать на что-то осмысленное.
Лол, а зачем указатели на указатели на осмысленное, если можно сразу сделать указатели на осмысленное.

Ответы>>894690

15 Дек, 15:07 #319 #894685

>>894676
int Sum(int *a, l) {
return l ? Sum(a, l - 1) + (l%2 ? 0 : a[l]) : a[l];
}

Ответы>>894693>>894706

15 Дек, 15:15 #320 #894690

>>894678
У меня графический тулкит, библиотека. Чтобы с её помощью создать какой-то графический элемент, например кнопку, нужно сделать следующее:
#include "toolkit.h"
...
OBJ ☀button;
button = create_button();

Функция create_button в самом toolkit.h выглядит так:
OBJ ☀create_button()
{
OBJ ☀button;
button = malloc(sizeof(OBJ));
/ Дальше запись чего-то осмысленного в указатель /
...
return button;
}

Вся проблема в том, что за пределами функции create_button я не имею доступа к указателю button. Я его создаю, что-то с ним делаю и возвращаю во внешний мир забывая о нём. Но он мне нужен и в других частях библиотеки, вот я и решил сохранять указатель button в массив,
num++;
arr[num] = button;
и так во всех подобных функциях.

Можешь предложить способ лучше?

Ответы>>894708

15 Дек, 15:23 #321 #894693

>>894685
Не работает. А почему без r?

Ответы>>894696

15 Дек, 15:23 #322 #894696

>>894693
Точнее работает, но не всегда.

15 Дек, 15:51 #323 #894706

>>894685
Всё, разобрался, спасибо.

15 Дек, 15:53 #324 #894708

>>894690
>Но он мне нужен и в других частях библиотеки
Зачем? Ну сохранил ты указатель в глобальном массиве, и дальше что?

Ответы>>894713

12 Кб, 337x222

15 Дек, 16:10 #325 #894713

>>894708
А дальше я могу работать с ним! Из любой точки либы. Это необходимо.

Аноны, я нихуя не понял как работает динамический массив и сейчас пытаюсь запилить свой простой. Как осуществляется преобразование указателя в массив? В примере выше int изначально указатель "int *data;", но позже в его пишут как в массив "array.data[ i ]". За счёт чего это происходит? Не бейте сильно, я устал, плохо соображаю, нужно пойти поспать.

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

Ответы>>894723>>894749

15 Дек, 16:24 #326 #894723

>>894713
Бля, ну тебя нахуй, наркоман.

Ответы>>894726

15 Дек, 16:27 #327 #894726

>>894723
Ну Анооончик, объясни как эта хуйня работает, это мой последний вопрос в этом треде.

Ответы>>894742

15 Дек, 16:50 #328 #894742

>>894726
operator [] встроен для си подобных масивов - эт о фактически операция над поинтерами
T& operator[](T, std::ptrdiff_t);
T& operator[](std::ptrdiff_t, T);

и если вспомнить правила арифметики для указателей то a это то же самое что (a + i)

>For every object type T (possibly cv-qualified), the following function signature participates in overload resolution:

>T& operator[](T, std::ptrdiff_t);
T& operator[](std::ptrdiff_t, T);
The non-pointer operand may be any expression of integral or unscoped enumeration type, it is implicitly converted to std::ptrdiff_t. The expression E1[E2] is exactly identical to the expression (E1 + E2), that is, the pointer operand (which may be a result of array-to-pointer conversion, and which must point to an element of some array or one past the end) is adjusted to point to another element of the same array, following the rules of pointer arithmetics, and is then dereferenced.

>When applied to an array, the subscript expression is an lvalue if the array is an lvalue, and an xvalue if it isn't (since C++11). When applied to a pointer, the subscript expression is always an lvalue.

>The type T is not allowed to be an incomplete type, even if the size or internal structure of T is never used, as in &x[0].

Ответы>>894745>>895651

15 Дек, 16:52 #329 #894745

>>894742
> ☀(a + i)

sage 15 Дек, 16:54 #330 #894749

>>894713
Ты передаешь objects в v_add_element_to_arr по значению. Что бы ты там с ним не делал, ты меняешь содержимое только локальной копии. Посмотри, как в примере на ideone, там указатель на массив передается, а не сам массив.

15 Дек, 19:15 #331 #894835

Блять, я не перестаю охуевать с сосача. Даже в сишном треде 99 долбоебов и зделайте мне лабу из 100.

Ответы>>894843>>894879

15 Дек, 19:33 #332 #894843

>>894835
>Даже
Слово какое-то неуместное

Ответы>>894871

15 Дек, 19:58 #333 #894871

>>894843
Все настолько плохо? Сука, после смерти цэ на ИБ делать абсолютно нехуй.

sage 15 Дек, 20:08 #334 #894879

>>894835
Если не отвечать ньюфагам, треды будут уплывать. Мы уже обсудили все, что могли. Хотя можно что-нибудь начать пилить совместно - утилиту какую-нибудь или гайд по сишечке уровня /pr/.

Ответы>>895106>>895190>>895759

15 Дек, 20:58 #335 #894933

Пацантрэ, поясните вот мне за msys2 и mingw. Поставил их - msys2 не видит mingw, хотя путь в переменную среды записал, в fstab тоже прописал. Пишу gcc, он мне говорит, что не найдена такая команда. Из msys2 можно пакеты поставить, но интернетов нет, а в оффлайне хуй знает как это сделать.
Ну ладно, в mingw есть msys1, допустим, им хочу собрать проект. Есть исходники, есть cmakelist. С visual studio все понятно - cmake сбацает проект, открою да сконпелирую. А как всё то же самое повторить с mingw?

16 Дек, 00:00 #336 #895046

Ребят, один вопрос
Даны три последовательности X, Y, Z из n действительных чисел ( n < 200). Вычислить величину (а,a) - (b,c), где а обозначает ту из последовательностей X, Y, Z, в которой самый большой минимальный элемент, b и c обозначают две другие последовательности.

>Вычислить величину (а,a) - (b,c)
Как это понять и сделать? Это вообще нормально?

16 Дек, 00:20 #337 #895059

Блять, я то думал тут будет тред суровых бородачей, а тут школота задачки решает.

Ответы>>895108

16 Дек, 02:32 #338 #895106

>>894879
>Мы уже обсудили все, что могли.
Кто это - мы?

Ответы>>895132

16 Дек, 02:33 #339 #895108

>>895059
есть ещё кулхацкеры и наркоманы

16 Дек, 04:59 #340 #895132

>>895106
>Кто это - мы
Я и он

16 Дек, 08:35 #341 #895149

Помогите с задачами на C
1. Найти частное произведения и суммы нечетных делителей натурального числа.
2.Определить в одномерном массиве число соседств из двух положительных чисел.
3. Дана действительная матрица размером m на n. Определить числа b0, b1,...bn равные соответственно разностям наибольших и наименьших значений элементов строк.
4. Даны два слова. Для каждой буквы 1-го слова определить, входит ли она во второе слово. Повторяющиеся буквы 1-го слова не рассматривать.
5. Имеется текстовый файл.
a. Найти длину самой длинной и самой короткой строки;
b. Найти номера самой длинной и самой короткой строки;
c. Напечатать самую длинную строку. Если таких строк несколько, то напечатать вторую;
6. Имеется текстовый файл. Переписать в другой файл те его строки, в которых имеется более 30-ти символов и содержащие более 2-х пробелов.

16 Дек, 11:37 #342 #895190

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

Ответы>>895610

16 Дек, 12:00 #343 #895202

http://www.gowrikumar.com/c/index.php

Ответы>>895210

sage 16 Дек, 12:30 #344 #895210

>>895202
> int main()
Дальше не читал.

Ответы>>895211

16 Дек, 12:31 #345 #895211

>>895210
Почему?

Ответы>>895212

sage 16 Дек, 12:31 #346 #895212

>>895211
Потому что это кресты.

Ответы>>895213

16 Дек, 12:32 #347 #895213

>>895212
Вот как.

16 Дек, 13:36 #348 #895240

Сап, деланию задания от учебника Прата, и в одном из них задача выдать предупредительный звуковой сигнал, собственно код пишу, а писка нет никакого. Компилирую через gcc прямо терминале. И сразу второй вопрос, написал программу которая просит ввести кодовое обозначение символа ASCII, и в итоге сам символ выдает. Все работает, но блядь я чекал таблицу и те символы которые выдает прога не совпадают с таблицей ASCII, шо за хуйня.

Ответы>>895248>>895270

16 Дек, 13:51 #349 #895248

>>895240
Ого!

Ответы>>895254

68 Кб, 500x500

16 Дек, 13:58 #350 #895254

>>895248
Ну я только начал просто.

Ответы>>895256

16 Дек, 14:02 #351 #895256

>>895254
Ну так ты показал бы чего там намазюкал, а то сложно уловить как-то

Ответы>>895260

16 Дек, 14:09 #352 #895258

Ок.

{
printf('Hello!\a");

return 0;
}

\\По идеи должен на вывод должен был поступить привет и писк, но самого писка не был, а привет был.

\\Можно \a было заменить \007, так я и сдела, выхлопа как не было так и нет

Ответы>>895259>>895260

336 Кб, 1527x1200

16 Дек, 14:10 #353 #895259

>>895258
Сорян за ошибки, в попыхах печатаю.

16 Дек, 14:11 #354 #895260

>>895258
>>895256

sage 16 Дек, 14:18 #355 #895270

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

Ответы>>895276

16 Дек, 14:26 #356 #895276

>>895270
Ок сейчас.

{
char ch;
int ab;
printf("Введите код символа\n");
scanf("%c", &ch);
ab = ch;
printf("Код %d, равен символу %c\n", ab, ab)

return 0;
}

\\На выходе есть символы, только хуй пойми откуда они, с таблицей ASCII не совпадают

Ответы>>895279>>898037

sage 16 Дек, 14:32 #357 #895279

>>895276
Ты читаешь не код символа (число), а сам символ. Ввел '42', в ch прочиталось '4', это 52 (0x34). Используй scanf с %d и указателем на int.

Ответы>>895281>>898037

16 Дек, 14:34 #358 #895281

>>895279
Спасибо, сейчас тест проведу.

Ответы>>898037

11 Кб, 566x60

3 Кб, 156x29

16 Дек, 16:25 #359 #895343

Это что, кресты блядь?

Ответы>>895547>>895632

16 Дек, 20:49 #360 #895547

>>895343
Ответьте же.

16 Кб, 861x186

16 Дек, 21:14 #361 #895556

{
printf("\n Введите значения массива X\n");
for (i = 0; i < k; i++)
scanf("%f", &X);
int min = X[0];
for (i = 1; i < k; i++) if (X < min) min = X;
printf("\n Минимальный элемент массива X: %d", min);
}
Почему программа из за этого долго запускается и выдает варнинги?
Если заменить этот int на float min = X[0], то работает неправильно

Ответы>>895557>>895632

6 Кб, 456x164

16 Дек, 21:15 #362 #895557

>>895556
>\t
Не знаю откуда эта хуйня взялась
Вот код крч

16 Дек, 22:47 #363 #895610

>>895190
>насчет совместной работы это идея всегда хорошая
хуёвая это идея, лучше всего в одного пишется

Ответы>>895632

sage 16 Дек, 23:30 #364 #895632

>>895343
Да, это кресты.

>>895556
Варнинги потому, что float(0.1) преобразуется в int(0). Если тебя это устраивает, можешь сказать компилятору, чтобы заткнулся: int min = (int)X[0];

> Если заменить этот int на float min = X[0], то работает неправильно
Не везде заменил значит. Про сам массив, про %d в printf() не забыл?

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

Ответы>>895825

16 Дек, 23:57 #365 #895641

>>886627
>
Да говно курс - прямо совсем для домохозяек, глубинного понимания не дает, свистелок и перделок дохуя, а как это все применить на практике - да похуй им. Зато блять WOW-эффект есть - они на этом бабки зарабатывают, чтобы долбоебы всякие попробовали етот курс

Ответы>>895823

17 Дек, 00:24 #366 #895651

>>894742
пошел нахуй отседова, крестоблядь ебаная

14 Кб, 645x175

4 Кб, 218x205

17 Дек, 05:49 #367 #895749

>>881807 (OP)
HELP
Анон, нужно начинать с центра матрицы, как я понял, но как мне это написать?

14 Кб, 645x175

4 Кб, 218x205

17 Дек, 05:49 #368 #895750

>>881807 (OP)
HELP
Анон, нужно начинать с центра матрицы, как я понял, но как мне это написать?

Ответы>>895759

20 Кб, 267x419

17 Дек, 06:06 #369 #895752

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

УКАЗАТЕЛИ
Пикрелейтед. У меня есть тип type. В мейне я создаю указатель с этим типом, маллочу ему памяти и пишу в i shit'a десяточку. Далее отправляю этот указатель в функцию pizda где создаю ещё один указатель govno, также маллочу ему памяти и пишу i shit'a в i говна, записывая затем указатель govno в нулевой элемент массива с тем же типом type. Функция отработала, возврат в мейн, где отсирается массивный i, затем меняется i shit'a на двадцарик и снова отсирается массивный i. В обоих случаях массивный i выдаёт "10", я же хочу чтобы его значение менялось с изменением переменной i в указателе shit.
Грубо говоря я хочу в функции pizda присваивать ссылку на переменную i в указателе shit переменной i в указателе govno. Именно ссылку а не значение. И потом всё это нужно присвоить массиву, чтобы ссылка сохранилась. Как это блядь сделать?
Я ебусь с этим уже не первый час, перечитываю Кернигана и Ритчи, нихуя не понимаю и снова ебусь. Анон, помоги пожалуйста.

Ответы>>895759>>895823>>896498

17 Дек, 07:11 #370 #895759

>>894879
>Хотя можно что-нибудь начать пилить совместно - утилиту какую-нибудь или гайд по сишечке уровня /pr/
Совместно писать код с анонимными пидарасами? Нахуй надо, нервы дороже. Гайд уже лучше, но сишка такая примитивная, что я даже не знаю что там можно разжевывать.

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

>>895750
Как хочешь, так и пиши. Страна еще достаточно свободная для этого.

>>895752
А теперь выдохни и напиши минимальный код, который вызывает у тебя непонятки. Непонятки опиши одним, максимум двумя предложениями; четко и по сути.
Я тратить время на твой поток сознания не намерен.

Ответы>>895761>>895763>>895806>>895933

17 Дек, 07:23 #371 #895761

>>895759
Как мне обозначить центр матрицы? От этого то я оттолкнуться смогу

Ответы>>895764

17 Дек, 07:27 #372 #895763

>>895759
Членолюб, тред по С# рядом.

Ответы>>895764

17 Дек, 07:31 #373 #895764

>>895761
>обозначить
можешь так: matrixCenterElement
>>895763
Сходи проспись, маня.

Ответы>>895765>>895787

17 Дек, 07:33 #374 #895765

>>895764
>можешь так: matrixCenterElement
Зачем троллишь? Я нюфаг, просто покажи как как мне начать писать функции с центра матрицы

Ответы>>895767>>895769

17 Дек, 07:51 #375 #895767

>>895765
>писать функции с центра матрицы
чтоблять? Давай ты глубоко подышишь, успокоишь мыслей бег, соберешь их в кучу и четко сформулируешь вопрос.

Полуебки, почему вы не учитесь формулировать вопросы? Это же 2/3 программирования.

17 Дек, 08:16 #376 #895769

>>895765
Впизду тебя. Мне еще виртуалку дописывать, так что вот как ты должен был думать:
>Что такое "матрица" в контексте моей задачи?
Набор чисел, разделенный на N строк и M столбцов.
>Что такое центральный элемент матрицы?
Число расположенное на пересечении N/2 + 1 строки и M/2 + 1 столбца. Вот я даже нарисовал, пока в голове держать такое не натренировался. Хм, а что если N и/или M четные?
В зависимости от условия задачи либо решения нет, либо на такой вариант кладется хуй (считаем как обычно), либо <хуита1>, либо <еще более ебанутая хуета, обусловленная задачей> и т.д.
>Ок, как представить матрицу в программе?
Например как непрерывный кусок памяти. Тогда (зависит как заполнять будешь) i, j элемент это my_matrix[N*i + j]

17 Дек, 10:01 #377 #895787

>>895764
Да ты же обоссаный спермасос, для которого АТ&T синтаксис что-то из разряда фантастики.

Ответы>>895796

17 Дек, 11:14 #378 #895796

>>895787
AT&T синтаксис конечно абсолютно ебаный, но залупа не к синтаксису ассемблера, маня.

17 Дек, 12:01 #379 #895806

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

Ответы>>895986

17 Дек, 13:00 #380 #895823

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

sage 17 Дек, 13:01 #381 #895825

>>895632
>си
>архитектурой
oh lol

15 Кб, 241x333

17 Дек, 16:18 #382 #895933

>>895759
> Непонятки опиши одним, максимум двумя предложениями; четко и по сути.
> Я тратить время на твой поток сознания не намерен.
Ладно, действительно не стоило так делать стыд, я просто очень устал. Бля, какой же я мудак.
Посмотри на скриншот, в функции main создаётся указатель var1 с моим типом, далее var1->i присваивается значение и var1 отправляется в func. Там делается всё тоже самое с var2, только var2->i присваивается var1->i. Мне нужно чтобы var2->i присваивалось не значение var1->i а ссылка на него. Чтобы при изменении var1->i и последующем обращении к var2->i далее я запишу его во внешний массив я получал обновлённое значение var1->i.

Важно: В любой момент я должен мочь записать в var2->i свои данные и сбить указатель на var1->i, затем и malloc.

Ответы>>895957>>895962>>895967>>895993

17 Дек, 17:01 #383 #895957

>>895933
var2 = var1 кэп.
>В любой момент я должен мочь записать в var2->i свои данные и сбить указатель на var1->i, затем и malloc.
эээ, а переведи на русский (можешь и на английский лол) последние два действия.

Ответы>>895961

27 Кб, 736x372

17 Дек, 17:12 #384 #895961

>>895957
> var2 = var1
А вот так делать нельзя, нужно изменить именно var->i.
> эээ, а переведи на русский
Ну смотри, допустим я возвращаю в func этот самый var2 и присваиваю его newvar в мейне. По идеи newvar->i до сих пор должен смотреть в var1->i, но теперь я записываю туда новое значение, указатель сбивается. Как-то так.

Ответы>>895969

17 Дек, 17:14 #385 #895962

>>895933
Ты знаешь, если бы ты спрашивал не про детали реализации, а объяснил, что конкретно пытаешься сделать вот этими всеми манипуляциями, тебе бы давным-давно объяснили как правильно. А с этими твоими type и var1, var2 очень сложно понять, что происходит у тебя в голове.

Ответы>>895967

17 Дек, 17:28 #386 #895967

>>895962
Я сам не знаю что я хочу сделать! Я пилю то, в чём очень плохо понимаю, точнее я вообще ничего не понимаю, это мой первый опыт.
Вчера мне в голову пришла идея с указателями. Охуенная идея, которая прекрасно вписывается в код. Первым делом я сделал "cd /tmp && vim test.c" и начал пердолить примерчики как на пиках выше. Почему? Потому что для меня слишком сложно всрать эту самую идею в основной код. Сначала нужно разобраться с технической частью, с тем как это работает, а потом уже думать про добавление всего этого в основной код.
Да и если бы я описал, что конкретно пытаюсь сделать, то вы бы сказали что-то вроде "Я тратить время на твой поток сознания не намерен.", причём вполне справедливо.

> А с этими твоими type и var1, var2 очень сложно понять, что происходит у тебя в голове.
По-моему из пикчи в этом >>895933 посте всё понятно, я постарался объяснить максимально просто.

17 Дек, 17:29 #387 #895969

>>895961
>А вот так делать нельзя, нужно изменить именно var->i.
Твои var эт ж просто указатели. Ничего им не мешает указывать на одну область памяти.

Еще раз: Все твои var это просто указатели на структуру. Указывать они могут как на одну структуру, так и на разные. Поле i в структуре - это просто поле с типом int. Коммент в твоем исходнике
>i больше не держит в себе ссылку
полный бред.
из PHP пришел?

Ответы>>895970>>895974

17 Дек, 17:32 #388 #895970

>>895969
update: рекомендую нагулить какую-нибудь институтскую методичку типа "алгоритмы и структуры данных на языке C"

17 Дек, 17:40 #389 #895974

>>895969
А нельзя заставить указывать не var1 на var2, а var1->i на var2->i? В основном коде у меня не один элемент в структуре, их много, и я не хочу чтобы все они указывали на другую структуру.

> из PHP пришел?
Путь мой начался с JS, пхп я вообще не трогал. JS попердолил несколько месяцев, не разобрался, и к тому же на меня свалились кучи то ли форков JS, то ли чего с высказыванием "ванильный JS на хуй никому не нужен". С того момента я словил полное отвращение вебу в целом. Потом узнал про сишку, она мне понравилась своей простотой и я на ней так и сижу, слезать не планирую. Можешь сказать что это деградация, но да похуй.

Ответы>>895983

17 Дек, 18:02 #390 #895983

>>895974
Можно. Для этого i в структуре тоже должен быть указателем, а не простым int`ом. И под него так же нужно выделять память (и не забывать освобождать).
>с JS
Ну так, автоматическая сборка мусора и динамическая типизация дают ОЧЕНЬ ложное чувство простоты мира.

Ответы>>895989

17 Дек, 18:05 #391 #895986

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

17 Дек, 18:09 #392 #895989

>>895983
typedef struct {
int ☀i;
} type;
...
type ☀var;
var = malloc(sizeof(type));

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

> и не забывать освобождать
Можно подробнее? В каких ситуациях нужно освобождать этот int?

Ответы>>895992

17 Дек, 18:18 #393 #895992

>>895989
type * var;
var = malloc(sizeof(type));
var->i = malloc(sizeof(int));
>В каких ситуациях нужно освобождать этот int?
Когда он уже не нужен. Память она не резиновая, если выделение регулярно происходит, то когда-нибудь кончится.
free(var->i);
free(var);

17 Дек, 18:19 #394 #895993

>>895933
>Мне нужно чтобы var2->i присваивалось не значение var1->i а ссылка на него
Тебе тогда (по-хорошему) нужно чтоб в var2 была чуть другая структура, в которой i не int, а указатель на type.Eсли sizeof(int) == sizeof(указатель), то можно насрать и в i.
Кстати, рекомендую попробовать писать 'typeзвездочка имя_переменной' вместо 'type звездочкаимя_переменной'. Потому, что 'имя_переменной' таки имеет тип и размер указателя, а не структуры.
Откуда стандартная нотация выросла и почему до сих пор жива - мне не понятно; ведь это полное уебанство и лишь путает людей.

Ответы>>896006>>896089>>896092

17 Дек, 18:45 #395 #896006

>>895993
> Кстати, рекомендую попробовать писать 'typeзвездочка имя_переменной'
Самый плохой совет в этом итт треде. Сравни:
int∗ foo, bar;
int ∗foo, bar;
Опытный человек, конечно, правильно прочитает и первую строчку, а вот новичок может и не осознать, где подвох.

Ответы>>896008>>896031

17 Дек, 18:50 #396 #896008

>>896006
Опытный человек так скорее будет писать:
typedef int* var_t;
var_t foo, bar;
Ибо нехера глаза напрягать, разглядывая где там эта звездочка поставленна.

Ответы>>896011

17 Дек, 18:53 #397 #896011

>>896008
> var_t
Я даже не знаю, что тут хуже - тайпдеф для указателя (скрывает тип, запутывает) или _t (суффикс зарезервирован в POSIX).

Ответы>>896017>>896105

17 Дек, 18:59 #398 #896017

>>896011
Ok.
typedef int var_t
typedef var_t* var_ptr_t
> или _t (суффикс зарезервирован в POSIX)
Нуу, в какой то степени соглашусь обычно на C++ пишу, там в namespace можно спрятать

17 Дек, 19:23 #399 #896031

>>896006
Я не объявляю так переменные. И тебе не советую. Оба варианта одинаково оскорбительны и запутаны для взгляда нормального человека.
int∗ foo = &huy;
int∗ bar = &pizda;
мгновенно все ясно, не надо искать не затесалась ли где звездочка. Изменять и поддерживать легко.

Ответы>>896042

17 Дек, 19:32 #400 #896042

>>896031
ебать, ты наркоман. так никто не пишет

Ответы>>896046

17 Дек, 19:34 #401 #896046

>>896042
Почему?

Ответы>>896089

17 Дек, 20:33 #402 #896089

>>896046
Потому что символ '∗' в объявлении связан с переменной, а не типом.

>>895993
>Откуда стандартная нотация выросла и почему до сих пор жива - мне не понятно; ведь это полное уебанство и лишь путает людей.
Согласно K&R, такая запись носит мнемонический характер. Например, глядя на объявление 'char ∗s' можно понять, что выражение '∗s' (дереференсинг) даст нам тип 'char', т.е.
>Синтаксис объявления переменной копирует синтаксис выражений, в которых эта переменная может появляться.
Ты можешь считать это уебанством, но в этом есть логика, и такой синтаксис путает лишь тех, кто не понимает, что он означает.

Ответы>>896115

sage 17 Дек, 20:37 #403 #896092

>>895993
>ведь это полное уебанство и лишь путает людей
Иди нахуй.
Ебаный сосач, в последнее время я здесь только нахуй посылаю.

Ответы>>896115

17 Дек, 20:43 #404 #896097

Пацаны, поясните за gcc, нихуя не понийму что-то. Вот есть у меня директория с двумя исходниками: main.c и foo.c и там же еще директория include, в которой лежит foo.h. В main.c включаю foo.h. Пытаюсь компилить с помощью gcc:
[CODE]gcc -I./include foo.c main.c -o main.exe[/CODE]
А он мне:
[CODE]main.c: In function ‘main’:
main.c:11:19: warning: implicit declaration of function ‘foo’ [-Wimplicit-function-declaration][/CODE]
Нихуя не понятно, почему. В foo.h лежит прототип функции, в foo.c лежит её определение, в foo.c включен foo.h, как и в main.c, хули ему надо еще?

Ответы>>896100

17 Дек, 20:48 #405 #896100

>>896097
исходники в студию

Ответы>>896104

27 Кб, 747x503

17 Дек, 20:53 #406 #896104

>>896100

Ответы>>896107>>896108

17 Дек, 20:53 #407 #896105

>>896011
>тайпдеф для указателя
This. Пожалуй, это ещё хуже, чем писать 'int∗ var'.

17 Дек, 20:55 #408 #896107

>>896104
>выкладывать код в виде скриншотов
просто иди на хуй

Ответы>>896108

17 Дек, 20:56 #409 #896108

>>896104
Sooqua, надо же так обосраться было.
>>896107
А куда еще-то блять?!

Ответы>>896112

17 Дек, 21:01 #410 #896112

>>896108
>А куда еще-то блять?!
http://pastebin.com/PcdRdXPZ

Ответы>>896120

17 Дек, 21:03 #411 #896115

>>896089
>Потому что символ '∗' в объявлении связан с переменной, а не типом.
Нет. Припомни синтаксис прототипов: типы есть, а переменных нет. Опять таки char и char∗ абсолютно разные типы.
>Согласно K&R, такая запись носит мнемонический характер. Например, глядя на объявление 'char ∗s' можно понять, что выражение '∗s' (дереференсинг) даст нам тип 'char'
Так же как и 'char∗ s'. s - указатель на char, если его разыменовать получишь чар. И если разыменовать 'char∗∗' получишь 'char∗'. Алгоритм прост и не замысловат, происходит в голове мгновенно. 'char ∗∗whatever' же "размазывает" объявление типа whatever.
>Синтаксис объявления переменной копирует синтаксис выражений, в которых эта переменная может появляться.
Слишком сложно для меня, можешь упростить?
>такой синтаксис путает лишь тех, кто не понимает, что он означает
Увы нет, он путает меня, например.

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

Ответы>>896118>>896135

17 Дек, 21:13 #412 #896118

>>896115
>>Потому что символ '∗' в объявлении связан с переменной, а не типом.
>Нет.
Да. Если бы он был связан с типом, тогда в
[CODE]char* s1, s2;[/CODE]
оба s1 и s2 были бы указателями, но это не так. Это твоя нотация как раз вносит путаницу.
>Припомни синтаксис прототипов: типы есть, а переменных нет.
Просто имена переменных не обязательно указывать, но они там подразумеваются.

Ответы>>896142

17 Дек, 21:14 #413 #896120

>>896112
>Ещё ты можешь юзать [CODE][/CODE] в теле поста, прикинь?
У меня эти теги не работают, я думал, что их выпилили давно.

Ладно, вот исходники: http://pastebin.com/RncsC11M
Теперь gcc всё собрал, пытаюсь сделать то же самое с помощью make: http://pastebin.com/iZfc2Ae4
[CODE]$ make main
cc main.c -o main
main.c:4:17: fatal error: foo.h: No such file or directory
#include "foo.h"[/CODE]
ЧЯДНТ?

Ответы>>896124>>896126>>896153>>896164

17 Дек, 21:18 #414 #896124

>>896120
>У меня эти теги не работают, я думал, что их выпилили давно.
Сука, для кого Ньюфаг-тред закреплён. Юзай https://github.com/ololoepepe/MakabaCode/

17 Дек, 21:21 #415 #896126

>>896120
>This is a private paste. If you created this paste, please login to view it.

Ответы>>896129

17 Дек, 21:25 #416 #896129

>>896126
Я думал, тут как на рыгхосте настройки доступа работают. Поправил на public.

17 Дек, 21:27 #417 #896135

>>896115
>'char ∗∗whatever' же "размазывает" объявление типа whatever.
Выражение '∗∗whatever' на выходе даёт 'char'. Что непонятного? Всё максимально прозрачно. Это и означает, что
>Синтаксис объявления переменной копирует синтаксис выражений, в которых эта переменная может появляться.

Ответы>>896142

17 Дек, 21:34 #418 #896142

>>896118
А тогда понятно откуда эта педерастия появилась. Спасибо.
>>896135
Забей.

17 Дек, 21:50 #419 #896153

>>896120
http://pastebin.com/CvPNq7vZ

Ответы>>896156>>896184

17 Дек, 21:55 #420 #896156

>>896153
Вот это http://pastebin.com/57t6RxGD делает то же самое, что ты размазал по 10 строкам, только лучше

Ответы>>896158>>896159>>896164

17 Дек, 21:56 #421 #896158

>>896156
s/mail.o/main.o

17 Дек, 21:58 #422 #896159

>>896156
Может даже all не нужен...

Ответы>>896164

17 Дек, 22:03 #423 #896164

>>896156
Этому >>896120 поясняй про размазывание. Я лишь удалил foo.h из зависимостей в его Makefile, чтобы тот начал работать, как надо.

>>896159
да, не нужен, первый таргет дефолтный. И ещё
>CPPFLAGS
>CPP
просто уёбывай

Ответы>>896166

17 Дек, 22:04 #424 #896166

>>896164
>>CPP
>просто уёбывай
Ахаха. Долбоёб подумал, что CPP значит C++ и воспламенился.

Ответы>>896192

17 Дек, 22:24 #425 #896184

>>896153
Сегодня не мой день - в имени файла опечатка была. Я думал, make ошибку выдаст в таком случае, а он пытался скомпилить main.c походу.
В самом makefile хедеры нигде указывать не надо, только директорию? Ну и если потом писать CMakeLists, там тоже только директорию и исходники?
Ну ладно, скомпилилось, работает. Пытаюсь подцепиться gdb и он меня на хуй посылает:
[CODE](gdb) r
Starting program: /xyunu3da/main
[New Thread 2844.0x1d6c]
[New Thread 2844.0x7fc]
gdb: unknown target exception 0x406d1388 at 0x759bc54f

Program received signal ?, Unknown signal.
0x759bc54f in RaiseException () from /c/Windows/syswow64/KERNELBASE.dll[/CODE]
Ничего не нагуглил, кроме предложения обновить gdb, но пакман говорит, что у меня и так стоит самый новый gdb.

17 Дек, 22:43 #426 #896192

>>896166
Долбоёб подумал, что кроме гну не бывает ничего другого.
http://pastebin.com/nds4z6v0

Ответы>>896197

17 Дек, 22:47 #427 #896197

>>896192
> эта отчаянная попытка сделать вид, что не обосрался
Продолжай веселить нас

Ответы>>896202

17 Дек, 22:47 #428 #896198

Анончики, поясните дебилу, что означает точка после массива и переменная, что это за обращение?
Например:
vertexCount = 0;
vertexKey = 10.
graph[vertexCount].vertexKey = vertexKey;

Что означает вот эта часть:
>.vertexKey
?

Ответы>>896199

sage 17 Дек, 22:48 #429 #896199

>>896198
Иди нахуй.

17 Дек, 22:53 #430 #896202

>>896197
Я смотрю, ты ничего не понял. Ладно, мне не интересно больше разжёвывать и класть тебе в рот.

17 Дек, 22:58 #431 #896209

Делаю задание 1-13 из K&R, но на моменте цикла for для отрисовки гистограммы появляется сообщение "Segmentation fault (core dumped)". Гугл говорит, что ошибка в ссылке на несуществующую позицию массива, но руками у меня получается все значения получить.

http://pastebin.com/rDFnTTF7

Ответы>>896228

17 Дек, 23:21 #432 #896228

>>896209
Сегфолт этот как присяга для Си кодеров.
И в переменный мусор, надо туда нули закинуть.
int c = 0, i = 0, j = 0, cwlen = 0, state = 0;
else if (state == IN)

Ответы>>896231>>896233

17 Дек, 23:23 #433 #896231

>>896228
Разметочка. Короче, переменный инициализируй: int c = 0, i = 0, j = 0, cwlen = 0, state = 0;
И вот тут ошибочка: else if (state = IN)
Присвоение а не проверка на равенство.

17 Дек, 23:25 #434 #896233

>>896228
Получилось, спасибо! Странно, что при этом правдоподобный результат показывался (без гистограммы).

Аноним 17 Дек, 23:51 #435 #896252

>>881807 (OP)
У меня вопрос, как передать исполняемый файл используя сокеты? чистый Си, Сокеты Беркли (не Winsock)

Ответы>>896260

18 Дек, 00:03 #436 #896260

>>896252
Ты не поверишь, connect(), send() в цикле, пока все не пошлется, close(). Алсо, в Winsock все то же самое за исключением WSAStartup()/WSACleanup().

Ответы>>896267

Аноним 18 Дек, 00:16 #437 #896267

>>896260
Спасибо, я сделал открытие файла и считывал построчно с fgets и передаю, так передается любой файл как текстовый, как его считывать и передавать если в send() второй параметр const char *buf ?

Ответы>>896280

18 Дек, 00:57 #438 #896280

>>896267
Ну char - не обязательно текст, просто байтики. Выделяешь буфер, делаешь fread(), посылаешь send()-ом. До этого желательно послать размер в каком-нибудь виде - в ASCII или байтиками, дело твое. Алсо, в линуксах есть sendfile().

18 Дек, 13:09 #439 #896463

TIOBE Index for December 2016
11 Java17.856%-3.12%
22 C8.726%-7.73%
33 C++5.335%-0.61%

The programming language of all programming languages C is consistently going down since November 2015. The language was in a range of 15% to 20% for more than 15 years and this year it suddenly started to suffer. Its ratings are now less than 10% and there is no clear way back to the top. So what happened to C? Some months ago we already listed some possible reasons: it is not a language that you think of while writing programs for popular fields such as mobile apps or websites, it is not evolving that much and there is no big company promoting the language. May be there are more reasons. If you happen to know one, please share it with us.

в"С"ё?

Ответы>>896468>>896481

18 Дек, 13:19 #440 #896468

>>896463
Давно пора уже было этот высер 70-х выкинуть на свалку истории. Вот только никто не сподобился сделать (хотя бы равноценную) замену.

Ответы>>896476

18 Дек, 13:22 #441 #896476

>>896468
тогда придётся выкинуть порядка 80% всего ПО

Ответы>>896478

18 Дек, 13:26 #442 #896478

>>896476
Ебать ты дебил.

Ответы>>896535

18 Дек, 13:34 #443 #896481

>>896463
>TIOBE Index for December 2016
Да, всё. Все пишем на VisualBasic.NET

18 Дек, 14:06 #444 #896498

>>895752
Программирование не для тебя, смирись.

По делу: указатель - и есть ссылка. Сделав в функции пизда маллок и присвоив почленно значения, ты сделал копию. Для получения ссылки на одно и то же значение, тебе нужно было просто присвоить указатели. Как-то так: ar [0] = shit

Ответы>>896916

18 Дек, 15:03 #445 #896535

>>896478
пожалуйста, аргументируй

Ответы>>897000

19 Дек, 03:48 #446 #896910

>>883654
haram

109 Кб, 886x983

19 Дек, 05:53 #447 #896916

>>896498
> Программирование не для тебя, смирись.
Но я уже решил все проблемы и написал что-то работающее! Правда оно запускается через раз. Бывает высирает пикрелейтед. Бывает сигфолт. Но вот я запускаю свою няшу третий раз и она работает! А потом опять пикрелейтед.
Два раза с нуля переписывал, всё равно не пойму в чём проблема. Вбрасывать вам это довольно неуважительно, там 100 строк, да и врядли кто-то будет рыться в моих каках. Наверно так и оставлю, запускается же! Пусть и, опять же, через раз, да... Грустно всё это.

Ответы>>896920>>897317

19 Дек, 06:09 #448 #896920

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

Ответы>>897356

19 Дек, 07:51 #449 #896931

У гуманитария горит зачёт. препод дал билетик подготовиться. Один вопрос устно, другой практический. Помогите пожалуйста, обьясните.
1. Операторы ввода\вывода. Типы данных. Массивы, примеры массивов.
2. Дан массив int a[20], Составить массивы intb[10], int c[10] следующим образом: первые десять элементов массива a разместить в массиве b, а остальные десять в массиве c.

Ответы>>896991>>897000

19 Дек, 12:37 #450 #896991

>>896931
>гуманитария
Вот замаскировал же кто-то когда-то давно свой педагогический фейл, а теперь спасу нету

19 Дек, 13:14 #451 #897000

>>896535
Если производители процессоров разом скажут, что их все заебало и они начнут производить розовых пони уже существующие процессоры не исчезнут.
>>896931
>Операторы ввода\вывода.
Это к крестушкам.

Ответы>>897075

19 Дек, 15:46 #452 #897075

>>897000
>Если производители процессоров разом скажут, что их все заебало и они начнут производить розовых пони уже существующие процессоры не исчезнут.
Сравниваешь жопу с пальцем. HW заточено на более длительный цикл использования и даже к ним применима такая вещь, как firmware, которая может часто обновляться. Софт, который не поддерживается, рано или поздно, умирает. Если сейчас все разом прекратят писать на C - значительная часть всего ПО в мире пойдёт по пизде.

Ответы>>897081

19 Дек, 16:00 #453 #897081

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

Ответы>>897089>>897091

19 Дек, 16:30 #454 #897089

>>897081
На коболе не была написана каждая третья программа, да и самих программ было на порядки меньше. А ты сейчас предлагаешь переписать как минимум ядра Linux, Windows и OS X (всего лишь, лол), это даже если забыть про софт и embedded.

Ответы>>897104>>897145

19 Дек, 16:35 #455 #897091

>>897081
>не надо драмы
драмой занимаются те, кто кукарекает, что C надо выкинуть на свалку

Ответы>>897145

19 Дек, 16:52 #456 #897104

>>897089
Ебать, ты дебил.
мимо-другой-анон

Ответы>>897132

19 Дек, 17:32 #457 #897132

>>897104
Кого ебать?

19 Дек, 18:10 #458 #897145

>>897089
Выбросить язык на свалку не значит выпилить все и вся, что было на нем написано и предать огню все исходники. Хуле ты такой тупой? Я даже пример тебе привел языка со свалки.
>>897091
Язык объективно уебищен, вася. Любой, кто на нем писал что-то крупнее лаб это понимает с большой остротой. Здесь нет никакой драмы, это просто факт.

Ответы>>897160>>897292

19 Дек, 18:43 #459 #897160

>>897145
> Язык объективно уебищен, вася.
Скажи честно, что не осилил. В языке катастрофически не хватает модулей. Безо всего остального можно жить.

Ответы>>897286>>897370

20 Дек, 00:08 #460 #897284

Ананасы, а правда, что сейчас конпеляторы сами даже без спецификатора inline могут взять и ебануть вместо вызова короткой функции типа:
[CODE]uint32_t massa_mamki()
{
return 0xFFFFFFFF;
}[/CODE]
подстановку?

Ответы>>897304>>897309

20 Дек, 00:14 #461 #897286

>>897160
Жить и с ассемблером можно, это в принципе уже вменяемый уровень абстракции. Вопрос не в этом.

Ответы>>897314

20 Дек, 00:26 #462 #897292

>>897145
> Язык объективно уебищен, вася.
Каждый язык уёбищен. Не существует идеальных языков.

Ответы>>897370

20 Дек, 00:47 #463 #897304

>>897284
Да, могут. Скажи гцц -flto, так он вообще половину твоей программы выкинет, как ненужную.

Ответы>>897309

20 Дек, 00:53 #464 #897309

>>897284
Он это делает ещё и поумнее чем ты. А этот спецификатор ничего не гарантирует для таких дел есть всякие компиляторозависимые интринсики вроде __forceinline — один хуй он всё будет делать.
>>897304
Можно просто скомпилировать мсовским даже с отключенными оптимизациями — тот даже без указаний на то выкидывает нахуй всё неиспользуемое.

Ответы>>897311

20 Дек, 01:00 #465 #897311

>>897309
> скомпилировать мсовским даже с отключенными оптимизациями — тот даже без указаний на то выкидывает нахуй всё неиспользуемое.
Магии не бывает. Если компилятор не подготовил объектник специально, линкер нихуя не выкинет. Ты наверняка /GL забыл убрать.

20 Дек, 01:05 #466 #897314

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

Ответы>>897320

11 Кб, 360x175

19 Кб, 589x232

21 Кб, 560x281

30 Кб, 561x362

20 Дек, 01:16 #467 #897317

>>896916
Круто! Я понял в чём заключалась моя проблема! Теперь осталось понять почему так происходит, в чём прошу вас помочь.

Я пишу своего рода обёртку над GTK. У меня есть основной тип являющий собой структуру с указателем на GtkWidget. Хотя стоп, по-порядку:
- Первая пикча, создания окна на GTK. Я создаю указатель на GtkWidget и присваиваю ему результат функции gtk_window_new. По идеи эта функция выделяет память GtkWidget'у, заполняет его и возвращает всё готовое, мне ничего делать не надо, замечательно.
- Но если я помещу GtkWidget в typedef структуру, как показано на второй пикче, то словлю сигфолт. Нужно выделить память маллоком. Обязательно. Почему? Это ведь тот же пустой указатель, gtk_window_new должен сделать всё сам. Где я ошибаюсь?

Ну и ещё один момент. Третий пик, теперь в структуре GW содержится указатель WIDGET, в котором содержится указатель на GtkWidget. Так не работает даже с маллоком. Сигфолтит. Как в данном случае правильно выделить память?
upd: Заработало! Но я ничего не изменял. Четвёртая пикча, с памятью происходит какой-то пиздец, я как попало напихал принтов и теперь оно падает с выхлопом как в верхнем посте. Это вообще можно объяснить? Хотя даже иногда запускается, прямо как в предыдущий раз моя основная прога.

Ананасы, чё за хуйня?

Ответы>>897324

20 Дек, 01:21 #468 #897320

>>897314
Кнутовскому ассемблеру это скажи, лол.

А вообще, в эпоху, когда мир поделен на x86 и остальных (арм парашу, для которой только портируют ядра линукса с дровами и мейнфреймы на экзотических архитектурах (особенно всякая суперэкзотика вроде VLIW — сишное говнишко уже научились векторизовать (и чтобы хотя бы работало))) — насрать. Реальной проблемой это было когда процессоры у всех были свои.

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

Ответы>>897321>>897326

20 Дек, 01:21 #469 #897321

>>897320
>научились векторизовать
тут знак вопроса

20 Дек, 01:34 #470 #897324

>>897317
Повторю уже много раз и многими людьми тебе сказанное: иди читай основы.
Третья пикча: в строке 18 widget->widget у тебя указывает в небеса. Ты его не инициализируешь. Удивительно, откуда же сегфолт?
> даже иногда запускается
Иногда получается так, что в памяти выделенной маллоком, оказывается валидный адрес. Но чтение неиницализированной памяти - undefined behavior - может произойти что угодно, например, к тебе явится покойный Ричи, мир праху его, и скажет "читай K&R, сука".

Ответы>>897325>>897327

20 Дек, 01:48 #471 #897325

>>897324
> Повторю уже много раз и многими людьми тебе сказанное: иди читай основы.
Ну не стукай, последние несколько часов я посветил перечитыванию твоего K&R и гуглению статеек на тему выделения памяти.

> Третья пикча: в строке 18 widget->widget у тебя указывает в небеса.
До этого я бы точно не догадался самостоятельно, пиздец какой-то. А инициализировать как? Пока мне в голову приходят только очень некрасивые способы.

20 Дек, 02:01 #472 #897326

>>897320
>Кнутовскому ассемблеру
давай мы не будем принимать в расчёт сферических коней

>А вообще, в эпоху, когда мир поделен на x86 и остальных
Расскажи это Oracle с их SPARC и IBM с Power. Ты совершенно не берешь в расчёт, что существуют архитектуры не только для простого потребителя, но и для всякого тырпрайза с RAM по терабайту на серваках. Алсо, даже в рамках x86 существует 100500 всяких фич, которые могут поддерживаться в одном проце и не поддерживаться в другом. Такое куда проще разруливать на уровне компилятора.

Ответы>>897384

20 Дек, 02:02 #473 #897327

>>897324
> widget->widget
А хотя стоп, я думал ты про window->widget, в таком случае я вообще не ебу как мне его инициализировать и зачем мне это делать. Вот же он, созданный, всё с ним хорошо, теперь осталось заставить его куда-то указывать, что должен сделать gtk_new_window(). Что не так-то?

Ответы>>897346

sage 20 Дек, 03:59 #474 #897346

>>897327
> А хотя стоп, я думал ты про window->widget,
Да, именно это я и имел в виду. Просто запутался. Ты бы что ли переименовал виджеты в myWidget и gtkWidget разделил, это хуевые имена, но путаницы было бы меньше.

> А инициализировать как?
Так же, как ты выделял память под window, тебе нужно выделить память под widget, а вот под window->widget->widget память выделит уже GTK.

Ответы>>897347

20 Дек, 04:17 #475 #897347

>>897346
Так вот ты о чём. Я-то думал, что маллок всё рекурсивно маллочит. Ясно тогда, спасибки, теперь действительно всё понятно.

Ответы>>897349

20 Дек, 04:36 #476 #897349

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

Ответы>>897350>>897356

sage 20 Дек, 04:48 #477 #897350

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

Ответы>>897361

20 Дек, 05:16 #478 #897356

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

>>896920
Ну напишу я всё это на жабе, ну быстро, ну просто, ну и что? Нету челленджа, есть магия. Другое дело тут, сейчас, на Сишке вот это говно высрал, через столько всего прошёл, такие-то ночи дебага, попыток разобраться, и в итоге да! Работает! Как я задумывал! И теперь даже не сигфолтит! Вот это охуенно. Вот это доставляет.

Ответы>>897361>>897382

20 Дек, 05:54 #479 #897361

>>897356
>Ну... Там же... Структура... Посмотреть можно...
Вот этот >>897350 анон правильно сказал. Даже невозможно определить, что в принципе есть указатель. А ты фантазируешь о каком-то рекурсивном выделении. Маллок просто выделяет тебе нужный объём памяти, он понятия не имеет ни о какой структуре.

20 Дек, 06:54 #480 #897370

>>897160
>Безо всего остального можно жить.
Ну живи, хуле. Страна свободная - жрать говно вилкой еще не запретили. Модули это прогресс от вилки к ложке.
>>897292
А вода мокрая. Откуда вы поналезли в программирование, полуебки? Вам супы варить и то опасно доверить.

Ответы>>897686

20 Дек, 08:32 #481 #897382

>>897356
>Нету челленджа
А ты забавный

20 Дек, 08:45 #482 #897384

>>897326
>Расскажи это Oracle с их SPARC и IBM с Power
Лучше прочитай пост на который отвечал.
>давай мы не будем принимать в расчёт сферических коней
Ты опять не понял сути, лол.

Ответы>>897689>>897741

20 Дек, 18:50 #483 #897686

>>897370
если ты пытаешься троллить, то делаешь это очень странно

Ответы>>897815

20 Дек, 18:55 #484 #897689

>>897384
Я не понимаю, что ты хочешь доказать, но, если честно, как-то мне на тебя уже похуй.

20 Дек, 20:31 #485 #897741

>>897384
реальность токова что платформы отличные от x64 и arm подыхают потихоньку
это уже случилось на мобилках, в процессе это происходит на серверах и в ембеде
та же история что и с потомками юникса - положим, еще несколько лет назад приходилось ставить фрибсд чтобы он сетевые соединения держал, солярку чтобы можно было использовать ихнюю фс для некоторых типов файлохранилищь, ну и по середке линукс, сейчас же токо линукс остался тк там и сеть допилили и файловые системы

Ответы>>897952

20 Дек, 21:44 #486 #897815

>>897686
И не думал.

20 Дек, 22:12 #487 #897830

Когда в программировании под win32 следует использовать __try __finally? Если я пишу функцию для отображения файла на память, надо ли реализовать все действия в защищенном блоке?

Ответы>>897858

sage 20 Дек, 22:52 #488 #897858

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

Ответы>>897905

21 Дек, 00:34 #489 #897905

>>897858
А вообще в другой ситуации что лучше использовать: проверки условий или SEH?

Ответы>>897910

21 Дек, 00:39 #490 #897910

>>897905
Если после ошибки никак не продолжить работу — кидай исключения, рви волосы и жопу. Иначе просто проверяй условия.

115 Кб, 1680x1050

21 Дек, 00:52 #491 #897920

Почему при каждом вызове getline() текст парсится с момента остановки прошлого вызова, а не с начала?

Ответы>>897933>>897965

21 Дек, 01:49 #492 #897933

>>897920
Ну так сам метод как бы называется "получить строку".
А какой смысл несколько раз получать одну и ту же строку?
Очевидно каждый вызов строка будет следующая, чтоб вручную не ебстись с итераторами.
Для перехода к началу достаточно один раз сбросить адрес чтения.

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

Ответы>>897936

21 Дек, 02:08 #493 #897936

>>897933
Понятно, что это логично и удобно. Интересовался, как так реализовано. Видимо, это на уровне getchar() и "адреса чтения", хранящегося между вызовами функции.

Ответы>>897939

362 Кб, 1280x1024

21 Дек, 02:26 #494 #897939

>>897936
Файловые дескрипторы хранят текущую позицию в выделенном на пикриле поле.
Загляни под капот libc и все станет ясно или нет.

Ответы>>897942>>897960>>898213

21 Дек, 02:44 #495 #897942

>>897939
Теперь понял, спасибо! В libc хотя бы ради комментариев буду заглядывать в аналогичных случаях.

59 Кб, 670x346

21 Дек, 05:32 #496 #897952

>>897741
>реальность токова что платформы отличные от x64 и arm подыхают потихоньку
tell me more

https://www.opennet.ru/opennews/art.shtml?num=43112

Ответы>>898131

21 Дек, 08:06 #497 #897960

>>897939
Воу - Воу, братишка!
Это что за цветовую схему ты на Awesome WM натянул?

Ответы>>897965>>898077>>898211

21 Дек, 08:42 #498 #897965

>>897960
это dwm, как и здесь >>897920 (хотя не уверен)

53 Кб, 604x550

21 Дек, 12:51 #499 #898037

>>895276
>>895279
>>895281
Докладываю, все сделал по как сказано, по итогу один при вводе кода 218 получаю хуй ?, как блядь научить мой gcc в ACII? Работаю через Mint, gcc из коробки, в тырнетах посоветовали подключить setlocale(LC_ALL, "C") но толку нихуя нет.

Ответы>>898062>>898191

21 Дек, 14:49 #500 #898062

>>898037
Разобрался, но теперь уже другая проблема. В UTА-8 символы начинающиеся с единицы в старшем бите (т.е. с кодом больше 127) многобайтные. А мой терминал ждет UTA-8. Нужно теперь как-то это конвертировать, либо менять настройки терминала.

Ответы>>898182

21 Дек, 15:14 #501 #898077

>>897960
Это dwm. Цветовая схема - Gotham.

21 Дек, 16:03 #502 #898131

>>897952
и чё? не покупают уже солярку на спарке, не сравнить с тем, как это было во время бума доткомов ну или когда начали на вторичные рынки (в тч и в россию) впаривать освободившиеся серваки после краха доткомов
сейчас сановский (ораклоский) сервер - это скорее всего будет решение на x86 с линуксом поверх
а в новости обсуждается что фирма решина завести линукс на спарке (вместо солярки), а в комментах - что это нахуй никому не нужно
чтд

21 Дек, 16:43 #503 #898182

>>898062
c32rtomb() из C11 или сам закодируй (посмотри в википедии кодировку, там просто).

21 Дек, 16:51 #504 #898191

>>898037
Что ты хочешь?

299 Кб, 1680x1050

21 Дек, 17:38 #505 #898211

>>897960
Вот awesome с темой pro-gotham, если интересно.

21 Дек, 17:41 #506 #898213

>>897939
Табами форматируешь?

Ответы>>898232

21 Дек, 18:01 #507 #898232

>>898213
Вот это предъява!

ПЕРЕКАТ # OP 21 Дек, 18:21 #508 #898245

>>898241 (OP)
>>898241 (OP)
>>898241 (OP)
>>898241 (OP)
>>898241 (OP)

Перекатываемся в юбилейный 16-й тред. И снова со старой шапкой.[/s]

07 Янв, 00:47 #509 #907444

>>881807 (OP)
http://ideone.com/y8V8Ro
Наваял вот такую программку, а она наотрез отказывается работать. Задача была такая: Написать програму, которая из файла берет слова и записывает их в односвязный список, затем она должна удалить из этого списка элементы, у которых длина слов меньше 3 символов, и получившийся список надо вывести в стандартный поток вывода. Вроде все сделал, но нихуя не выводит (совсем) и что-то я не пойму в чем ошибся.
Само-собой компелировал я не в ideone. За говнокод прошу не обоссывать, я нюфаня.

анончик 13 Янв, 00:18 #510 #910952

Каким образом происходит передача параметра в функцию через указатель?

15 Янв, 18:20 #511 #912710

Есть тут кто?
>int a = 35, b = 35, c = 35;
>printf("%s", a==b==c ? "true" : "false");
Что в данном случае значит a==b==c и почему выводит false?

Помогите закрыть сессию(1 курс) 16 Янв, 21:17 #512 #913344

Есть файл текстовый файл:
______________
Winter1, winter2.
Let’s go skate.
Winter3, winter4.
Don’t be late.
Winter5, winter6.
Let’s go roll.
Winter_7, winter_8.
In the snow.
Winter, winter!
Winter, winter!
__________________
Мне нужно открыть файл и удалить все одинаковые слова в каждой строчке.
Если я правильно понял мне нужно реализовать цикл для перехода по строчкам в котором на каждом шаге будут проверятся эти совпадение?
1)Как реализовать этот переход по строчкам, и нужен ли он вообще ?
2)Как осуществлять проверку одинаковых слов(именно слов а не символов)?
И при всем при этом нужно не забывать что каждая строчка рассматривается как отдельная часть.1 курс. Помогите плиз

Си в среде си++ Puppet 18 Янв, 20:25 #513 #914776

Можно ли в среде с++ писать программу на языке си?

Тред утонул или удален.
Это копия, сохраненная 19 января 2017 года.

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

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

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

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