Задание:
Напишите программу, убирающую все комментарии из любой Си-программы. Не забудьте должным образом обработать строки символов и строковые константы. Комментарии в Си не могут быть вложены друг в друга.
Идея:
Считать код из входного файла, удалить комментарии в коде и вывести в выходной файл. В качестве кода используем код самой программы.
Решение (Visual studio):
#include "stdio.h"
#include "stdlib.h"
int main()
{
char c;
FILE *fin, *fout;
fopen_s(&fin, "in.txt", "r"); //чтение файла
fopen_s(&fout, "out.txt", "w"); //запись файла
while ((c = fgetc(fin)) != EOF) //конец потока
{
if (c != '/')
{
fputc(c, fout);
}
else
if ((c = fgetc(fin)) == '/')
{
while (c != '\n')
{
fputc(' ', fout);
c = fgetc(fin);
}
fputc('\n', fout);
}
else
{
fputc('/', fout);
fputc(c, fout);
}
}
fclose(fout); //закрыть
fclose(fin);
return 0;
}
Пример входного файла in.txt:
Пример выходного файла out.txt: