Помогите, пожалуйста, разобраться с одним косяком в этой программе... Проблема в том, что многострочные комментарии не удаляются, а по идее должны...
#include <stdafx.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
const int N=100;
void main ()
{
char symbol;
char symbol_temp;
char input_name[N], output_name[N];
setlocale(LC_ALL, "Russian");
printf ("Введите название входного файла! \n");
scanf ("%s", &input_name);
printf ("\n");
FILE *input_file=fopen(input_name, "r+");
if(input_file == NULL)
{
printf("Ошибка открытия файла.\n\n");
exit(1);
}
printf ("Введите название выходного файла! \n");
scanf ("%s", &output_name);
printf ("\n");
FILE *output_file=fopen(output_name, "w");
if(output_file == NULL)
{
printf("Ошибка создания файла.\n\n");
exit(1);
}
while (!feof(input_file))
{
symbol=fgetc(input_file);
if (symbol=='"')
{
do
{
fprintf(output_file,"%c", symbol);
symbol = fgetc(input_file);
}
while ( (symbol!='"')&&(!feof(input_file)) );
}
else
{
if (symbol == '/')
{
symbol = fgetc(input_file);
if (symbol == '/')
{
{
do
{
symbol = fgetc(input_file);
}
while ((symbol!='\n')&&(!feof(input_file)));
fprintf(output_file,"%c",'\n');
continue;
}
}
else
{
if (symbol == '*')
{
symbol_temp=fgetc(input_file);
do
{
symbol=symbol_temp;
symbol_temp=fgetc(input_file);
}
while ( (symbol!='*')&&(symbol_temp!='/')&&(!feof(input_file)) );
continue;
}
else
{
fprintf(output_file,"%c", '/');
fprintf(output_file,"%c", symbol);
}
}
}
}
if (!feof(input_file)) fprintf(output_file,"%c",symbol);
}
fclose(input_file);
fclose(output_file);
}
Текст, на котором я тестирую. Текст после цифры 4 и до цифры 6 остается, хотя должен удаляться. На программу смотрю - вроде все верно, вроде должно выполняться... Код вроде элементарный..(
int main (void)
{
setlocale (LC_ALL,"Russian");
////////////////////////////
1
\\//\\\///\\//\\\;
2
"/////////"
// kojdlfkerf
3
"/* kkkk */" //slkj
4
/*
khg
dmflkdms
fvsd
kf;sd;l
////////piouhjkl
5
sxsalkxas
//
*/
6
\
// system ("pause");
7
}
Свежие комментарии