МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра
З В І Т
до лабораторної роботи №4
з курсу: «Алгоритмічні мови та програмування»
на тему: «Обробка символьних рядків. Робота з файлами»
Варіант № 4
Мета роботи – вивчити елементи мови Сі, рядки, рядкові константи, принципи потокового вводу-виводу, стандартні файли і функції для роботи з ними.
Завдання
Сформувати і вивести на екран текстовий файл, в якому всі операторні дужки “{” і “}” замінюються на “Begin” і “End” відповідно. Підрахувати кількість операторів циклу for і умовних операторів if.
Список ідентифікаторів, констант, змінних, функцій,
використаних у програмі,
та їх пояснення
n – лічильник
a,b,c,d,m – змінні цілого в які записуються зчитані з файлу символи
main() – головна функція
printf(),fprintf(),fputc() – функції виводу даних
scanf(),fgetc(),fgets() – функції вводу даних
while() – оператор циклу з передумовою
reform() – функція для редагування файлу
ifnum() – функція для підрахунку кількості оп. “if”
fseek()– функція для переміщення курсора в потоці
remove() – функція для видалення вказаного файлу
fopen() – функція для відкриття потоку
fclose() – функція для закриття потоку
Текст програми
#include <stdio.h>
#include <stdlib.h>
void ifnum(FILE *d);
void fornum(FILE *d);
void reform(FILE *a);
void main(void)
{
FILE *file;
file=fopen("Laba3.txt","r");
reform(file);
fseek(file,0,SEEK_SET);
fornum(file);
fseek(file,0,SEEK_SET);
ifnum(file);
fclose(file);
}
void fornum(FILE *d)
{
int a,b,c,m,n=0;
while(m!=EOF)
{
a=fgetc(d);
b=fgetc(d);
c=fgetc(d);
m=fgetc(d);
fseek(d,-3,SEEK_CUR);
if(a=='f' && b=='o' && c=='r' && m=='(')
n++;
}
printf("\nnumbers of \"for\" =%d\n",n);
fprintf(d,"\nnumbers of \"for\" =%d\n",n);
}
void ifnum(FILE *d)
{
int a,b,c,n=0;
while(c!=EOF)
{
a=fgetc(d);
b=fgetc(d);
c=fgetc(d);
fseek(d,-2,SEEK_CUR);
if(a=='i' && b=='f' && c=='(')
n++;
}
printf("\nnumbers of \"if\" =%d\n",n);
fprintf(d,"\nnumbers of \"if\" =%d\n",n);
}
void reform(FILE *a)
{
int c;
char b[60];
FILE *buf;
buf=fopen("buffer.txt","w");
while(c!=EOF)
{
fgets(b,60,a);
c=fgetc(a);
fseek(a,-1,SEEK_CUR);
fprintf(buf,"%s",b);
}
c='a';
fclose(buf);
fclose(a);
buf=fopen("buffer.txt","r");
a=fopen("Laba3.txt","w");
while(c!=EOF)
{
c=fgetc(buf);
if(c=='{')
{
fprintf(a,"Begin");
printf("Begin");
}
else if(c=='}')
{
fprintf(a,"End");
printf("End");
}
else
{
fputc(c,a);
printf("%c",c);
}
}
fclose(a);
fclose(buf);
remove("buffer.txt");
a=fopen("Laba3.txt","a+");
}
Результати роботи програми