|
Символьные массивыgetline добавляет символ '\ 0' (нулевой символ, чье ASCII-значение равно нулю) наконец созданного ею массива, для обозначения конца символьного цепочки. Этo преобразования так же применяется в C. Когда цепную стала вроде "Hello \ n" появляется в C-программе, ее сохранен как символьный массив, содержащий знаки цепочки и заканчивается символом '\ 0', чтобы обозначить конец цепочки. +-----+-----+-----+-----+-----+------+------+ | H | e | l | l | o | \ n | \ 0 | +-----+-----+-----+-----+-----+------+------+ Указатель формата% s функции printf ожидает, что соответствующий аргумент будет цепочкой, представлен именно в этой форме. copy также полагается на тот факт, что ее аргумент ввода заканчивается на '\ 0' и копирует этот знак к выводу. Мимоходом стоит отметить, что даже такая маленькая программа как эта представляет некоторые сложные проблемы разработки. Например, что должна сделать main в случае, когда она встретит строку, больше установлено ограничение? getline действует безопасно, потому что она перестает набирать знаки, когда массив полный, даже если не было знака новой строки. Проверяя длину и последний возвращен знак, main может определить не был строка слишком длинным, после чего обойтись с ним, как ей заблагорассудится. Ради краткости, мы проигнорировали этот вопрос. Пользователь getline никак не может знать заранее, которым за длинным будет введен строку, поэтому getline проверяет на предмет переполнения. Противовес, пользователь copy уже знает (или может узнать) длину цепочек, поэтому мы решили проверку на ошибки в нее не добавлять. Другие статьи по теме: - Функции и структура программ- Внешние переменные и область действия - Введение в c++ - Символьные массивы - Типы, операторы и выражения |
|
2006-2024 © SMTI.RU Главная страница | Связаться с нами |