Sergei Nazarenko, Работать с двумя разделами винда вполне может. Только она монтирует по умолчанию только первый раздел из MBR. Иногда этим пользуются - делают "скрытые" разделы. В BOOTICE для этого даже помнится была специальная кнопка - она просто меняет местами разделы в MBR, данные при этом не теряются.
Вам никто не мешает назначить букву диска на раздел вручную в менеджере дисков или в diskpart.
im_noob, Возьми несколько строк разной длины (четной и нечетной).
Напиши на бумаге. Потом напиши уже модифицированные строки с добавлением символов. Посчитай количество символов в модифицированной строке. Выведи формулу для вычисления длины модифицированной строки.
Именно такой длины и выделяй память для модифицированной строки. Не забудь добавить еще один символ под завершающий ноль.
Ну дык в mainе и нет никакого Stri, там есть s.
Где puts? И почему puts(InputSymbol)?
В какой переменной указатель на сформированную строку в функции InputSymbol? Вот ее и выводи.
im_noob, Лишняя закрывающая скобка. Если читать сообщения об ошибках компилятора будет быстрее, чем писать на тостер и ждать ответа :-)
А где вывод строки собственно?
im_noob, r[j] = '\0';
После цикла поставь. Это добавляет нулевой символ и означает конец строки. Без нулевого символа строка будет "бесконечной", точнее пока где-то дальше в памяти не встретится другой нулевой символ (отсюда и мусор в выводе) или пока программа не вылетит из-за обращения к недоступной памяти (этого не случилось в этот раз - повезло).
Вам и не нужна вся программа. Функция Sort() из примера - это и есть реализация сортировки методом пузырька. Только в таком варианте она рассчитана на сортировку массива double, а вам нужно сортировать charы. Просто замените double на char по всей функции и используйте ее, вместо вашей sort_string().
im_noob, В пузырьке вам не нужен второй массив, вы сортируете данные в этом же.
Просто берите код препода, только double замените на char. В его функции Sort() data - это указатель на сортируемый массив, а n - размер массива (у вас это будет strlen(word)).
im_noob, Ваш вариант сортировки он, конечно, рабочий, но сильно далек от оптимального. Пузырек, то же нельзя назвать оптимальным, но уже лучше, хотя бы тем, что не требует дополнительной памяти.
На счет обработки ошибок - функция malloc может вернуть вам нулевой указатель, в этом случае ваша программа вылетит по SIGFAULTу - обращение к не выделенной памяти, когда начнет писать по нулевому указателю. Обработка простая - обычно достаточно проверить указатель на равенство NULL после вызова malloc. Если указатель NULL - напечатать ошибку и корректно завершить программу.
Но если переделать сортировку на пузырек, эта ошибка уйдет, т.к. не будет вызова malloc.
Вообще обычно любая системная (или библиотечная) функция может завершиться не удачно. Обработку ошибок необходимо делать.
im_noob, В его примере - сортировка пузырьком. Может он намекает, что надо вот так сортировать. Ну и сортируйте как он хочет. К тому же это будет сортировка на месте, без дополнительной памяти. И работать она будет быстрее, чем ваш вариант.
Но не понятно при чем тут puts.
Как уже писали в ответах - сама структура в норме.
Крашится не структура, а код, который ее использует. Вот его и надо смотреть.
Запусти программу под отладчиком без точек останова, в момент сбоя отладчик перехватит управление и покажет участок кода, в котором произошла ошибка. Участок кода может быть не твой, а библиотечный или системный вызов, надо подняться по стеку вызовов до последнего твоего кода. Тут будет видно где произошла ошибка в твоем коде, тут же можно будет посмотреть значения переменных на момент падения и т.п. Возможно и решение сразу же найдется, но не факт, конечно.
Обычно ВПН серверу достаточно одного внешнего адреса. Но, конечно, задачи могут быть разные.
Зачем вам максимальное количество? Максимальное количество это сколько?
И еще дополню - никто не гарантирует, что в общеизвестных алгоритмах нет backdoor у тех же спец.служб.
Хотя, конечно, открытость алгоритма способствует тому, что бы его анализировали толпы криптоаналитиков, но и backdoorы в этом случае не лежат на поверхности и их совсем не просто найти.
Может быть. С теми АЦП, что я имел дело я получал коэффициенты вызовом библиотечной функции (библиотека для работы с АЦП, предоставляется производителем железки). Куда реально лезет функция за коэффициентами я не проверял. Хотя в одном случае библиотека была с открытыми исходниками, так что возможность проверить была.
Данные в файле бинарной матрицы заменятся не могут, т.к. не в функции Verbose_b() не в Verbose() нет операций записи в файл. Содержимое файла вы можете проверить вне программы, вставив в нужных местах программы паузы, а вне программы посчитав контрольные суммы файла.
Из подозрительного:
1. В Verbose_b() нет нужды после каждого чтения делать fseek(), т.к. fread сам передвигает указатель на прочитанное количество байт. Сейчас же у вас получается, что fread передвинул указатель, а потом вы его еще fseekом передвинули. Если у вас при этом вывод правильный, то какова структура файла? Получается, кроме самих значений data вы туда еще что-то пишете. Что?
2. В Verbose() похоже что тут у вас в нескольких местах возможно обращение по нулевому указателю. Условие циклов не корректно: условие нужно делать как while(m1 != NULL), внутри цикла сразу выводите текущий элемент, затем подцикл по right с таким же условием (смотрите, чтоб текущий элемент не выводился дважды), после подцикла переключаетесь на следующий down элемент.
Денис _______________,
Правильно: dial-up
У вас есть проводные телефоны? Или вы хотите по своим проводам соединять модемы?
На dial-up сервере должно быть столько COM портов и dial-up модемов, сколько клиентских устройств вы хотите одновременно на нем обслуживать (ну и столько же двухпроводных линий связи). Модемы, порты и линии связи не могут одновременно использоваться разными клиентами.
Настроив на винде прием dial-up подключений вы можете предоставить доступ dial-up клиенту к сети за dial-up сервером.
GineTik, Это ваш код? Откуда он?
На вопросы будем отвечать?
все остальное должно быть правильно
Ключевое слово "должно быть". Кому должно? А может не должно? Это вы так думаете или еще кто-то?
Приведенной вами информации не достаточно, что бы понять в чем ошибка. Можно только предполагать. Свои предположения я написал.
Если не хотите отвечать на вопросы, можете и дальше исходить из того что "все остальное правильно" и это компилятор (язык программирования, стандартная бибилиотека, ОС, вселенная, ... ошибаются).
Место где проявляется ошибка совсем не обязательно совпадает с местом где она возникла.
У вас странный набор тегов в впоросе. Уберите лишние.
Винда до сих пор поддерживает dial-up соединения, так что они еще вполне себе живы, видимо. Там где есть большие расстояния, но нет других вариантов связи. Хотя я лично уже лет 15 их не видел в живую.
Так что подключить ноуты по dial-up к современной винде вполне возможно.
Не знаю о чем речь, в коде такого файла нет. Видимо происходит выход за границы выделенной памяти, отсюда ошибка. Приведите текст ошибки, а не свою интерпретацию.
Скорее всего вы не правильно читаете из файла user.dat. Думаю, что файл нельзя читать вот просто так одним куском sizeof(T) байт. Скорее всего его надо "парсить".
Как объявлен объект User?
Что содержится в файле user.dat (приведите пример реального содержимого, с которым появляется ошибка)?
Возможно драйвер для Вин10 кривой.
Другого варианта нет. Обычно самые правильные драйвера дает производитель железа, остальное - это то же самое с разной степенью урезаности функционала.
Бывает что в свежей версии драйвера возникает ошибка и пока производитель не выпустит очередную версию драйвера эта ошибка так и остается в драйвере.
Поэтому вам нужно взять другую версию драйвера и это не обязательно будет самая последняя.
Вам никто не мешает назначить букву диска на раздел вручную в менеджере дисков или в diskpart.