C语言编译原理预处理实验去掉注释:/* xxx */
时间: 2023-07-22 21:32:18 浏览: 258
C语言编译器在预处理阶段会去掉代码中的注释,我们可以手写一个简单的预处理器来实现这个功能。具体方法如下:
```c
#include <stdio.h>
int main() {
FILE *fp;
char ch, prev;
int comment = 0;
fp = fopen("example.c", "r");
if (fp == NULL) {
printf("Failed to open file\n");
return 1;
}
while ((ch = fgetc(fp)) != EOF) {
if (comment) {
if (prev == '*' && ch == '/') {
comment = 0;
}
} else {
if (prev == '/' && ch == '*') {
comment = 1;
prev = ' ';
continue;
} else {
printf("%c", prev);
}
}
prev = ch;
}
printf("%c", prev);
fclose(fp);
return 0;
}
```
上面的代码中,我们打开一个C源代码文件,然后逐个字符读取文件内容。当遇到`/*`时,我们将`comment`标志设置为1,表示当前处于注释中。当在注释中遇到`*/`时,我们将`comment`标志设置为0,表示注释结束。在注释中的字符不会被输出到终端,否则会被原样输出。
需要注意的是,这个预处理器比较简单,只能去掉C源代码中的`/* */`注释,而不能去掉其他类型的注释,比如`//`注释。
阅读全文