Ввод и вывод символьных строк в Си
Пожалуйста, приостановите работу AdBlock на этом сайте.
Итак, строки в языке Си. Для них не предусмотрено отдельного типа данных, как это сделано во многих других языках программирования. В языке Си строка – это массив символов. Чтобы обозначить конец строки, используется символ ‘\0’ , о котором мы говорили в прошлой части этого урока. На экране он никак не отображается, поэтому посмотреть на него не получится.
Создание и инициализация строки
Так как строка – это массив символов, то объявление и инициализация строки аналогичны подобным операциям с одномерными массивами.
Следующий код иллюстрирует различные способы инициализации строк.
Рис.1 Объявление и инициализация строк
В первой строке мы просто объявляем массив из десяти символов. Это даже не совсем строка, т.к. в ней отсутствует нуль-символ \0 , пока это просто набор символов.
Вторая строка. Простейший способ инициализации в лоб. Объявляем каждый символ по отдельности. Тут главное не забыть добавить нуль-символ \0 .
Третья строка – аналог второй строки. Обратите внимание на картинку. Т.к. символов в строке справа меньше, чем элементов в массиве, остальные элементы заполнятся \0 .
Четвёртая строка. Как видите, тут не задан размер. Программа его вычислит автоматически и создаст массив символов нужный длины. При этом последним будет вставлен нуль-символ \0 .
Как вывести строку
Дополним код выше до полноценной программы, которая будет выводить созданные строки на экран.
Рис.2 Различные способы вывода строки на экран
Как видите, есть несколько основных способов вывести строку на экран.
- использовать функцию printf со спецификатором %s
- использовать функцию puts
- использовать функцию fputs , указав в качестве второго параметра стандартный поток для вывода stdout .
Единственный нюанс у функций puts и fputs . Обратите внимание, что функция puts переносит вывод на следующую строку, а функция fputs не переносит.
Как видите, с выводом всё достаточно просто.
Ввод строк
С вводом строк всё немного сложнее, чем с выводом. Простейшим способом будет являться следующее:
Функция gets приостанавливает работу программы, читает строку символов, введенных с клавиатуры, и помещает в символьный массив, имя которого передаётся функции в качестве параметра.
Завершением работы функции gets будет являться символ, соответствующий клавише ввод и записываемый в строку как нулевой символ.
Заметили опасность? Если нет, то о ней вас любезно предупредит компилятор. Дело в том, что функция gets завершает работу только тогда, когда пользователь нажимает клавишу ввод. Это чревато тем, что мы можем выйти за рамки массива, в нашем случае — если введено более 20 символов.
К слову, ранее ошибки переполнения буфера считались самым распространенным типом уязвимости. Они встречаются и сейчас, но использовать их для взлома программ стало гораздо сложнее.
Итак, что мы имеем. У нас есть задача: записать строку в массив ограниченного размера. То есть, мы должны как-то контролировать количество символов, вводимых пользователем. И тут нам на помощь приходит функция fgets :
Функция fgets принимает на вход три аргумента: переменную для записи строки, размер записываемой строки и имя потока, откуда взять данные для записи в строку, в данном случае — stdin . Как вы уже знаете из 3 урока, stdin – это стандартный поток ввода данных, обычно связанный с клавиатурой. Совсем необязательно данные должны поступать именно из потока stdin , в дальнейшем эту функцию мы также будем использовать для чтения данных из файлов.
Если в ходе выполнения этой программы мы введем строку длиннее, чем 10 символов, в массив все равно будут записаны только 9 символов с начала и символ переноса строки, fgets «обрежет» строку под необходимую длину.
Обратите внимание, функция fgets считывает не 10 символов, а 9 ! Как мы помним, в строках последний символ зарезервирован для нуль-символа.
Давайте это проверим. Запустим программу из последнего листинга. И введём строку 1234567890 . На экран выведется строка 123456789 .
Рис.3 Пример работы функции fgets
Возникает вопрос. А куда делся десятый символ? А я отвечу. Он никуда не делся, он остался в потоке ввода. Выполните следующую программу.
Вот результат её работы.
Рис.4 Непустой буфер stdin
Поясню произошедшее. Мы вызвали функцию fgets . Она открыла поток ввода и дождалась пока мы введём данные. Мы ввели с клавиатуры 1234567890\n ( \n я обозначаю нажатие клавиша Enter ). Это отправилось в поток ввода stdin . Функция fgets , как и полагается, взяла из потока ввода первые 9 символов 123456789 , добавила к ним нуль-символ \0 и записала это в строку str . В потоке ввода осталось ещё 0\n .
Далее мы объявляем переменную h . Выводим её значение на экран. После чего вызываем функцию scanf . Тут-то ожидается, что мы можем что-то ввести, но т.к. в потоке ввода висит 0\n , то функция scanf воспринимает это как наш ввод, и записывается 0 в переменную h . Далее мы выводим её на экран.
Это, конечно, не совсем такое поведение, которое мы ожидаем. Чтобы справиться с этой проблемой, необходимо очистить буфер ввода после того, как мы считали из него строку, введённую пользователем. Для этого используется специальная функция fflush . У неё всего один параметр – поток, который нужно очистить.
Исправим последний пример так, чтобы его работа была предсказуемой.
Теперь программа будет работать так, как надо.
Рис.4 Сброс буфера stdin функцией fflush
Подводя итог, можно отметить два факта. Первый. На данный момент использование функции gets является небезопасным, поэтому рекомендуется везде использовать функцию fgets .
Второй. Не забывайте очищать буфер ввода, если используете функцию fgets .
На этом разговор о вводе строк закончен. Идём дальше.
Практика
Решите предложенные задачи:
Для удобства работы сразу переходите в полноэкранный режим
Исследовательские задачи для хакеров
- Проверьте как ведет себя ваш компилятор в случае переполнения буфера.
Источник
Создание строчек в документе Microsoft Word
Довольно часто во время работы с документом MS Word возникает необходимость создать строчки (линиатуры). Наличие строк может потребоваться в официальных документах или же, например, в пригласительных, открытках. Впоследствии в эти строки будет добавлен текст, вероятнее всего, он будет вписываться туда ручкой, а не печататься.
В этой статье мы рассмотрим несколько простых и удобных в работе способов, с помощью которых можно сделать строку или строки в Word.
ВАЖНО: В большинстве описанных ниже методов длина линии будет зависеть от значения полей, установленных в Ворде по умолчанию или ранее измененных пользователем. Чтобы изменить ширину полей, а вместе с ними обозначить максимально возможную длину строки для подчеркивания, воспользуйтесь нашей инструкцией.
Подчеркивание
Во вкладке “Главная” в группе “Шрифт” есть инструмент для подчеркивания текста — кнопка “Подчеркнутый”. Вместо нее также можно использовать комбинацию клавиш “CTRL+U”.
Используя этот инструмент, можно подчеркнуть не только текст, но и пустое место, в том числе и целую строку. Все, что требуется, предварительно обозначить длину и количество этих самых строк пробелами или знаками табуляции.
1. Установите курсор в том месте документа, где должна начинаться подчеркнутая строка.
2. Нажмите “TAB” нужное количество раз, чтобы обозначить длину строки для подчеркивания.
3. Повторите аналогичное действие для остальных строк в документе, в которых тоже нужно сделать подчеркивание. Также вы можете скопировать пустую строку, выделив ее мышкой и нажав “CTRL+C”, а затем вставить в начале следующей строки, нажав “CTRL+V” .
4. Выделите пустую строку или строки и нажмите кнопку “Подчеркнутый” на панели быстрого доступа (вкладка “Главная”), или используйте для этого клавиши “CTRL+U”.
5. Пустые строки будут подчеркнуты, теперь вы можете распечатать документ и написать на нем от руки все, что требуется.
Примечание: Вы всегда можете изменить цвет, стиль и толщину линии подчеркивания. Для этого просто нажмите на небольшую стрелку, расположенную справа от кнопки “Подчеркнутый”, и выберите необходимые параметры.
Если это необходимо, вы также можете изменить цвет страницы, на которой вы создали строчки. Воспользуйтесь для этого нашей инструкцией:
Комбинация клавиш
Еще один удобный способ, с помощью которого можно сделать в Ворде строку для заполнения — использование специальной комбинации клавиш. Преимущество данного метода перед предыдущим заключается в том, что с его помощью можно создать подчеркнутую строку любой длины.
1. Установите курсор в том месте, где должна начинаться строка.
2. Нажмите кнопку “Подчеркнутый” (или используйте “CTRL+U”), чтобы активировать режим подчеркивания.
3. Нажмите вместе клавиши “CTRL+SHIFT+ПРОБЕЛ” и держите до тех пор, пока не проведете строку необходимой длины или необходимое количество строк.
4. Отпустите клавиши, отключите режим подчеркивания.
5. Необходимое количество строк для заполнения указанной вами длины будет добавлено в документ.
- Совет: Если вам нужно создать много подчеркнутых строк, проще и быстрее будет создать всего одну, а затем выделить ее, скопировать и вставить в новую строку. Повторите это действие необходимое количество раз, пока не создадите нужное количество строк.
Примечание: Важно понимать, что расстояние между строками, добавленными с помощью непрерывного нажатия комбинации клавиш “CTRL+SHIFT+ПРОБЕЛ” и строками, добавленными методом копирования/вставки (а также нажатия «ENTER» в конце каждой строки) будет отличаться. Во втором случае оно будет больше. Этот параметр зависит от установленных значений интервалов, это же происходит с текстом во время набора, когда интервал между строками и абзацами отличается.
Автозамена
В случае, когда необходимо поставить всего одну-две строки, можно воспользоваться стандартными параметрами автозамены. Так будет быстрее, да и просто удобнее. Однако, у этого метода есть парочка недостатков: во-первых, непосредственно над такой строкой нельзя напечатать текст и, во-вторых, если таких строк будет три и более, расстояние между ними будет не одинаковым.
Следовательно, если вам нужна всего одна или две подчеркнутых строки, а заполнять вы их будете не печатным текстом, а с помощью ручки на уже распечатанном листе, то этот метод вас вполне устроит.
1. Кликните в том месте документа, где должно быть начало строки.
2. Нажмите клавишу “SHIFT” и, не отпуская ее, трижды нажмите “-”, расположенную в верхнем цифровом блоке на клавиатуре.
3. Нажмите “ENTER”, введенные вами дефисы будут преобразованы в нижнее подчеркивание длиною на всю строку.
Если это необходимо, повторите действие для еще одной строки.
Рисованная линия
В Ворде имеются инструменты для рисования. В большом наборе всевозможных фигур можно также найти и горизонтальную линию, которая послужит нам обозначением строки для заполнения.
1. Кликните в том месте, где должно быть начало строки.
2. Перейдите во вкладку “Вставка” и нажмите на кнопку “Фигуры”, расположенную в группе “Иллюстрации”.
3. Выберите там обычную прямую линию и нарисуйте ее.
4. В появившейся после добавления линии вкладке “Формат” вы можете изменить ее стиль, цвет, толщину и другие параметры.
Если это необходимо, повторите вышеописанные действия для того, чтобы добавить еще строки в документ. Более подробно о работе с фигурами вы можете прочесть в нашей статье.
Таблица
Если вам необходимо добавить большое количество строк, наиболее эффективное решение в таком случае — это создание таблицы размером в один столбец, конечно же, с необходимым вам количеством строк.
1. Кликните там, где должна начинаться первая строка, и перейдите во вкладку “Вставка”.
2. Нажмите на кнопку “Таблицы”.
3. В выпадающем меню выберите раздел “Вставка таблицы”.
4. В открывшемся диалоговом окне укажите необходимое количество строк и всего один столбец. Если это необходимо, выберите подходящий параметр для функции “Автоподбор ширины столбцов”.
5. Нажмите “ОК”, в документе появится таблица. Потянув за “плюсик”, расположенный в левом верхнем углу, вы можете ее переместить в любое место страницы. Потянув за маркер в правом нижнем углу, вы можете изменить ее размер.
6. Кликните по “плюсику” в левом верхнем углу, чтобы выделить всю таблицу.
7. Во вкладке “Главная” в группе “Абзац” нажмите на стрелку, расположенную справа от кнопки “Границы”.
8. Поочередно выберите пункты “Левая граница” и “Правая граница”, чтобы скрыть их.
9. Теперь в вашем документе будет отображаться только необходимое количество строк, указанного вами размера.
10. Если это необходимо, измените стиль таблицы, а наша инструкция вам в этом поможет.
Несколько рекомендаций напоследок
Создав необходимое количество строк в документе с помощью одного из вышеописанных методов, не забудьте сохранить файл. Также, во избежание неприятных последствий в работе с документами, рекомендуем настроить функцию автосохранения.
Возможно, вам потребуется изменить интервалы между строками, сделав их больше или меньше. Наша статья на данную тему вам в этом поможет.
Если строки, которые вы создавали в документе, необходимы для того, чтобы в дальнейшем их заполняли вручную, с помощью обычной ручки, распечатать документ вам поможет наша инструкция.
Если у вас возникнет необходимость удалить линии, обозначающие строки, наша статья поможет вам это сделать.
Вот, собственно, и все, теперь вы знаете обо всех возможных методах, с помощью которых можно сделать строчки в MS Word. Выберите тот, который вам наиболее подходит и используйте его по мере необходимости. Успехов в работе и обучении.
Помимо этой статьи, на сайте еще 12419 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Источник