Отчет по лабораторной работе №9
Постановка задачи
Создать текстовый файл F1 не менее, чем из 10 строк и записать в него информацию
Выполнить задание.
Вариант задачи
1) Скопировать из файла F1 в файл F2 все строки, кроме тех, что начинаются на букву А.
2) Подсчитать количество символов в первом слове F2.
Текст программы
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
#include <windows.h>
#include <stdio.h>
#include <fstream.h>
#include <string>
#include <string.h>
#include <iomanip.h>
//---------------------------------------------------------------------------
#pragma argsused
char* rus(const char* text);
void record(int n, FILE *);
void show(FILE *, char *);
void show2(FILE *, char *);
void copy(FILE *, FILE *, char *);
void amount(FILE *, char *);
int main(int argc, char* argv[])
{
const int n = 2550;
FILE *f1; // указатель на 1 файл
FILE *f2; // аналогично
char text[n]; // массив символов куда запись инфы
/*
1. Создать текстовый файл F1 не менее,
чем из 10 строк и записать в него информацию
*/
record(n,f1); // запись строк в файл f1
show(f1,text); // показ
// 2. Выполнить задание.
// 1) Скопировать из файла F1 в файл F2 все строки,
// кроме тех, что начинаются на букву А.
cout << endl;
copy(f1,f2,text); // копирование по заданию
show2(f2,text); // показ
|
|
// 2) Подсчитать количество символов в первом слове F2.
amount(f2,text);// подсчет кол-ва
getch();
return 0;
}
void record(int n, FILE *f1)
{
char *str = new char [n];
f1 = fopen("f1.txt", "w"); // открываем файл f1 для записи
cin.get(str,n,'*'); // ввод до тех пор, пока не введем *
fputs(str,f1); // запись в файл
fclose(f1); // закрываем
}
void show(FILE *f1, char *text)
{
clrscr();
// ф-ия показ
int i=0; // счетчик строк
char *real_tail;
f1 = fopen("f1.txt", "r"); // файл для чтения
if (f1 == NULL)
{
perror(rus("Создайте файл f1.txt"));
}
while(fgets(text,2550,f1)) // считываем файл построчно
{
real_tail="";
printf(rus("Строка %d: "),++i);// покажем номер строки
if(text[strlen(text)-1] == '\n')//проверяем является ли последний элемент
// в строке символом ее окончания
// strlen-1 т.к последний символ - это \n
|
|
{ // если является, то
text[strlen(text)-1]='\0'; // конец строки
}// эта часть кода добавлена лишь для
// отображения символа конца строки в консоль без перевода на новую строку
printf("%s%s\n",text,real_tail); // а теперь выводим строку
};
fclose(f1); // закрываем
}
void copy(FILE *f1, FILE *f2, char *text)
{ //1) Скопировать из файла F1 в файл F2 все строки,
// кроме тех, что начинаются на букву А.
f1 = fopen("f1.txt", "r"); // для считывания файл 1
if (f1 == NULL)
{
perror(rus("Создайте файл f1.txt"));
}
f2 = fopen("f2.txt", "w"); // для записи файл 2
if (f2 == NULL)
{
perror(rus("Создайте файл f2.txt"));
}
char *real_tail; // опять хвостик
while(fgets(text,2550,f1)) // считываем строки
{
int key = text[0]; // это нужно для сравнения
|
|
if((key == -96)||(key == -128))//проверяем является ли первый элемент в строке
// символом А
{
text[0]='\0'; // если является, то это конец строки
// и переходим к следующей
}
else fputs(text,f2); // иначе вставляем в файл 2
};
fclose(f1); // закрываем
fclose(f2); // закрываем
}
void show2(FILE *f2, char *text)
{
// все аналогично как в show
int i=0;
char *real_tail;
f2 = fopen("f2.txt", "r");
if (f2 == NULL)
{
perror(rus("Создайте файл f2.txt"));
}
while(fgets(text,2550,f2))
{
real_tail="";
printf(rus("Строка %d: "),++i,strlen(text));
if(text[strlen(text)-1] == '\n')//проверяем является ли последний элемент
// в строке символом ее окончания
{
|
|
text[strlen(text)-1]='\0';
}// эта часть кода добавлена лишь для
// отображения символа конца строки в консоль без перевода на новую строку
printf("%s%s\n",text,real_tail);
};
fclose(f2); // закрываем
}
void amount(FILE *f2, char *text)
{
f2 = fopen("f2.txt","r"); // открываем для считывания
if (f2 == NULL)
{
perror(rus("Создайте файл f1.txt"));
}
int chislo=0; // число символов в 1 слове
int chislo2 = 0; // для регулирования подсчета символов
fgets(text,2550,f2);// считываем первую строку
for (int i = 0; i < strlen(text); i++) // идем по строке
{
if (chislo2 == 1) break; // если число2 = 1, то выход. значит подсчитали
// число симвовол
else // иначе считаем число символов в 1 слове 1 строки
{
if ((text[i] != ' ')&&(text[i] != ',')&&(text[i] != '!')&&(text[i] != '\n')
&&(text[i] != '\0'))
{
// после первого слова будут символы выше, до появления этих символов
// считаем их количество
chislo++;
}
else chislo2++; // если попали на тот символ, то число2 = 1, а значит
// первое слово закончилось
}
}
// выводим это количество!
cout << endl <<rus("Кол-во символов в 1 слове 1 строки: ")<<chislo;
fclose(f2);
}
char bufrus[256];
char* rus(const char* text)
{
CharToOem(text,bufrus);
return bufrus;
}
//---------------------------------------------------------------------------
Результат работы программы
Дата добавления: 2018-05-13; просмотров: 292; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!