Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
20_04_13_FAJLY_20-04.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
145 Кб
Скачать
☆

Две расширенные функции: getw() и putw()

В дополнение к функциям getc() и putc() Borland С++ поддерживает две дополнительные функции буферизированного ввода/вывода - getw() и putw(). (Хотя эти функции не определены в ANSI- стандарте, их можно найти в большинстве библиотек других компиляторов.) Они используются для чтения и записи чисел в файл. Эти функции работают точно так же, как и getc() и putc(), за тем исключением, что вместо чтения или записи одного символа они читают или записывают целые числа. Например, следующий фрагмент кода записывает целое число в файл, на который указывает fp:

putw(100, fp);

Работа со строками: fgets() и fputs()

Файловая система ввода/вывода С содержит две функции, которые могут читать или писать строки в поток - fgets() и fputs(). Они имеют следующие прототипы: int fputs(const char *str, FILE *fp); char *fgets(char *str, int длина, FILE *fp);

Функция fputs() во многом подобна puts(), за тем исключением, что она записывает строку в указанный поток. Функция fgets() читает строку из указанного потока, пока не встретится символ новой строки или не будет прочитано (длина - 1) символов. Если прочитан символ новой строки, то он станет частью строки (в противоположность gets()). В обоих случаях результирую¬щая строка завершается нулевым символом. Функция возвращает str в случае успеха и нулевой указатель - в случае ошибки. Можно использовать fgets() как альтернативу gets(). Чтобы сделать это, надо просто указать stdin как указатель на файл. Например, следующая про¬грамма читает до 79 символов, полученных из стандартного ввода: #include <stdio.h> int main(void) { char s[80]; printf("Enter a string: "); fgets(s, 80, stdin); printf ("Here is your string: %s", s); return 0; }

Преимущество использования fgets() над gets() состоит в том, что можно предотвратить переполнение массива ввода. Массив может содержать символ новой строки.

Ниже приведена таблица основных (часто используемых) функций файловой системы языка Си.

Имя Что делает эта функция

fopen() Открывает файл

fclose() Закрывает файл

putc() Записывает символ в файл

fputc() То же, что и putc()

getc() Читает символ из файла

fgetc() То же, что и getc()

fgets() Читает строку из файла

fputs() Записывает строку в файл

fseek() Устанавливает указатель текущей позиции на определенный байт файла

ftell() Возвращает текущее значение указателя текущей позиции в файле

fprintf() Для файла то же, что printf() для консоли

fscanf() Для файла то же, что scanf() для консоли

feof() Возвращает значение true (истина), если достигнут конец файла

ferror() Возвращает значение true (истина), если произошла ошибка

rewind() Устанавливает указатель текущей позиции в начало файла

remove() Стирает файл

fflush() Дозапись потока в файл

Чтение и запись символов

функции ввода

getchar()

getche()

getch()

читают символ с клавиатуры

функция вывода

putchar()

печатает символ на экран в текущей позиции курсора

Прототипы функций getche() и putchar(): int getche(void); int putchar(int cb);

Функция getche() возвращает нажатый символ.

getche() возвращает только младший байт (символ, введенный с клавиатуры).

Функция getche() требует заголовочный файл conio.h.

Функция putchar() возвращает cb в случае успеха или EOF - в случае ошибки.

cb - целое, на экран выводится только младший байт.

(EOF - это макроопределение, находящееся в stdio.h, означающее конец файла.)

/* переключатель регистра */ 10 #include <conio.h> // getche #include <stdio.h> // #include <ctype.h> // tolower

int main(void)

{ char ch; do

{ ch = getche(); if(islower(ch)) putchar(toupper(ch)); else putchar (tolower(ch)); } while (ch!='.'); /* использование точки для остановки */ return 0; }

Альтернативы getche() - getchar() и getch()

getchar() буферизирует ввод, пока не встретится возврат каретки.

getch() не выводит символ на экран.