русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Чтение и запись строк


Дата добавления: 2013-12-23; просмотров: 1060; Нарушение авторских прав


Консольные функции gets() и puts() позволяют считывать и записывать строки.

Функция gets() считывает строку символов с клавиатуры, и размещает ее по адресу, указанному в аргументе.

Т.к. функция работает с буфером, на время ее работы выполнение программы приостанавливается, она ожидает ввода текста с клавиатуры, признаком окончания ввода является клавиша ENTER, после чего строка, введенная пользователем, присваивается переменной в качестве значения.

Следует обратить внимание, что при использовании функции gets(), несмотря на нажатии клавиши ENTER, в конец строки ставится не символ перехода на новую строку, а нулевой символ ‘\0’ – признак конца строки.

При наборе строки допускается ее редактирование.

В качестве аргумента указывается массив символов, в который и будут записаны символы, введенные пользователем.

Пример 4. Ввести строку текста в массив, вывести строку на экран.

# include <stdio.h>

void main()

{char buffer[125];

printf (“Vvedite stroky”);

gets (buffer);

printf(“stroka: %s \n”, buffer);

}

Функция gets() будет рассматривать символы, введенные с клавиатуры, как значение строковой переменной с именем buffer. Следует помнить, что один элемент необходим для символа конца строки, поэтому длину массива указывать необходимо на единицу больше максимальной строки.

Функция puts() выводит на экран строку символов и переводит курсор на следующую строку. Если при выводе возникла ошибка, то функция возвращает константу EOF.

В качестве параметра могут выступать:

- строковый литерал,

- строковая константа,

- строковая переменная.

Хорошо известную фразу можно записать так:

puts(“Hello, world!!!”); // это строковый литерал

 

2.3 Обзор консольных функций ввода / вывода

Сведения об основных функциях ввода / вывода приведены в табл. 1



Таблица 1

Функция Операция
getchar() Считывает символ с клавиатуры, выводит его на экран, ожидает перехода на новую строку
getch() Считывает символ с клавиатуры и не выводит его на экран, не ожидает перехода на новую строку
putchar() Выводит символ на экран
gets Считывает строку с клавиатуры, ожидает перехода на новую строку
puts() Выводит строку на экран и переводит курсор на следующую строку

 

2.4. Форматированный ввод / вывод данных

Функции printf() и scanf() выполняют форматированный ввод / вывод на консоль, т.е. они могут считывать и записывать данные в заданном формате и с комментариями. Обе функции могут оперировать любыми встроенными типами данных, включая символы, строки и числа.

Функцию printf() часто называют «выводом с форматированием».

Формат вызова:

#include <stdio.h>

printf(‘”управляющая строка”, аргумент_1, аргумент_2, …);

Первый аргумент функции, в кавычках называют строкой форматирования, т.к. она указывает, как нужно производить вывод, т.е. определяет формат вывода, последующие аргументы указывают, что нужно выводить.

Строка форматирования содержит элементы трех типов:

- обычные символы, которые просто копируются в стандартный выходной поток (выводятся на экран дисплея),

- команды форматирования, которые определяют тип отображаемого аргумента,

- управляющие символьные последовательности, которые осуществляют форматирование.

Команда форматирования начинается с символа %, за которым следует код формата. Основные команды форматирования представлены в табл. 2

Таблица 2. Команды форматирования функций printf() и scanf()

Команды Пояснение
символ
%s Строка символов
%d, %i Десятичное целое со знаком
%u Десятичное целое без знака
%f Вещественное число (с плавающей точкой)
%e Экспоненциальное представление вещественного числа
%o Восьмеричное число без знака
%x 16-ричное число без знака

 

Количество аргументов после строки форматирования должно совпадать с количеством команд форматирования, причем совпадение обязательно и в порядке их следования.

При форматировании необходимо не только выводить символы, но и управлять выводом, например переводить строки, делать отступы и т.д. Для этой цели служат управляющие символы. Каждый такой символ начинается с символа обратной косой черты (\), который указывает на то, что символы, расположенные за ним, являются управляющими. Когда компилятор встречает \, он не отображает следующие символы, а выполняет действие, на которое они указывают.

Пример 5. Вывод значений трех переменных на экран терминала. Для большей наглядности различные элементы функции printf() выделим различными шрифтами.

- вывод текста (комментарий),

- управляющие последовательности,

- команды форматирования,

- имена переменных (объекты вывода).

printf(“Vivod trex zelix chisel: \n \t x = %d \t y=%d \t z =%d ”, x, y, z) ;

 

Комбинация символов %d служит своего рода указателем места в строке, куда необходимо вставить значение переменной при печати.

Пусть 5, 15, 25 – это значения переменных x, y, z. Тогда на экране будет отображено следующее:

