Функция fgets - чете ред от файл
Библиотечната функция fgets чете ред от файл.
Описание на библиотечна функция fgets: параметри променлива за прочетен стринг, максимална дължина, поток.
Функцията чете ред от файл и записва съдържанието на прочетения ред в променливата за прочетен стринг.
Всеки текстов файл е файл с последователен достъп - т.е. такъв файл се чете еднопосочно.
Този тип файл съдържа по два служебни символа - за край на ред и преминаване на нов ред.
Един ред може да съдържа и само тези два служебни символа - т.е. празен ред.
Чрез функция fgets се ограничава максималната възможна дължина в произволен ред в отворения файл, т.е. най-големия брой символи в един ред от този файл.
Тези два служебни символа не се извеждат на екрана от конвенционалните текстови редактори.
Всеки текстов файл може да съдържа и като последен знак друг служебен знак - за край на файл.
За достъп до функция fgets е необходимо свързване с библиотечен файл stdio.h.
Следващата програма съдържа решен пример, илюстриращ работата на библиотечна функция fgets:
#include<iostream>
#include <stdio.h>// FILE pishe se samo s glawni bukwi
using namespace std;
int const
Max=500;//maksimalna dylvina za 1 red - opredelq rabotata na fgets
int chete_file(char mas_i[], int &br)
{
FILE *in;//promenliwa ot tip struktura fail
char red[Max];
br=0;//nachalna inicializaciq
/*
//tuk imeto na cheteniq fajl ne e opisano s pylniq si pyt - mas_i
//za da se zadade pyt - kyde tochno se namira ukazaniq fajl se izpolzwa znaka "\"
//no w ezika C++ znakyt "\" e sluveben i za towa se izpolzwa kombinaciqta \\
*/
if ((in = fopen(mas_i, "rt")) == NULL)//otwarq fajl za chetene rt/r+
{ return 1;//funkciqta wrusha kod za greshka i prekratqwa rabotata si
}
fgets (red,Max,in);// fgets chete pyrwiq red ot fajl
while (!feof(in))//dokato ne e sreshnat znak za kraj na fajl
{ cout<<red;//pechara red po red sydyrvanieto na fajl
br++;//procheten e now red
fgets (red,Max,in);// fgets chete red ot fajl
}//while
cout<<"Wsichko e procheteno, a redowete otpechatani! "<<endl;
fclose (in);//zatwarq otworeniq za chetene fajl
return 0;
}//kraj na chetene fajl- fgets
int main( )
{
char mas_i[]="E:\\konkurs\\BC\\BIN\\1.1";
int dyl,br=0;
cout<<"Da se syzdade programa, koqto izwevda broq redowe ot sydyrvanieto\n";
cout<<"na syshestwuwash tekstow fajl. \n";
cout<<"Ako takyw fajl ne syshestwuwa ili nqma dostyp do nego da se izwede \n";
cout<<"syotwetno syobshenie za greshka. \n";
cout<<"Wywedete imeto na fajl: ";cin>>mas_i;
dyl=chete_file(mas_i,br);
if (dyl>0)
{
cout<<"Greshka. Ne moga da namerq/otworq fajl s ime: "<<mas_i<<".\n";
//drug nachin za izwevdane gr. fprintf(stderr, "Cannot open input file.\n");
//stderr predefinira potoka na danni kym ustrojstwoto, w koeto e startirana
//programata, t.e. syobsheniqta she se izwevdat na ekran
} else {
if (br!=0)
{cout<<"Fajlyt sydyrva "<<br<<" reda.\n";}
}
system("pause");//chaka natiskane na klawish ot klawiaturata
return 0;
}//kraj na pograma fgets
Задачи с подобни функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени примери.
Начало на страницата