编译原理删除c语言注释,删除C语言源程序文件中的所有注释

本文介绍了一个使用C语言编写的简单程序,该程序能够从输入的C源代码文件中移除所有的单行和多行注释,并将处理后的代码保存到新的文件中。这个实用工具可以帮助开发者更清晰地查看代码的执行部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include

#include

#include

#define STR_LEN 400

void main()

{

FILE *fpr, *fpw;

char ch, strline[STR_LEN + 1];

int i=0,p=0,q=0;

bool bFind = false, bEnd = false;

if ((fpr=fopen("c:\\c.c","r")) == NULL)

{

printf("open file fail!");

exit(0);

}

if ((fpw=fopen("c:\\c_new.c","w")) == NULL)

{

printf("write file fail!");

exit(0);

}

/*

判断文件结束 用 while(!feof(fpr)) 不是最安全的方式

可以用 while (fgets(strline, sizeof(strline), fpr) != NULL) { ... } 代替

*/

while(!feof(fpr))

{

//read a line

//fscanf("%s\n", fpr); //也可以读取一行,但前提是这一行中没有空格

fgets(strline, sizeof(strline), fpr);

p = 0;

q = strlen(strline);

bEnd = false;

for (i=0; strline[i]!='\0'; i++)

{

//find '//'

if (!bFind && strline[i] == '/' && strline[i+1] == '/')

{

p = i;

bFind = true;

bEnd = true;

break;

}

//find '/*'

if (!bFind && strline[i] == '/' && strline[i+1] == '*')

{

p = i;

bFind = true;

}

// find '*/'

if (bFind && strline[i] == '*' && strline[i+1] == '/')

{

q = i+2;

bEnd = true;

}

}

//delete row

if (bFind)

{

for (i=p; i

{

strline[i] = ' ';

}

if (bEnd)

{

bFind = false;

strline[i-1] = '\n';

}

}

printf("%s", strline);

fputs(strline, fpw);

}

fclose(fpr);

fclose(fpw);

system("pause");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值