Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > функция вызывает ошибку системы |
Автор: jurgal 6.1.2008, 22:47 | ||
при выполнении функции система просит отправить рапорт об ошибке в майкрософт =) |
Автор: bsa 6.1.2008, 23:09 |
ошибок в приведенном коде не нашел. 1. возможно, ты передаешь кривой указатель в качестве параметра 2. что за функцмя strcpy_s(), главное, зачем? 3. str указывает куда? память выделена? 4. если твоему методу передать "100.", то может вылететь с ошибкой. Догадайся почему (hint: обрати внимание на точку) |
Автор: Fazil6 7.1.2008, 00:19 | ||
значит нужно отправить... |
Автор: JackYF 7.1.2008, 01:02 | ||
да уж, ![]()
скорее всего. Память выделить под строку надо. |
Автор: bsa 7.1.2008, 01:08 | ||
Твоя ошибка в этом месте. strcpy не выделяет память под переменную. Поэтому ты должен либо сделать str статическим массивом (char str[1000]) или перед выполнением strcpy выделять память. Кстати, если уж на то пошло, что надо писать не strcpy_s(str, strlen(s), s), а strcpy_s(str, str_size, s), где str_size - объем выделенной памяти под str |
Автор: jurgal 7.1.2008, 03:58 | ||
сейчас работает, но результат не правильный. strcpy_s() вообще убрал пока, чтобы не смущало =) . допустим если ввести 45, то результатом будет 573 , т.е. он переводит 4 по ASCII в 52, затем умножает на 10 и прибавляет к 5 переведенной через ASCII в 53 и в итоге получается 573. Что то я запутался, ведь isdigit() проверяет символ аргумент или число. Пытался функцией atoi() каждый символ который isdigit преобразовать в int, но компилятор ругается на невозможность такого преобразования. Хелп =) |
Автор: Kuvaldis 7.1.2008, 04:48 | ||||
Надо
Потому что код цифры и ЗНАЧЕНИЯ цифры - это разные вещи... и отличаются на 48 Для переносимости вычитаем из кода цифры код нуля (это как раз и есть 48 = 0x30 ) |