怎样用C语言编程实现读取一个C程序,统计里面的函数个数?

来源:百度知道 编辑:UC知道 时间:2024/07/07 12:38:32
怎样用C语言编程实现读取一个C程序,统计里面的函数个数?
我主要是不会怎么编程,大体的思路如下:
先while(!feof(fp))
{x=fgetc(fp);
然后就是当x为{时,nLeft++
当x为}时,nRight++
然后当它们俩相等的时候,函数个数+1

很急呀!我明天就要用的,实在想不出来了。。。
答案如果又快又对我会追加分数的,麻烦各位了!谢谢!!
希望能有程序代码,那个是我根据老师的提示的一个思路,只是不知道怎么编好。。。因为按我编的统计出来老是0

你说的是 统计一个cpp 文件的函数个数吧。

是谁出的题目?

这个设计到一门课程 叫做 编译原理

里面有一个叫做 词法分析

所处理的问题就是你说的问题。

如果你不怎么熟悉编程,就暂时不要设计这个程序了,这个程序写出来也有几百行。

你这个思路是有问题的,因为不只是函数的开始和结束处有大括号,语句块也是由大括号包围的(例如 多条循环体语句、多条if执行语句等)。

个人意见:
首先你的思路是有缺陷的,
如一楼所说。

其次,这个问题的实现,可以借鉴多项式处理的思路。

从行首开始读取,
特例:判断行首是否为"main",如果是,则算一个函数。
一般情况:
读取行首到" "间的第一个字符串,看是否为有效返回类型(void,int,float...)
如果是有效返回类型,继续读取后续,否则本次处理完毕,读取下一行。
继续读取" "到"("间的字符串(这期间如果直到行尾都没有读到{,则本次处理完毕,读取下一行),
将"("压栈,继续读取,如果在其后读取到非有效字符(如"{","("等),则本次处理完毕,读取下一行,如果读取到")",则继续读取,
如果在本行,或者下一行读取到"{",则计数加一。
(判断本行,或者下一行读取到"{"的目的是为了防止读到函数声明,也被计数了)

时间较紧,想的还有很多缺陷,
不过说实话,这个明天就要交,估计时间不够。