Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_2_изд_испр.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.27 Mб
Скачать

12.2. Функции getchar и putchar

Прототип: int getchar(void); - чтение одного символа с клавиатуры.

Файл прототипа: stdio.h.

Возвращаемое значение: символ (при успешном вводе)или EOF (ошибка ввода или конец файла). Признак конца файла при вводе: символы Ctrl+z.

Прототип: int putchar(int); - вывод одного символа на экран.

Файл прототипа: stdio.h

Возвращаемое значение: символ (успех)|EOF (ошибка).

Пример.

/* Чтение строки с терминала. */

/* Возвращает указатель на строку и ее длину */

int getline(char *s, // Введенная строка

int lim){ // Ее максимальная длина

int c, // Вводимый символ

i;

for(i=0; i<lim && (c=getchar())!=EOF && c!='\n'; i++){

s[ i ]=c;

}

s[ i ]='\0';

return i;

} // End getline

12.3. Функции gets и puts

Прототип: char* gets(char*); - чтение строки символов.

Файл прототипа: stdio.h.

Возвращаемое значение: указатель на введенную строку (успех) | NULL- "пустой" указатель.

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

Пример.

char string[20];

................

gets(string);

Замечание. Можно включать в строку пробелы в отличие от спецификации s функции scanf.

Прототип: int puts(char*); - вывод на экран строки символов.

Файл прототипа: stdio.h.

Возвращаемое значение: последний выведенный символ (успех) | EOF (конец файла).

Замечание. Конечный 0 не выводится. В конец строки добавляется символ перевод строки.

12.4. Внутренняя передача данных (функции sscanf и sprintf)

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

Преобразование из символьной строки во внутреннее представление.

Прототип: int sscanf(char *buf, char *control, аргумент[, аргумент]...);

Здесь buf – исходная строка, control – управляющая строка.

Возвращаемое значение – см.функцию scanf.

Преобразование из внутреннего представления в символьную строку.

Прототип: int sprintf(char *buf, char *control, аргумент[, аргумент]...);

Файл прототипов обеих функций: stdio.h.

Возвращаемое значение: длина сформированной строки - число байтов без конечного 0, который добавляется или EOF (при ошибке).

Пример.

i=4;

a[ i ] = -37.45;

sprintf(mult, "<%12.5e%3s%d>", a[ i ], "x**" ,i );

Результат будет иметь вид: < -3.7450e+01x**4>.

Вопросы для самопроверки и контроля

Вопросы для самопроверки

  1. Какие символы являются ограничителями ввода для спецификации s функции scanf ?

  2. Удаляются ли символы-ограничители из входного потока функцией gets?

  3. Какой символ помещается в конец выводимой строки функцией puts?

  4. Можно ли ввести строку, содержащую пробелы, функцией scanf?

Контрольные вопросы

  1. Какой символ ограничивает ввод функции gets?

  2. Что возвращает функция getchar при ошибке ввода?

  3. Для чего можно использовать функции внутренней передачи данных?

  4. Какие стандартные потоки определены в языке C?

13. ФАЙЛЫ

13.1. Основные понятия

Файл – это набор данных ограниченного объема, хранящийся на некотором носителе информации. Файлом можно назвать книгу, музыку, записанную на магнитной ленте, картину на холсте и многое другое. Однако исторически сложилось, что файлом называют наборы данных, которые можно обрабатывать средствами вычислительной техники. Основными носителями информации для них в настоящее время являются: "жесткий" диск, дискета, компакт-диск (CD ROM), магнитная лента, микросхемы.

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

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

В данном разделе будут рассмотрены средства работы с последовательными текстовыми файлами, как с наиболее распространенными и простыми. Такие файлы могут быть подготовлены обычными редакторами текстов, например: NotePad (Блокнот) - ОС Windows и Norton Editor (ne), Borland C++ 3.1 – ОС MS DOS. В языке Basic для цели обмена информацией между приложением и внешней средой используются специальные инструкции, а в языке C – набор библиотечных функций.