• PUDN用户
    了解作者
  • C/C++
    开发工具
  • 188KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 14
    下载次数
  • 2005-08-17 17:17
    上传日期
可以自动识别一个程序中调用的所有函数,并写入到 output.txt文件中。
函数扫描程序.rar
  • 函数扫描程序
  • Debug
  • libin.txt
    4.5KB
  • scan.dsp
    3.3KB
  • libin.c.bak
    342B
  • ffc
    94B
  • test.c.bak
    4.5KB
  • alarm.c
    843B
  • scan.dsw
    533B
  • libin.c
    9.6KB
  • test1.c
    103B
  • output.txt.bak
    526B
  • output.txt
    526B
  • scan.opt
    52.5KB
  • input.txt.bak
    389B
  • scan.plg
    728B
  • scan.cpp
    6.1KB
  • test1.c.bak
    108B
  • style.c
    4.5KB
  • input.txt
    389B
  • scan.ncb
    41KB
  • www.pudn.com.txt
    218B
内容介绍
/* ***********函数分析识别程序*******************/ #include<stdio.h> #include<ctype.h> #include<string.h> #include <stdlib.h> #define MAX 20 void main(); //bool isReserved(char *); bool isdivided(char); bool isOperation(char ); char *key[]= { "main","auto","break","case","char","const", "continue","default","do","double", "else","enum","extern","float","for","goto", "if","int","long","register", "return","short","signed","sizeof","static", "struct","switch","typedef", "union","unsigned","void","volatile","while","False" }; /*运算、限界符*/ const int limitLen=18; const int dividLen=15; char divid[dividLen]= { '!','+','-','&','~', '*','%','<','>','=','|', ',',';','{','}', }; char limit[limitLen]={ '[',']','!','+','-','&','~', '*','%','<','>','=','|', ',',';','{','}','#' }; char *hanshu[80]; void main() { FILE *input; FILE *output; char ch; int isreserv=0,isfuction=0; int isoperation=0; int count=0; int n=0; if((input=fopen("input.txt","r"))==NULL) { printf("file open in readonly mode,but an error generate!\n"); exit(0); } if((output=fopen("output.txt","w"))==NULL) { printf("file open in new_create mode,but an error generate!\n"); exit(0); } //printf("test"); ch=fgetc(input); while(ch!=EOF) { while((ch==' '||ch=='\n'||ch=='\t'&&ch!=EOF))//消除空格、回车、制表符 ch=fgetc(input); if(ch=='/')//消除注释 { ch=fgetc(input); if(ch=='/')//消除//后一行的注释内容 { ch=fgetc(input); while(ch!='\n') ch=fgetc(input); ch=fgetc(input); } else if(ch=='*')//消除/* */ 中 { count=0; ch=fgetc(input); while(count!=2) { count=0; while(ch!='*') ch=fgetc(input); count++; ch=fgetc(input); if(ch=='/') count++; else ch=fgetc(input); } } else //是除号 { ch=fgetc(input); int m=0; char array[MAX]; array[m]='\0'; while(ch!='\n'&&ch!=')'&&!isdivided(ch)) { array[m]=ch; m++; ch=fgetc(input); if(ch=='(') { while(ch!=')') { array[m]=ch; m++; ch=fgetc(input); array[m]=ch; m++; } } } array[m]='\0'; // isreserv=isReserved(array); int i=0; if(!isreserv)//不是保留关键字 { int i=0; if(isalpha(array[i])) { i++; while(array[i]!='(') i++; } if(array[i]!='\0') { hanshu[n]=array; n++; fprintf(output,"%s\n",array); printf("%s=\n",array); for(i=0;i<m;i++) array[i]='\0'; } else for(i=0;i<m;i++) array[i]='\0'; } else for(i=0;i<m;i++) array[i]='\0'; } } else if(ch=='\"')//消除" " 之间的字符 { ch=fgetc(input); while(ch!='\"') ch=fgetc(input); ch=fgetc(input); } else if(ch=='\'') { ch=fgetc(input); while(ch!='\'') ch=fgetc(input); ch=fgetc(input); } else if(isOperation(ch)==true) //是运算符 { while(isOperation(ch)==true) ch=fgetc(input); } else { int m=0; char array[MAX]; array[m]='\0'; while(ch!='\n'&&ch!=')'&&!isdivided(ch)) { array[m]=ch; m++; ch=fgetc(input); if(ch=='(') { array[m]=ch; while(ch!=')') { m++; ch=fgetc(input); array[m]=ch; m++; } } } ch=fgetc(input); array[m]='\0'; int i=0; // isreserv=isReserved(array); if(!isreserv)//不是保留关键字 { // if(isFuction(array)) int i=0; if(isalpha(array[i])) { i++; while(array[i]!='(') i++; } if(i<m) { hanshu[n]=array; n++; fprintf(output,"%s\n",array); printf("%s\n",array); for(i=0;i<m;i++) array[i]='\0'; } else for(i=0;i<m;i++) array[i]='\0'; } // else for(i=0;i<m;i++) array[i]='\0'; } } int j=0; while(j<n) { printf("%s\n",hanshu[j]); j++; } } /* bool isReserved(char *str) { int i=0; while(strcmp(str,key[i])) { i++; } if(i<33) return true; else return false; } */ bool isOperation(char ch) { int i=0; while((i<18)&&(ch!=limit[i])) i++; if(i==18) return false; else return true; } bool isdivided(char ch) { int i=0; while((i<15&&(ch!=divid[i]))) i++; if(i==15) return false; else return true; }
评论
    相关推荐
    • BAT编程简明教程.rar
      Windows下详细 BAT脚本教程,适用于脚本入门者。
    • vc源代码合集0951.rar
      2012-06-12 12:21 8,825 c扫描器源码.txt 2012-06-12 12:39 505,110 c语言也能干大事全部板书(带书签)-感谢rupeng.com鹏友的整理.rar 2012-06-12 12:10 183,001 C语言函数大全语法着色版.chm 2012-06-12 12:07 25,...
    • compiler-uefs-20181:用于EXA869 MI编程语言处理器的前端编译器,UEFS 2018.1
      const,var,struct,typedef,过程,函数,返回,开始,如果,然后,否则,而扫描,打印,int,浮点数,布尔值,字符串,true,false,扩展 识别码 字母(字母|数字| _)* 数字 (-)? 空格*位数位数*(。digit...
    • [探测与扫描]复眼II计划概要设计
      NULL 博文链接:https://comsci.iteye.com/blog/2429793
    • 声纹识别资料
      Dragonfly was written to make it very easy for Python macros, scripts, and applications to interface with speech recognition engines. Its design allows speech commands and grammar objects ...
    • C语言写的声音识别控制程序
      C语言写的声音识别控制程序 做声音识别的可以看看。
    • 八路扫描式抢答器设计论文.rar
      这个八路扫描式抢答器,采用进口单片机主控,响应迅速,判别精确。带大屏幕显示屏,高亮管数字显示抢答的组别号、倒计时时间。可以分辨正常抢答与偷答的情况,并会发出两种不同的声音提示。可分别设定抢答、答题两种...
    • 《Visual C++数字图像处理开发入门与编程实践》源码
      8.2 扫描显示特效 289 8.2.1 特效预览 289 8.2.2 基本原理和实现方法 289 8.2.3 编程实现 290 8.3 移动显示特效 292 8.3.1 特效预览 292 8.3.2 基本原理和实现方法 292 8.3.3 编程实现 293 8.4 百叶窗显示特效 295 ...
    • 基于单片机的指纹识别电子密码锁设计
      为了有效地的防止信息资料,财产的安全生物识别技术的安全系数较传统意义上的身份验证机制有了很大提高,越来越得到社会的重视。指纹锁和指纹门禁是应用最广的生物识别技术。 主要任务及主要技术指标: 1.设计...
    • matlabcnhelp.rar
      matlab中文帮助很难找的,快速下载