Обработка открытого файла

Каким образом можно прочитать уже открытый файл или записать в него информацию? Для этого в языке C существуют специальные функции:

Чтение (ввод) Запись (вывод)
fgetc() fputc()
fscanf() fprintf()
fgets() fputs()
fread() fwrite()

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

Проверка признака конца файла

Так как при каждой операции ввода/вывода происходит перемещение указателя текущей позиции в файле, в какой-то момент указатель достигает конца файла. Структура типа FILE имеет поле – индикатор конца файла. Функция feof() проверяет состояние индикатора конца файла и возвращает значение 0, если конец файла не был достигнут, или значение, отличное от нуля, если был достигнут конец файла. Функция имеет единственный аргумент – указатель на FILE. Вызов функции в команде if:

if (! feof(fin))…

проверяет, что конец файла еще не достигнут.

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

Простейший способ выполнить чтение из файла или запись в файл – использовать функции fgetc() или fputc().

Функция fgetc() выбирает из файла очередной символ; ей нужно только знать указатель на файл, например:

char Symb=fgetc(fin);

Если при обработке достигается конец файла, то функция fgetc() возвращает значение EOF(end of file).

Функция fputc() заносит значение символа Symb в файл, на который указывает указатель out. Формат вызова функции:

f putc(Symb,out);

Пример 1. Текст из файла my_char.txtвыводится на экран. Если файл не найден, на экран выводится сообщение "File not found!":

#include "stdafx.h"

int main()

{

FILE *ptr; //описание указателя на файл

char ch;

if ((ptr=fopen("my_char.txt","r"))!=NULL)/*открытие файла для чтения*/

{

ch=fgetc(ptr); //чтение первого символа из файла

while (!feof(ptr)) //цикл пока не достигнут конец файла

{

printf("%c",ch); //вывод символа, взятого из файла

ch=fgetc(ptr); //чтение следующего символа из файла

}

fclose(ptr); //закрытие файла

}

else printf("\nFile not found!");

return 0;

}

 

В этом примере для чтения файла используется указатель ptr. При открытии файла производится проверка. Если переменной ptr присвоено значение NULL, то файл не найден; на экран выводится соответствующее сообщение, и программа завершается. Если ptr получил ненулевое значение, то файл открыт. Далее выполняется чтение символов из файла до тех пор, пока не будет достигнут конец файла (!feof(ptr)). Прочитанный символ помещается в переменную ch, а затем выводится на экран.

Пример 2. Записать в файл буквы, вводимые с клавиатуры. Ввод продолжается до нажатия клавиши F6 или CTRL/z (ввод символа EOF – конца файла):

#include "stdafx.h"

int main(void)

{

char c;

FILE *out; // описание указателя на файл

out=fopen("Liter.txt","w"); //открытие файла для записи

while ( (c=getchar( ))!=EOF) /*пока не будет введен символ конца */

fputc(c,out); // запись введенного символа в файл

fclose(out); //закрытие файла

return 0;

}

 

Функция fgets() читает строку символов из файла. Она отличается от функции gets() тем, что в качестве второго параметра должно быть указано максимальное число вводимых символов плюс единица, а в качестве третьего - указатель на переменную файлового типа. Строка считывается целиком, если ее длина не превышает указанного числа символов, в противном случае функция возвращает только заданное число символов.

Рассмотрим пример:

fgets(string, n, fp);

Функция возвращает указатель на строку string при успешном завершении и константу NULL в случае ошибки либо достижения конца файла.

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

Например:

fputs("Ехаmple", fp);

При возникновении ошибки возвращается значение EOF.

Пример 3. Имеется текстовый файл. Определить длины строк этого файла:

#include <string.h>

#include <iostream>

 

int _tmain(int argc, _TCHAR* argv[])

{

setlocale(0,"RUS");

char st[125];

int a=0;

FILE *fo;

fo = fopen("prim.txt","r"); //открытие файла для чтения

while (!feof(fo))//цикл пока не конец файла

{

fgets(st,125,fo); //читать строку символов

if (!feof(fo)) //если не конец файла

{

a=strlen(st); //определить длину строки

printf("Длина:%d строка:%s \n",a,st);

}

}








Дата добавления: 2015-02-10; просмотров: 708;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.