Advertisement
greannmhar

Строки 10

May 21st, 2024 (edited)
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.24 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define MAX_WORD_LENGTH 100
  6.  
  7. void removeSectionBetweenWords(FILE *inputFile, FILE *outputFile, const char *word1, const char *word2) {
  8. char buffer[MAX_WORD_LENGTH * 2 + 1]; // Буфер для хранения слова и пробелов
  9. int foundWord1 = 0;
  10.  
  11. while (fgets(buffer, sizeof(buffer), inputFile)) {
  12. char *p = buffer;
  13.  
  14. // Пока не найдем первое слово или не дойдем до конца строки
  15. while (*p && !foundWord1) {
  16. if (strcmp(p, word1) == 0) {
  17. foundWord1 = 1;
  18. p += strlen(word1); // Пропускаем первое слово
  19. continue;
  20. }
  21. fputc(*p, outputFile);
  22. p++;
  23. }
  24.  
  25. // После нахождения первого слова пропускаем все до второго
  26. while (*p && strcmp(p, word2) != 0) {
  27. p++;
  28. }
  29.  
  30. // Если нашли второе слово, записываем оставшуюся часть строки
  31. if (*p && strcmp(p, word2) == 0) {
  32. fputc(*p, outputFile);
  33. p++;
  34. while (*p) {
  35. fputc(*p, outputFile);
  36. p++;
  37. }
  38. }
  39. }
  40. }
  41.  
  42. int main(int argc, char *argv[]) {
  43. if (argc != 4) {
  44. printf("Usage: %s input_file output_file word1 word2\n", argv[0]);
  45. return 1;
  46. }
  47.  
  48. const char *inputFileName = argv[1];
  49. const char *outputFileName = argv[2];
  50. const char *word1 = argv[3];
  51. const char *word2 = argv[4];
  52.  
  53. FILE *inputFile = fopen(inputFileName, "r");
  54. if (inputFile == NULL) {
  55. perror("Error opening input file");
  56. return 1;
  57. }
  58.  
  59. FILE *outputFile = fopen(outputFileName, "w");
  60. if (outputFile == NULL) {
  61. perror("Error opening output file");
  62. fclose(inputFile);
  63. return 1;
  64. }
  65.  
  66. removeSectionBetweenWords(inputFile, outputFile, word1, word2);
  67.  
  68. fclose(inputFile);
  69. fclose(outputFile);
  70.  
  71. printf("Section between '%s' and '%s' removed successfully.\n", word1, word2);
  72. return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement