Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.55 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <locale.h>
  4.  
  5. // для задания 1.4
  6. void getputChar(FILE* infile, FILE* outfile)
  7. {
  8. char cha;
  9.  
  10. cha = fgetc(infile);
  11. fputc(cha, outfile);
  12. }
  13.  
  14. // для задания 1.4
  15. int reverseOrder(FILE* infile, int pos, FILE* outfile)
  16. {
  17. int npos = pos;
  18. char ch;
  19. int count;
  20. int n;
  21.  
  22. while (1) {
  23. ch = fgetc(infile);
  24. if (ch == '\n') {
  25. count = reverseOrder(infile, npos + 1, outfile) + 1;
  26. fseek(infile, pos, SEEK_SET);
  27. for (n = 0; n < count; ++n)
  28. getputChar(infile, outfile);
  29. fputc('\n', outfile);
  30. return count;
  31. }
  32. else if (ch == EOF) {
  33. if (npos - pos == 0)
  34. return 0;
  35. else {
  36. fseek(infile, pos, SEEK_SET);
  37. getputChar(infile, outfile);
  38. fputc('\n', outfile);
  39. return 1;
  40. }
  41. }
  42. else {
  43. npos++;
  44. }
  45. }
  46. }
  47.  
  48. int main(int argc, char **argv)
  49. {
  50. setlocale(LC_ALL, "Ru");
  51. FILE *file_ptr; // указатель на файл (задание 1.1)
  52. int N; // количество строк и символов в строках (задание 1.1)
  53. int count = 0; // для подсчета количества строк (задание 1.2)
  54. char ch; // для подсчета количества строк (задание 1.2)
  55. char text[50] = "0"; // строка для чтения из файла
  56. FILE *file_ptr1; // указатель на f2 (задание 1.4)
  57. int a; // для задания 1.3
  58. char tmp; // для задания 1.3
  59. FILE *file_ptr2; // вспомогательный файл для задания 1.3
  60. int c = 0; // для задания 1.4 (определение, какая строка считалась)
  61.  
  62. file_ptr = fopen("D:\\f1.txt", "w+");
  63. file_ptr1 = fopen("D:\\f2.txt", "w+");
  64. file_ptr2 = fopen("D:\\f3.txt", "w+");
  65.  
  66. if (file_ptr != NULL) {
  67. printf("Введите количество строк в файле и символов в них (не более 10): \n");
  68. scanf("%d", &N);
  69.  
  70. if (N > 10) {
  71. do {
  72. printf("Нужно ввести число не более 10! Повторите ввод: \n");
  73. scanf("%d", &N);
  74. } while (N > 10);
  75. }
  76.  
  77. printf("Введите строки не более %d символов.\n", N);
  78.  
  79. for (int i = 0; i < N; i++)
  80. {
  81. printf("Введите %d-ю строку: \n", (i + 1));
  82. scanf("%s", text);
  83. if (strlen(text) > N) {
  84. do {
  85. printf("Нельзя вводить больше %d символов! Введите строку еще раз: \n", N);
  86. scanf("%s", text);
  87. } while (strlen(text) > N);
  88. fputs(text, file_ptr);
  89. fputs("\n", file_ptr);
  90. }
  91. else
  92. {
  93. fputs(text, file_ptr);
  94. fputs("\n", file_ptr);
  95. }
  96. }
  97.  
  98.  
  99. // вывод числа строк в файле (задание 1.2)
  100. fseek(file_ptr, 0, SEEK_SET);
  101. while ((ch = fgetc(file_ptr)) != EOF) {
  102. if (ch == '\n')
  103. ++count;
  104. }
  105. printf("Количество строк в файле: %d\n", count);
  106.  
  107.  
  108. // реверс строк в файле (задание 1.3)
  109. fseek(file_ptr, 0, SEEK_SET);
  110. while (fgets(text, 50, file_ptr)) {
  111. count = strlen(text) - 1;
  112. for (a = 0; a < count / 2; a++) {
  113. tmp = text[a];
  114. text[a] = text[count - 1 - a];
  115. text[count - 1 - a] = tmp;
  116. }
  117. fputs(text, file_ptr2);
  118. }
  119. // копирование из вспомогательного файла в исходный
  120. fseek(file_ptr, 0, SEEK_SET);
  121. fseek(file_ptr2, 0, SEEK_SET);
  122. if (file_ptr2 != NULL) {
  123. while (fgets(text, 50, file_ptr2)) {
  124. fputs(text, file_ptr);
  125. }
  126. }
  127. else {
  128. printf("Невозможно открыть файл f3\n");
  129. return 1;
  130. }
  131.  
  132.  
  133. // вывод в f2 (задание 1.4)
  134. fseek(file_ptr, 0, SEEK_SET);
  135. fseek(file_ptr1, 0, SEEK_SET);
  136. reverseOrder(file_ptr, 0, file_ptr1);
  137. /*fseek(file_ptr, 0, SEEK_SET);
  138. if (file_ptr1 != NULL) {
  139. while (fgets(text, 50, file_ptr)) {
  140. c++;
  141. fseek(file_ptr1, strlen(text), SEEK_CUR);
  142. fputs(text[strlen(text) - c - 1], file_ptr1);
  143. fputs("\n", file_ptr1);
  144. }
  145. }
  146. else {
  147. printf("Невозможно открыть файл f2\n");
  148. return 1;
  149. }*/
  150.  
  151.  
  152. // вывод содержимого f2 на экран (задание 1.5)
  153. /*printf("Содержимое файла f2:\n");
  154. fseek(file_ptr1, 0, SEEK_SET);
  155. while (fgets(text, 50, file_ptr1)) {
  156. printf("%s", text);
  157. }*/
  158.  
  159. fclose(file_ptr);
  160. fclose(file_ptr1);
  161. fclose(file_ptr2);
  162. _getch();
  163. return 0;
  164. }
  165. else {
  166. printf("Невозможно открыть файл f1\n");
  167. return 1;
  168. }
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement