Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <locale.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main() {
- setlocale(LC_ALL, "Russian");
- int choice;
- char inputFileName[100];
- char outputFileName[100];
- printf("Выберите задачу (1 для задачи 4.1, 2 для задачи 4.2): ");
- scanf("%d", &choice);
- printf("Введите имя входного файла: ");
- scanf("%s", inputFileName);
- char tempOutputFileName[100];
- strcpy(tempOutputFileName, inputFileName); // Копируем имя входного файла во временную переменную
- char* dot = strrchr(tempOutputFileName, '.'); // Находим последнюю точку в имени файла
- if (dot) {
- *dot = '\0'; // Удаляем расширение, установив нулевой символ на место точки
- }
- strcat(tempOutputFileName, ".out"); // Добавляем расширение .out к временному имени файла
- // Проверяем, имеет ли выходное имя файла расширение .out, иначе добавляем его
- strcpy(outputFileName, tempOutputFileName);
- FILE* inputFile;
- FILE* outputFile;
- switch (choice) {
- case 1: {
- char targetSymbol;
- printf("Введите символ для поиска: ");
- scanf(" %c", &targetSymbol);
- inputFile = fopen(inputFileName, "r");
- if (inputFile == NULL) {
- perror("Ошибка открытия входного файла");
- return 1;
- }
- outputFile = fopen(outputFileName, "w");
- if (outputFile == NULL) {
- perror("Ошибка открытия выходного файла");
- fclose(inputFile);
- return 1;
- }
- char buffer[1000];
- while (fgets(buffer, sizeof(buffer), inputFile) != NULL) {
- if (strchr(buffer, targetSymbol) != NULL || strchr(buffer, targetSymbol - 32) != NULL || strchr(buffer, targetSymbol + 32) != NULL) {
- fputs(buffer, outputFile);
- }
- }
- fclose(inputFile);
- fclose(outputFile);
- printf("Задача 4.1 завершена. Результат записан в файл %s\n", outputFileName);
- break;
- }
- case 2: {
- char lastChar = '\0'; // Инициализируем lastChar начальным значением
- inputFile = fopen(inputFileName, "r");
- if (inputFile == NULL) {
- perror("Ошибка открытия входного файла");
- return 1;
- }
- outputFile = fopen(outputFileName, "w");
- if (outputFile == NULL) {
- perror("Ошибка открытия выходного файла");
- fclose(inputFile);
- return 1;
- }
- int maxReplacements = 5; // Пример значения по умолчанию
- printf("Максимальное количество замен по умолчанию: %d\n", maxReplacements);
- printf("Предупреждение: Превышение максимального количества замен будет игнорироваться системой.\n");
- printf("Введите новое максимальное количество замен: ");
- scanf("%d", &maxReplacements);
- int replacementCount = 0; // Счетчик замен
- int ch;
- int nextCh;
- while ((nextCh = fgetc(inputFile)) != EOF) {
- ch = nextCh;
- if (ch == ' ') {
- if (replacementCount < maxReplacements) {
- fputc(lastChar, outputFile);
- replacementCount++;
- }
- else {
- fputc(' ', outputFile);
- }
- }
- else if (ch == '\n') {
- fputc(lastChar, outputFile);
- fputc(ch, outputFile);
- replacementCount = 0;
- lastChar = '\0';
- }
- else {
- lastChar = ch;
- fputc(ch, outputFile);
- }
- }
- if (ch != '\n' && ch != EOF) {
- fputc(lastChar, outputFile);
- }
- fclose(inputFile);
- fclose(outputFile);
- printf("Задача 4.2 завершена. Результат записан в файл %s\n", outputFileName);
- break;
- }
- default:
- printf("Некорректный выбор. Используйте 1 для задачи 4.1 или 2 для задачи 4.2\n");
- return 1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement