Здравствуйте, Natan! tmp[i++] = str1[d]; - Это тоже самое что и: tmp[i] = str1[d]; i++; tmp[i] = 0; - Тут думаю понятно. Записывая ноль в определенное место строки, мы ее заканчиваем, т.к. строки кончаются нулем. delete[] str2; - Уничтожаем динамически созданную строку str2 из памяти. Т.е. освобождаем память. C++ лучше всего имхо изучать по книге "Г. Шилдт - Самоучитель С++" Ответ отправлен: 22.07.2004, 15:01 Отправитель: CrackLab Отвечает bocha
Добрый день, Natan! вчера я в ответе писал: char str1[100],*str2 = new char;str2[0]=0;, а ты опять char str1[100],*temp,*str2; str2 кто инициализировать будет? замени и все работать будет, иначе в строке strcpy(tmp, str2);система пошлет тебя далеко и без денег(хотя не факт, str2 случайно м.б. валиден), а уж что она скажет по поводу delete[] str2; я промолчу. Переменная tmp не используется ( внутри цикла используется другая,локальная по отношению к if(){темп} ).ЗЫ: strcpy не умеет правильно работать с нулевым указателем, поэтому нельзя записать char *str2=0; По поводу трех строк: поставить предпоследним символом строки (в которой хранится твоя гистограмма), найденый символ, завершить строку нулем ( в си ноль-символ - признак конца строки ), удалить строку с устаревшей гистограммой. Колль уж результирующая строка завершается нулем, то замени последний цикл
на cout << str2 << endl; Ответ отправлен: 22.07.2004, 18:38 Отправитель: bocha
Вопрос № 1760
Zdrastvuite !!! Proshu obyasnit' kak pravilno rabotat' na DEBUG
Приветствую Вас, Natan! Чтобы правильно отлаживать программу, вам не обходимо знать хотя бы минимальные основы ассемблера. Тогда все вопросы отпадут сами. Ответ отправлен: 22.07.2004, 15:17 Отправитель: CrackLab Отвечает Sedric
Приветствую Вас, Natan! Какой debug? Досовский? Тогда почитай статью "dZebug:руководство юЗверя" на wasm.ru З.Ы.Слушай, пиши кириллицей, этот волапюк задолбал!
Ответ отправлен: 23.07.2004, 12:43 Отправитель: Sedric
Вопрос № 1761
Dobrogo vremeni !!! Est stroka str1. Zada4a dolzna dinami4eski videlyat' pamyat' dlya vvoda bukvi f v noviyu stroku str2 Spasibo
Здравствуйте, natan! str2[i++]=0;- лишняя и бесполезная строка(оно и так уже ноль(tmp[i]=0;выполнет это действие)), на остальное в прошлом ответе смотри Ответ отправлен: 22.07.2004, 18:44 Отправитель: bocha
Вопрос № 1762
Здраствуйте. Подскажите как из под Win2K (XP) напрямую обратится к паралельному порту. Всего лишь нужно, к примеру, получить сигнал для исполнительного устройства. Скажем включить кофеварку или что другое. И нужно-то всего ничего получить сигнал на на какой-нибудь ножке LPT-разъема. Как это реализовать на C/C++. Приложение нужно консольное.
Доброе время суток, Игорь! Напрямую из консоли не получится. Напрямую можно только драйверам. А всем другим - только через WinAPI Ответ отправлен: 23.07.2004, 12:43 Отправитель: Sedric
Вопрос № 1763
Есть ли стандартный диалог открытия директории (API или MFC)? Например как в Winamp по нажатию Ins. Неужели его самому надо делать?
Здравствуйте, Сергей! SHBrowseForFolder() Ответ отправлен: 23.07.2004, 10:28 Отправитель: Gibbel
Вопрос № 1764
bsa"d Spasibo vsem ekspertam za prislanie otveti !!! No problema ostalas ??? Ni kak ne vozmozno vivesti na ekran novuyu stroku str2 !!!! Gde oshibka ????????
Добрый день, natan! ну вопервых убери нафиг последний for (cout оставь, он сам умеет работать с нуль-терминэйтед строками, иначе получишь strlen(str2)*strlen(str2) символов при выводе) и первую tmp(не используется она и компилер должен выдавать ворнинг), а во вторых может компилируешь как-то не так, только что проверил в vc6, все работает, вчера без проверки писал, прогони прогу под отладчиком и выясни где она у тебя глючит (брекпоинт поставь на начало цикла и исполни его пошагово, посмотри,чтозаписано в str1, что записывается в str2). ЗЫ:cin>>str2; читает до первого пробельного символа (пробел, табуляция, перевод строки...)м.б. все дело в этом? Ответ отправлен: 23.07.2004, 05:16 Отправитель: bocha
Вопрос № 1765
здравствуйте. Вопрос: Написал код программы - создание окошка в windows и вывод надписи в центре окна (писал с использованием WinApi), код написан в C++Builder 6? компилирую - ничего не происходит, ошибки не выдает. Почему так - код верен, точно. Заранее спасибо.
Добрый день, kirill! Во-первых приведи код.Может и есть ошибка. Во-вторых в BCB на чистом WinAPI писать имхо изврат. Ответ отправлен: 23.07.2004, 12:43 Отправитель: Sedric
Вопрос № 1766
Свой вопрос о получении доступа к конкретной ячейке памяти я уже задавал. От bocha был получен такой ответ: reinterpret_cast(0x22); Покопавшись в инете, я понял что этот оператор меняет тип указателя и, как следствие, можно сделать так, чтобы он указывал на некоторую ячейку памяти (например, 0х0408) Однако у меня в Вин ХР возникает проблема: при выполнении система выдает ошибку: Программа выполнила недопустимую операцию и т.д. Возможно, это связано с тем, что мне необходимо работать напрямую с контроллером LPT (то есть с его регистрами данных, управления и состояния), так как при исмользовании reinterpret_cast() с другим адресом (от фонаря) таких проблем не возникает. ОДНАКО! при использовании паскалевских mem($xxxx:$xxxx) и memw($xxxx:$xxxx) таких проблем в той же Вин ХР при работе с тем же контроллером LPT не возникает. Вот такая закавыка.
Принимаются любые идеи и варианты.
Добрый день, Михаил! Что конкретно вы хотите сделать? Вы хотите работать с памятью своего же процесса? Только чтение или чтение/запись? Ответ отправлен: 23.07.2004, 13:53 Отправитель: CrackLab Отвечает Sedric
Добрый день, Михаил! Это тебе NT'я не даст сделать. Не надо так вот насиловать память. Работай через WinAPI Ответ отправлен: 23.07.2004, 12:43 Отправитель: Sedric Отвечает bocha
Приветствую Вас, Михаил! В винде адреса 0x00000000-0x0000FFFF зарезервированы для выявления нулевых указателей, поэтому что-где-как пишешь? Ответ отправлен: 23.07.2004, 12:56 Отправитель: bocha
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.