查找给定文件中的C语言注释行,并输出其内容。求c语言大神给答案要编译好成功运行的且要输出到新txt文件

输入:文本文件“test.txt”
输出:文件中C语言注释行的内容(注:结果同时输出到文件)
提示:注释行以“/* */”或“// ”标示

/***********************test.txt*****************************/
//Welcome to the new class!
/*Good luck!*/
#define n 10 //假定系统允许的最大作业书是n
int allocate (int process_id,int num_units)/*采用最优分配算法*/
{
int i,k,ad;
k=1;
for(i=0;i<m;i++)
if(free_table[i].length>=num_units&&free_table[i].flag==1)
if(k==-1||free_table[i].length<free_table[k].length)
k=i;
if(k==-1)
{
printf("无空闲区可用\n");
return -1;
}
/* //The end*/

/***********************test.txt*****************************/

#include <stdio.h>
int main()
{
FILE *fp,*fpout;
char ch,buf[1024];
int flag=0,i;

fp=fopen("test.txt", "r");
fpout=fopen("out.txt", "w");
if((fp!=NULL)&&(fpout!=NULL))
{
do
{
ch=fgetc(fp);
if(flag==0)
{
if(ch=='/')
{
flag=1;
}
}
else if(flag==1)
{
if(ch=='/')
{
flag=2;
buf[0]='/';
buf[1]='/';
i=2;
}
else if(ch=='*')
{
flag=3;
buf[0]='/';
buf[1]='*';
i=2;
}
else
{
flag=0;
}
}
else if(flag==2)
{
buf[i]=ch;
i++;
if(ch=='\n')
{
buf[i]=0;
i++;
fwrite(buf, i, 1, fpout);
flag=0;
}
}
else if(flag==3)
{
buf[i]=ch;
i++;
if((ch=='/')
&&(i>3)
&&(buf[i-2]=='*'))
{
buf[i]='\n';
i++;
buf[i]=0;
i++;
fwrite(buf, i, 1, fpout);
flag=0;
}
}
}while(ch!=EOF);
fclose(fp);
fclose(fpout);
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
相似回答