Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #include <iostream>
- #include <string.h>
- #include <stdlib.h>
- #include <locale.h>
- #define FNAME_I "D:\\st_i.txt\0"
- #define FNAME_R "D:\\st_r.txt\0"
- const int RAZ = 80;
- const char PR_R[] = "r";
- const char PR_W[] = "w";
- void make_file(char *fname);
- int proverka_file(char *fname, const char *);
- void obrabotka_file(char *, char *);
- void vivod_file(char*);
- using namespace std;
- int main()
- {setlocale(LC_ALL,"Russian") ;
- char fname_i[20] = FNAME_I;
- char fname_r[20] = FNAME_R;
- make_file(fname_i);
- if (!proverka_file(fname_i, PR_R))
- {
- cout << "Ошибка открытия файла " << fname_i << " на чтение" << endl;
- cout << "Нажмите <Enter>" << endl;
- getchar();
- return 0;
- }
- cout << "Содержимое исходного файла:"<< endl;
- vivod_file(fname_i);
- obrabotka_file(fname_i, fname_r);
- if (!proverka_file(fname_r, PR_R))
- {
- cout << "Ошибка открытия файла " << fname_r << " на чтение" << endl;
- cout << "Нажмите <Enter>" << endl;
- getchar();
- return 0;
- }
- cout<< "Результат :\n";
- vivod_file(fname_r);
- cout << endl << "Для завершения нажмите <Enter>";
- getchar();
- return 0;
- }
- void make_file(char *fname_i)
- {
- char st[RAZ];
- FILE *in;
- char otv;
- while (proverka_file(fname_i, PR_R))
- {
- cout << "Такой файл уже есть! Зададите новое имя Y/N?" << endl;
- cin.get(otv);
- if (otv == 'Y' || otv == 'y')
- {
- cout << "Введите новое имя:" << endl;
- cin >> fname_i;
- cin.get();
- }
- else {
- cin.get();
- break;
- }
- }
- if (!proverka_file(fname_i, PR_W))
- {
- cout << "Ошибка открытия файла " << fname_i << " на запись" << endl;
- cout << "Нажмите <Enter>" << endl;
- getchar();
- exit(0);
- }
- in = fopen(fname_i, PR_W);
- cout << "Создание файла." << endl;
- cout << "Признак окончания ввода - ввод пустой строки" << endl;
- cout << "Введите строку и нажмите <Enter>" << endl;
- cout << "->";
- cin.getline(st, RAZ);
- while (strlen(st))
- {
- fprintf(in, "%s\n", st);
- cout << "Введите строку и нажмите <Enter>" << endl;
- cout << "->";
- otv++;
- cin.getline(st, RAZ);
- }
- fclose(in);
- }
- int proverka_file(char *fname, const char *pr)
- {
- if ((fopen(fname, pr)) == NULL)
- return(0);
- return(1);
- }
- void obrabotka_file(char *fname_i, char *fname_r) {
- FILE *in, *out;
- char buffer[2];
- std::string str = " ";
- std::string words;
- in = fopen(fname_i, PR_R) ;
- out = fopen(fname_r, PR_W) ;
- while (!feof(in))
- {
- if (fgets(buffer, 2, in) == NULL) break;
- if (buffer[0] = str[0] || buffer[0] == '\n') {
- str[0] = str[str.length() - 1];
- str[str.length() - 1] = buffer[0];
- fprintf(out, str.c_str());
- str.clear();
- str = " ";
- }
- else {
- str.append(buffer);
- }
- }
- fclose(in);
- fclose(out);
- }
- void vivod_file(char *fname)
- {
- FILE *in_out;
- char st[RAZ];
- in_out = fopen(fname, PR_R);
- fgets(st, RAZ, in_out);
- while (!feof(in_out))
- {
- cout << st;
- fgets(st, RAZ, in_out);
- }
- fclose(in_out);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement