Написать программу, удаляющую все комментарии заданного вида, включая многострочные - C (СИ)
Формулировка задачи:
Помогите пожалуйста!
Написать программу удаляющую все комментарии вида <!--...--> включая многострочные, а так же при условии что в одной строке может быть несколько комментариев.
Решение задачи: «Написать программу, удаляющую все комментарии заданного вида, включая многострочные»
textual
Листинг программы
#include <stdio.h> int main() { const char *strings[2] = {"<!--", "-->"}; FILE *fIn = fopen("in.txt", "r"); if (!fIn) { fprintf(stderr, "Error opening input file"); return 1; } FILE *fOut = fopen("out.txt", "w"); if (!fOut) { fprintf(stderr, "Error opening output file"); return 1; } char buf[4]; unsigned isInside = 0, searchPos = 0, bufSize = 0; int c; while ((c = getc(fIn)) != EOF) { buf[bufSize++] = c; if (c == strings[isInside][searchPos]) { searchPos++; if (strings[isInside][searchPos] == '\0') { isInside = !isInside; searchPos = bufSize = 0; } } else { if (!isInside) { if (fwrite(buf, 1, bufSize, fOut) != bufSize) { fprintf(stderr, "Error writing output file"); return 1; } } bufSize = 0; } } if (ferror(fIn)) { fprintf(stderr, "Error reading input file"); return 1; } fclose(fIn); fclose(fOut); }
Объяснение кода листинга программы
- Программа открывает два файла: исходный файл для чтения и результирующий файл для записи.
- В программе определён массив из двух строк, указывающих на комментарии, которые нужно удалить.
- Используется цикл while для чтения каждого символа из исходного файла.
- Если текущий символ совпадает с текущим символом в строке комментария, то программа переходит к следующему символу в строке комментария.
- Если текущий символ не является частью строки комментария, то программа записывает этот символ в результирующий файл.
- Если программа встречает символ новой строки в строке комментария, то она начинает новый фрагмент кода, записывая символы в результирующий файл.
- Если программа встречает символ конца строки в строке комментария, то она записывает все оставшиеся символы в результирующий файл.
- Если программа встречает символ конца файла в строке комментария, то она записывает все оставшиеся символы в результирующий файл.
- Если программа встречает ошибку чтения из исходного файла, то она выводит сообщение об ошибке и завершает работу с кодом ошибки.
- Программа закрывает исходный файл и результирующий файл.
- Программа завершается без ошибок, если все комментарии успешно удалены.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д