Tolstohabr, Работает точно так же, как если бы вы вместо функтора написали просто функцию и передали бы ее в for_each. С точки зрения языка функция, функтор, лямбда - просто некие объекты, в которых реализован оператор вызова (скобки) и обращаться с ними можно одинаково. А for_each в третьем параметре принимает любой объект который можно "вызвать".
Tolstohabr, Функтор в этом случае будет не частью объекта man, а отдельным объектом, где будет определен только operator()(const man &). Вот такой объект и указывайте в for_each. По сути лямбда и создает такой функтор, только делается это не явно компилятором.
Вы уж определитесь, вопрос по С++ или по Си?
Исходя из предоставленного кода вопрос по Си. В С++ хоть и присутствуют Сишные функции, но обычно их не используют, а пользуются классами ввода вывода ifststream/ofstream и т.п.
Если вы пытаетесь писать на С++, то выбирайте плюсовые инструменты, а не сишные. К тому же они проще в использовании и подобный вопрос у вас не возник бы.
Юникод то работает. Просто в шрифте, который вы используете для вывода, нет этих символов. Обычное явление.
В Юникодной кодировке может быть представлено ~100500 символов. Но это не значит, что каждый шрифт обязан предоставлять их все. Выберите шрифт, где эти символы реализованы.
Нет у Ростелекома никаких камней.
Если подключаетесь по акции, то когда акция кончится ценник вырастет.
После подключения зарегистрируйтесь на сайте ростелекома и в личном кабинете увидите все что у вас подключено. Там же можно управлять услугами, добавлять/удалять опции и тратить бонусы на скидки.
Обычно реестр в винде не сыпется просто так.
Варианты, которые приходят в голову:
1. дохнет память - проведите тест памяти, загрузившись с внешнего носителя
2. сыпется диск - проведите тест поверхности диска, загрузившись с внешнего носителя
Если все Ок:
1. Возможно какой-то работающий процесс грузит реестр большим количеством запросов (правда обычно от этого реестр не портится, но все же)
2. Проверьте систему на вирусы, загрузившись с внешнего носителя.
Если никаких проблем не обнаружилось - переустанавливайте винду.
На самом деле уже после первых двух пунктов, если аппаратных проблем не обнаружено, можно переустанавливать, потому что поиск остальных проблем может быть не результативный и/или в итоге все равно приведет к переустановке.
Sergei Nazarenko, MBR устарел, только потому что у него есть ограничения, которых нет в GPT.
Но флэшки в настоящее время вряд ли реально подходят под эти ограничения. Разве что вы ради эксперимента решите сделать 100500 крошечных разделов.
Я не против GPT, если что. У меня на дисках везде GPT. Но установочные/загрузочные флэшки делаю обычно в MBR.
Sergei Nazarenko, Ну как-бы загрузочные флэшки так же как и установочные существуют и в MBR.
Впрочем это к вопросу не относится, извиняюсь за свой ошибочный ответ.
По GPT на флэшках сказать ничего не могу, т.к. обычно не использую такое разбиение на флэшках.
im_noob, Евгений Шатунов писал, что надо вывод строки делать внутри самой функции InputSymbol, до вызова free, а не в main, т.к. там память, занимаемая строкой, уже освобождена.
Ну и кроме того в main нету Stri писал об этом выше, а s у вас не модифицируется, так что выводит правильно. Выводить надо там где модифицированная строка еще существует!
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().