Ответы пользователя по тегу C
  • Почему выходит из цикла?

    bogolt
    @bogolt
    А что умение дебажить в уме ( на листе бумаги ) или даже дебаггером уже совершенно утеряно у подрастающих поколений? По-моему ответы на подобные вопросы просто вредны для самого специалиста, ну или человека который хочет стать таковым.
    Ответ написан
  • Не могу понять, в чем ошибка?

    bogolt
    @bogolt
    Попробую объяснить путь к понимаю проблемы переполнения.
    double temp = random(a, b);
    Подставьте сюда сами разные значения ( напиример 0 5 или -5 и 3 ) подумайте какие возможные результаты может вернуть функция ( максимальный и минимальный ). Прибавьте граничные результаты к b ( у вас же temp + b ) вспомните какое максимальное количество элементов вы выделили.

    2. Все-таки обнулите выдленный блок памяти. Можно руками в цикле а можно через www.cplusplus.com/reference/cstdlib/calloc например ( там и с параметрами запутаться сложнее ).

    3. Ваша функция result ожидает количество итераций, а, б а вы ей передаете а, б, количество итераций. Как следствие все значения попадают не туда куда следует. Возможно компилятор пытался вам об этом сообщить ворнигнами - читайте их, они ваши друзья.
    Ответ написан
  • Как создать GUI на чистом C?

    bogolt
    @bogolt
    На голом си не так уж много GUI библиотек. Пожалуй самая навороченная из кросс-платформенных, свободных это Gtk++.
    Ну если вам только под винду то можно конечно взять WinAPI, хотя имхо это самый проигрышный вариант.
    Ответ написан
  • Почему программа падает? Где ошибка в коде?

    bogolt
    @bogolt
    Падет оттого что выкладываете кусок кода, по которому ничего нельзя сказать. Есть такое понятие - минимальный рабочий пример. Он должен компилироваться, в идеале быть представленным одним файлом, в самом большом идеале - снабженным Makefile или простой инструкцией по сборке.
    Также подразумевается что вы уже:
    1. Пытались сами отладить программу в отладчике
    2. Навтыкали логов через одну строку кода, чтобы точно локализовать место падения, но так и не поняли почему именно случается падение.

    Обычно на реализации второго пункта этой программы человек сам понимает причины крэша. В противном случае - как я уже писал пишите минимальный рабочий пример и выкладывайте. А то телепаты берут дорого, а отнимать время подобными недооформленными вопросами у других хороших людей, готовых помогать это банальное хамство.
    Ответ написан
  • Почему в Python изменяется строка после использования в функции с модулем на C?

    bogolt
    @bogolt
    Функция diff3 у меня вообще не работает. По крайней мере стабильно меняет значения которые я ей передаю да еще и возвращает NAN вместо значения.

    Беглый осмотр показал что внутри нее происходит перезаписывание памяти внутри функции strtok_r. Эта функция записывает значения в указатель переданный третьим параметром, у вас же он даже не инициализирован. Подозреваю что память каким-то чудесным образом ( а других не бывает ) попадает в вашу же переменную str1 или str2. Дальше код не разбирал, но подозреваю что там еще могут быть проблемы с записью в переменные через указатели.

    Разберитесь с этой функцией отдельно, отладьте ее вначале, независимо от остального кода.
    Ответ написан
  • 12 летка хочет учиться программировать

    bogolt
    @bogolt
    Есть замечательная библиотека на питоне pygame для создания игр. Там на сайте есть и примеры как с ней работать. Вообще игры это отличная задача для начала — можно их делать сложными, можно простыми. Человек сразу видит результат своей работы, и это дает ему желание продолжать. Думаю каждый программист в детстве ( а многие в более зрелом возрасте ) мечтали сами делать игры.
    Ответ написан
  • Защита программы от декомпиляции Java, C++, С#

    bogolt
    @bogolt
    В скомпилированной программе на си++ можно найти текстовые строки, имена фукнций и классов. Для того чтобы скрыть значение текстовых строк — программа может хранить их в зашифрованном виде, и расшифровывать перед использованием. Это сильно затруднит понимание того какое именно сообщение собиралась вывести программа, и следовательно что делает та или иная часть кода. Однако у нас еще остались имена функций. По идее их можно вырезать используя strip но гораздо смешнее изменить их так чтобы важные вам фукнции ( например isAppRegistered() ) работали не совсем так как предполагается, например эта фукнция может вызываться по таймеру раз в 10 секунд, хэшировать значения разных переменных и возвращать какой-то результат. Реальная же фукцния проверки регистрации будет называться debugPrintString() и… не будет вызывать никаких окон оповещающих о том что что-то случилось не так. Эти окна опять вызовуться из другого потока, по таймеру в случае если наша debugPrintString() изменила пару значений. )
    Ответ написан