Vivod trex zelix chisel:

x = 5 y = 15 z = 25

Функция scanf() считывает данные с клавиатуры и сохраняет информацию в переменных, заданных аргументами, перечисленным в списке аргументов.

Формат вызова:

#include <stdio.h>

scanf(“форматирование”, аргумент_1, …);

 

Аналогично функции printf() используются команды форматирования.

Пример 6. Ввод различных данных

#include <stdio.h>

int i;

float fp;

char c, s[81];

scanf(“%d %f %c %s”, &i, &fp, &c, &s);

 

2.5 Сравнительная характеристика консольных функций ввода / вывода

Функции, используемые для ввода и вывода данных, зависят от типа данных и способа их представления. Остановимся на свойствах функций printf() и scanf(), главное из которых возможность работать с самыми разнообразными данными. Например, с помощью одной и той же функции scanf() можно вводить как числовые, так и символьные данные. Кроме того, функции printf() и scanf() позволяют работать со списком из нескольких аргументов, т.е. вводить или выводить сразу несколько переменных, а также форматировать выводимые данные. Итак, функции printf() и scanf() универсальны и это делает их привлекательными, но, с другой стороны, следует отметить, что эти функции достаточно громоздкие (занимают много места) и медленно работают. Поэтому для работы с текстовой информацией в состав библиотек входят специальные функции для работы как с отдельными символами, так и с целыми строками.

Если необходимо работать с отдельными символами, то наиболее удобно работать с функциями getch, getchar(), putchar. Для работы с целыми строками использовать лучше функции gets(), puts().

Но все эти функции ввода / вывода данных имеют только один аргумент (параметр), а это означает, что они могут отображать только один объект.

 

3. Функции ввода / вывода библиотеки iostream

Библиотека iostream – стандартная библиотека языка С++.

Поток в С++ - это логическое устройство, получающее или передающее информацию. Поток связан с физическим устройством ввода / вывода. Все потоки функционируют одинаков, хотя физические устройства, с которыми они связаны, могут быть самыми различными.

Потоки, определенные в языке С++:

cin – стандартный ввод,

cout – стандартный вывод,

cerr – стандартная ошибка,

clog – буферизованная версия cerr.

По умолчанию эти потоки связаны с консолью:

cin – с клавиатурой,

coun, cerr, clog – с терминалом.

Операции ввода / вывода языка С++:

Вывод <<,

Ввод >>.

Пример 7. Напечатать на терминале строку текста: “Primer vivoda - 34”

cout << “Primer vivoda - ” << 34;

 

Пример 8. Ввести целое число в переменную х

int x;

cin >> x;

Пример 9. Ввести строку текста в статический массив

char str[80];

cin >> str;

 

4. Файловый ввод – вывод

Файл является набором данных, обычно на диске, со своим именем.

Компилятор языка С, С++, а также функции и макрокоманды, работающие с файлом, рассматривают файл как структуру, предопределенную в компиляторе, подобно стандартным типам данным, которая содержит необходимую информацию для связи программы с внешними устройствами и для работы с буфером. Файл определяется структурой, стандартное наименование этой структуры – FILE. Т.о., любая программа, работающая с файлами, должна использовать этот тип структуры. Для работы с файлами используются специальные файловые потоки, обмен осуществляется с помощью функций потокового ввода / вывода. Перечень файловый функций (режим открытия файла) представлен в табл. 3. Благодаря работе этих функций алгоритм взаимодействия с файловой структурой скрыт от пользователя.

Таблица 3. Режимы работы с файлами

Режим Описание
r Файл открывается для чтений
w Открывается пустой файл для записи (если файл существует, он стирается). Переписать или создать новый файл для записи
a Файл открывается для добавления информации в его конец (т.е. дополнить или создать файл для записи)
r+ Файл открывается для чтения и записи (файл должен существовать)
w+ Открывается пустой файл для чтения и записи (если файл существует, он стирается), т.е. создать новый файл для чтения и записи
a+ Открывается файл для чтения и добавления информации в его конец (т.е. дополнить или создать файл для чтения и записи)

 

Остановимся подробнее на свойствах файлов:

- файлы могут изменять свой размер,

- обращение к элементам файла производится при помощи специальных функций или макроопределения,

- доступ к элементу происходит в текущей позиции файла (позиция чтения / записи),

- текущая позиция автоматически продвигается при операциях чтения / записи, т.е. файл просматривается последовательно.

Для того, чтобы изменить последовательный просмотр файла (организовать произвольный доступ), существуют функции изменения текущей позиции в файле.



<== предыдущая лекция | следующая лекция ==>
Чтение и запись символов | Четыре этапа работы с файлами


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.