Добрый вечер. Следующая программа, по моей задумке сначала запоминает ко-во символов введенных с клавы до нажатия Enter, затем считывает все введенные символы в строку s с длиной !!! равной 1, и пишет эти символы в заданную строку терминала, потом выводит символ строки s под индексом !!! 11. Почему так происходит и в чем моя ошибка? Спасибо за внимание.
Приветствую Вас, Charodey! Если я правильно понял, то проблема в том, что Си не контролирует выход за пределы массива, ты должет это делать сам. Дело в том, что при определении массива ты говоришь, что хочешь зарезервировать n*k байт, где n - кол-во ячеек, а k - размер одной в байтах (1 для char 2 для int и т.д.) Если ты пишешь за пределы выделенного пространства, то никто не гарантирует, что эти данные не будет менять другой процесс, это также может превести к фатальной ошибке - о переполнение буфера слышал?? Удачи! Ответ отправлен: 15.12.2003, 10:44 Отправитель: Vdr Отвечает vitya
Добрый день, Charodey! 1. неправильно объявлен массив s... ну я бы советовал делать его new после того, как известно сколько символов введено - так: char * s = new char[i + 1]; в конце не забыть сделать delete [] s; 2. вызов функции верен. но после нее надо сделать s[cWritten] = 0; 3. наконец вывод должен быть сделан так (в приложении)
Приложение: Ответ отправлен: 16.12.2003, 09:44 Отправитель: vitya
Вопрос № 1327
привет у меня вопрос Решил сотварить графику на Си а мне компиль выдаёт такую хрень error=-3 --- типа файл не найден --- REason=device driver file not found(EGAVGA.BGI) я та думал что в graphics.h - это .BGI а аказалось нет - чё делать помогите плиз
Доброе время суток, _hf! Сбрось файл egavga.bgi в каталог, где у тебя валяется экзешник, либо в компиляторе в опциях пропиши правильно пути. Ответ отправлен: 15.12.2003, 12:12 Отправитель: chebv
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.