Реализовать программу перевода табуляций в пробелы - C (СИ)
Формулировка задачи:
Есть задание: реализовать программу перевода табуляций в пробелы (при их наличии) и пробелы в табуляции (при их наличии). Программа, скорее всего циклическая сама по себе, рекомендовано было использовать работу с файлами и до этого момента всё ясно. Но как реализовать счетчик, который будет из файла брать символы и их сравнивать? На этом застопорился и далее работа не идет.
Решение задачи: «Реализовать программу перевода табуляций в пробелы»
textual
Листинг программы
#include <stdio.h> #include <string.h> main(int, char) { FILE *file1, *file2; char fname[256]; int ch; printf ("Enter the filename to be copyed:\n"); fgets (fname, sizeof (fname), stdin); //со стандартного потока stdin (клавиатура) считывается имя файла который надо модифицировать if (fname[strlen(fname) - 1] ='\n') fname[strlen(fname) - 1] = 0; //тут мы приводим в порядок строку с именем файла чтобы в дальнейшем проверить ее file1 = fopen (fname,"r+"); //открываем исходный файл для чтения if (!file1){ printf ("Can't find this file %s\n",fname); return 0; //если нет такого файла программа завершается } file2 = fopen ("output.txt","w+"); //открываем (создаем если не существует) модифицированный файл output.txt для правки if (!file2){ printf ("Can't create new file! Write Error\n"); fclose (file1); return 0; //если создать невозможно то программа завершается } while ((ch = getc(file1))!=EOF) //начинаем цикл: пока считанный символ не является признаком конца файла продолжаем { switch (ch){ case ' ': putc ('\t', file2); break; //если считываемый символ пробел, записываем в файл табуляцию case '\t': putc (' ',file2); break; //если символ табуляции - записываем пробел default: putc (ch, file2); break; //если любой другой символ, оставляем все без изменения } } fclose(file1); fclose(file2); //окончание работы с двумя файлами }
Объяснение кода листинга программы
- Программа начинается с подключения необходимых библиотек и объявления основных переменных.
- Пользователю предлагается ввести имя файла для копирования.
- Имя файла сохраняется в массив fname.
- Если последний символ введенного имени файла - это символ новой строки, он удаляется.
- Файл открывается для чтения с помощью функции fopen.
- Если файл не может быть открыт, программа выводит сообщение об ошибке и завершается.
- Файл открывается для записи с помощью функции fopen.
- Если файл не может быть создан, программа выводит сообщение об ошибке, закрывает исходный файл и завершается.
- Программа переходит к циклу while, который считывает каждый символ из исходного файла до конца файла.
- В зависимости от значения считанного символа, в модифицированный файл записывается табуляция или пробел.
- Если символ не является табуляцией или пробелом, он записывается в модифицированный файл без изменений.
- По завершении работы с файлами, они закрываются с помощью функции fclose.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д