预处理功能描述:
源程序中可能包含有对程序执行无意义的符号,要求将其剔除。
首先编制一个源程序的输入过程,从键盘、文件或文本框输入若干行语句,依次存入输入缓冲区(字符型数据);然后编制一个预处理子程序,去掉输入串中的回车符、换行符和跳格符等编辑性文字;把多个空白符合并为一个;去掉注释。
状态转换图:
0 :初态
1:读入空格
2:读入 '/'
3:读入其他字符
4:读入 "//" 单行注释
5:读入 "/*" 多行开始注释
上图中:状态5在Dev c++ 中不能是终态,其他编译器未知。
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *fp; // 文件指针,处理源文件
char *ScanBuffer; // 扫描缓冲区,一分为二