Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лб инф передел / C++ / Алиса / Информатика / ПерваяПрограммаС.doc
Скачиваний:
47
Добавлен:
15.04.2015
Размер:
3.17 Mб
Скачать

Функции ввода и вывода

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

  • посимвольная запись данных в файл или вывод их на принтер с использованием функции putc() или fputc();

  • посимвольное чтение данных из файла с использованием функции getc() или fgetc();

  • построчная запись данных в файл или вывод их на принтер с использованием функции fputs();

  • построчное чтение данных из файла с использованием функции fgets();

  • форматированный вывод символов, строк или чисел на диск или на принтер с помощью функции fprintf();

  • форматированный ввод символов, строк или чисел из файла с помощью функции fscanf();

  • запись целой структуры с использованием функции fwrite();

  • чтение целой структуры с использованием функции fread().

Работа с символами

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

/*fputc.c*/

#include

main()

{

FILE *fp;

char letter;

if((fp = fopen("MYFILE","w"))==NULL)

{

puts("Невозможно открыть файл");

exit();

}

do

{

letter=getchar();

fputc(letter, fp);

}

while(letter != '\r');

fclose(fp);

}

Файл открывается с режимом доступа "w". Если файл с именем MYFILE не существует к моменту выполнения программы, он будет создан. В цикле do, с помощью функции getchar(), осуществляется ввод последовательности символов,

Буферизированный ввод функции getchar()

Если в вашем компиляторе функция getchar() используется для буферизированного ввода, то для ввода отдельных символов, предназначенных для записи в дисковый файл, вы можете применить вместо нее функцию getche(). В этом случае цикл do...while можно заменить циклом while:

while ((letter = getche())) != '\r')

которые затем записываются в файл с помощью функции putc(). Синтаксис записи putc() таков:

putc(char_variable, file_pointer);

С теми же аргументами может использоваться и функция fputc().

Цикл выполняется до тех пор, пока не нажата клавиша Enter, которая вводит код «возврат каретки» (\r), после чего файл закрывается.

Посимвольное чтение из файла

Для посимвольного чтения из файла используется функция getc() или fgetc(). Синтаксис записи следующий:

char_variable = getc(file_pointer);

Например, для того чтобы получить символ из файла, связанного с указателем на файл fp, надо написать инструкцию:

letter = getc(fp);

Ниже приведена программа, которая читает файл, созданный в предыдущем примере:

/*fgets.c*/

#include

main()

{

FILE *fp;

int letter;

if((fp = fopen("MYFILE","r"))==NULL)

{

puts("Невозможно открыть файл");

exit();

}

while((letter = fgetc(fp)) != EOF)

printf("%c", letter);

fclose(fp);

}

Здесь файл открывается с режимом доступа "r", после чего в цикле while осуществляется посимвольное чтение. Большая часть работы программы выполняется внутри условия цикла while. Выражение

letter = fgetc(fp)

присваивает символ, полученный из файла, переменной letter. Цикл выполняется до тех пор, пока указатель не достигнет конца файла и значение переменной не станет равно значению специальной константы EOF* (она определена в файле заголовков STDIO.H), что, собственно, и является признаком достижения конца файла.

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

Соседние файлы в папке Информатика