Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <iostream>
  4. #include <string.h>
  5. #include <stdlib.h>
  6. #include <locale.h>
  7. #define FNAME_I "D:\\st_i.txt\0"
  8. #define FNAME_R "D:\\st_r.txt\0"
  9.  
  10. const int RAZ = 80;
  11. const char PR_R[] = "r";
  12. const char PR_W[] = "w";
  13. void make_file(char *fname);
  14. int proverka_file(char *fname, const char *);
  15. void obrabotka_file(char *, char *);
  16. void vivod_file(char*);
  17. using namespace std;
  18.  
  19. int main()
  20. {setlocale(LC_ALL,"Russian") ;
  21. char fname_i[20] = FNAME_I;
  22. char fname_r[20] = FNAME_R;
  23. make_file(fname_i);
  24.  
  25. if (!proverka_file(fname_i, PR_R))
  26. {
  27. cout << "Ошибка открытия файла " << fname_i << " на чтение" << endl;
  28. cout << "Нажмите <Enter>" << endl;
  29. getchar();
  30. return 0;
  31. }
  32. cout << "Содержимое исходного файла:"<< endl;
  33. vivod_file(fname_i);
  34.  
  35. obrabotka_file(fname_i, fname_r);
  36.  
  37. if (!proverka_file(fname_r, PR_R))
  38. {
  39. cout << "Ошибка открытия файла " << fname_r << " на чтение" << endl;
  40. cout << "Нажмите <Enter>" << endl;
  41. getchar();
  42. return 0;
  43. }
  44. cout<< "Результат :\n";
  45. vivod_file(fname_r);
  46.  
  47. cout << endl << "Для завершения нажмите <Enter>";
  48. getchar();
  49. return 0;
  50. }
  51.  
  52. void make_file(char *fname_i)
  53. {
  54. char st[RAZ];
  55. FILE *in;
  56. char otv;
  57.  
  58. while (proverka_file(fname_i, PR_R))
  59. {
  60. cout << "Такой файл уже есть! Зададите новое имя Y/N?" << endl;
  61. cin.get(otv);
  62. if (otv == 'Y' || otv == 'y')
  63. {
  64. cout << "Введите новое имя:" << endl;
  65. cin >> fname_i;
  66. cin.get();
  67. }
  68. else {
  69. cin.get();
  70. break;
  71. }
  72. }
  73.  
  74. if (!proverka_file(fname_i, PR_W))
  75. {
  76. cout << "Ошибка открытия файла " << fname_i << " на запись" << endl;
  77. cout << "Нажмите <Enter>" << endl;
  78. getchar();
  79. exit(0);
  80. }
  81.  
  82. in = fopen(fname_i, PR_W);
  83. cout << "Создание файла." << endl;
  84. cout << "Признак окончания ввода - ввод пустой строки" << endl;
  85. cout << "Введите строку и нажмите <Enter>" << endl;
  86. cout << "->";
  87. cin.getline(st, RAZ);
  88.  
  89. while (strlen(st))
  90. {
  91. fprintf(in, "%s\n", st);
  92. cout << "Введите строку и нажмите <Enter>" << endl;
  93. cout << "->";
  94. otv++;
  95. cin.getline(st, RAZ);
  96. }
  97. fclose(in);
  98. }
  99.  
  100. int proverka_file(char *fname, const char *pr)
  101. {
  102. if ((fopen(fname, pr)) == NULL)
  103. return(0);
  104. return(1);
  105. }
  106.  
  107. void obrabotka_file(char *fname_i, char *fname_r) {
  108. FILE *in, *out;
  109.  
  110. char buffer[2];
  111. std::string str = " ";
  112. std::string words;
  113.  
  114. in = fopen(fname_i, PR_R) ;
  115. out = fopen(fname_r, PR_W) ;
  116.  
  117. while (!feof(in))
  118. {
  119. if (fgets(buffer, 2, in) == NULL) break;
  120. if (buffer[0] = str[0] || buffer[0] == '\n') {
  121. str[0] = str[str.length() - 1];
  122. str[str.length() - 1] = buffer[0];
  123. fprintf(out, str.c_str());
  124. str.clear();
  125. str = " ";
  126. }
  127. else {
  128. str.append(buffer);
  129. }
  130. }
  131. fclose(in);
  132. fclose(out);
  133. }
  134.  
  135. void vivod_file(char *fname)
  136. {
  137. FILE *in_out;
  138. char st[RAZ];
  139. in_out = fopen(fname, PR_R);
  140. fgets(st, RAZ, in_out);
  141. while (!feof(in_out))
  142. {
  143. cout << st;
  144. fgets(st, RAZ, in_out);
  145. }
  146. fclose(in_out);
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement