Броене на празни редове във файл
Да се състави програма, чрез която се броят празните редове във файл, т.е. редове, в които няма знаци, четими знаци и/или интервали.
Решение
#include<iostream>
#include <stdio.h>// FILE pishe se samo s glawni bukwi
#include <string>
using namespace std;
int const Max=500;//maksimalna dylvina za 1 red
int chete_file(char mas_i[], int &br)
{
FILE *in;//promenliwa ot tip struktura fail
char red[Max];
/*
//tuk imeto na fajla ne e opisano s pylniq si pyt - mas_i
//za da se zadade pyt - kyde tochno se namira fajla se izpolzwa znaka "\"
//no w ezika C++ znakyt "\" e sluveben i za towa se izpolzwa kombinaciqta \\
*/
//fopen - funkciq za otwarqne na fajl; "r" - nachin za otwarqne
if ((in = fopen(mas_i, "r")) == NULL)//otwarq fajl za chetene rt/r+
{ return 1;//funkciqta wrusha kod za greshka i prekratqwa rabotata si
}
while (!feof(in))//EOF end of file dokato ne e sreshnat znak za kraj na fajla
{ fgets(red,Max,in); //pechara red po red sydyrvanieto na fajla
cout<<red<<endl;//pechata procheteniq red ot fajla
if (strlen(red)<2)//wseki red ima pone 1 sluveben simwol
{br++;
cout<<"Prazen red "<<br<<":"<<red;
}//broj prazni redowe
}//while
cout<<"Wsichko e procheteno, a redowete otpechatani! "<<endl;
fclose(in);//zatwarq otworeniq za chetene fajl
return 0;
}
int main() //nachalo na programata
{
char mas_i[]="c:\\dev-cpp\\1.1";
int dyl,br=0;
cout<<"Da se syzdade programa, koqto se tyrsi broj prazni redowe\n";
cout<<"w sydyrvanieto na syshestwuwash tekstow fajl.\n";
cout<<"Ako takyw fajl ne syshestwuwa ili nqma dostyp do nego da\n";
cout<<"se izwede syotwetno syobshenie za greshka.\n";
cout<<"Izpolzwajte sors koda na swoqta programa za tektow fajl.\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<<"Broj prazni redowe wyw fajla: "<<br<<endl;}
else cout<<"Wyw fajla nqma prazni redowe!\n";
}
system("pause");//chaka natiskane na klawish
return 0;//osbovdawa zaetite sistemni resursi i wrysha kod na greshka 0
}//kraj na programata