以下为主分析函数
从输入文件里面读,把分析结果写到输出文件中
参数:fpin :输入文件指针 fpout: 输出文件指针
********************************************************************/
void parse(FILE* fpin,FILE* fpout)
{
char arr[MAXBUF];//读出的最长的字符串不超过 MAXBUF,MAXBUF 定义为 255,
够长了我想
int i=0;//分析含字母的字符串用
int j=0;//分析纯数字的字符串用
while(1)
{
fscanf(fpin,"%c",&ch);//从输入文件中读入一个字符
if( ch==' '|| ch ==' ')//过滤掉空格和 tab
;
else if( ch=='')//回车换行符,为下面进行错误判断
lineno++;
else if( IsDigit(ch))//读入的是数字
{
while(IsDigit(ch))
{
arr[j] = ch;
j++;
fscanf(fpin,"%c",&ch);
}
fseek(fpin,-1L,SEEK_CUR);//文件指针后退一个字节
char* temp1 =(char*)malloc(j+1);/
memcpy(temp1,arr,j);
temp1[j] =' ';//把数组里面的内容拷贝到连外一个数组里面,因为我定
义的
//arr 为 255 个字节,实际上写不到那么多,所以只拷贝实际上有数据的
j=0;//恢复初始状态,以备下次使用
fprintf(fpout,"%s %d",temp1,2);//常数
free(temp1);//释放内存