实验12_4_过滤注释
未AC,得分80,有一个点格式错误。
#include <stdio.h>
void fun(FILE *fPtr, int begin, int end);
int main()
{
int n;
scanf("%d", &n);
int a[6];
FILE *fPtr = fopen("dict.dic", "r");
for (int i = 1; i <= 5; i++)
fscanf(fPtr, "%d", &a[i]);
if (n == 1)
fun(fPtr, 6, a[n]);
else
fun(fPtr, a[n - 1] + 1, a[n]);
fclose(fPtr);
}
void fun(FILE *fPtr, int begin, int end)
{
rewind(fPtr);
int a;
for (int i = 1; i < begin; i++)
while (1)
{
a = fgetc(fPtr);
if (a == 10)
break;
}
int ch, c;
int sta[3] = {0};
ch = fgetc(fPtr);
int flag;
for (int i = begin; i <= end; i++)
{
flag = 0;
while (1)
{
if (sta[0] == 0)
{
if (ch == '/')
{
c = ch;
ch = fgetc(fPtr);
if (ch == '/')
{
sta[0] = 1;
sta[1] = 1;
}
else if (ch == '*')
{
sta[0] = 1;
sta[2] = 1;
}
else
{
flag = 1;
printf("%c", c);
}
continue;
}
else
{
printf("%c", ch);
flag = 1;
}
}
else
{
if (sta[1] == 1 && ch == '\n')
{
sta[0] = 0;
sta[1] = 0;
if (flag == 1)
printf("\n");
}
else if (sta[2] == 1 && ch == '/' && c == '*')
{
sta[0] = 0;
sta[2] = 0;
}
}
c = ch;
if ((char)ch == '\n')
{
ch = fgetc(fPtr);
break;
}
ch = fgetc(fPtr);
}
}
}