gpt4 book ai didi

C程序查找一个c文件的函数名

转载 作者:行者123 更新时间:2023-12-01 23:04:24 25 4
gpt4 key购买 nike

我正在用 C(Linux 操作系统)编程。我必须读取一个文件,检查该文件中的函数并打印相应的函数名称。到目前为止,我已经编写了使用“{”的深度计算来识别函数的程序。我知道__FUNCTION__预处理器指令用于打印当前文件的函数名称。同样,是否有任何预处理器指令来查找我们读取的文件的函数名称?我不关心任何特定的工具。我想让它编程。请指导我。提前致谢。

我试图实现此代码。此函数将行(在 '{' 之前)作为参数。

void ffname(char line[100])
{
int i,j,m,n,f=0;
char dt[10],fname[28];
char s[5][10]={"int","void","struct","char","float"};
dt = strtok(line," ");
for(i=0;i<5;i++)
{
m=strcmp(dt,s[i]);
if(m==0)
{
f=1;
n=strlen(dt);
}
}
if(f)
{
for(i=n+2,j=0;i<strlen(line);i++,j++)
{
if(line[i] == '*')
i++;
while(line[i] != '(')
{
fname[j]=line[i];
}
}
}
}

我不知道这段代码是否正确。我要这样用吗?有没有找到函数名称的选项?

最佳答案

我使用简单的 C 代码来查找函数的名称。

#include <stdio.h>
#include <string.h>

#define SIZE 1024
void ffname(char *line)
{
int i=1,j=0;
char *dt;
char name[SIZE];
strtok(line,"(");
dt = strchr(line,' ');
if(dt[i] == '*')
i++;
while(dt[i] != '\0')
{
name[j]=dt[i];
i++;
j++;
}
name[j] ='\0';
printf("Function name is: %s\n", name);
}

int main(int argc, char **argv)
{
if(argc < 2)
{
printf("Give the filename \n");
printf("Usage: %s filename\n", argv[0]);
return -1;
}
int i, lines =0, funlines =0,count =0, fn =0, flag =0;
char c[SIZE],b[SIZE];
FILE *fd;
fd = fopen(argv[1],"r");
while(fgets(c,SIZE,fd))
{
lines++;
i=0;
for(i=0;i<strlen(c);i++)
{
while( c[i] =='\t' || c[i] == ' ')
{
i++;
}
if( c[i] == '{')
{
count++;
if(flag)
{
funlines++;
}
if(count == 1)
{
fn++;
printf("Function %d is Started..............\n", fn);
flag = 1;
ffname(b);
}
break;
}
else if( c[i] == '}')
{
count--;
if(!count)
{
flag = 0;
printf("No of lines in the function %d is: %d\n", fn, funlines);
printf("Function %d is finished..........\n", fn);
funlines = 0;
}
else
{
funlines++;
}
break;
}
else if(flag)
{
funlines++;
break;
}
}
strcpy(b,c);
}
printf("Total no of function%d\n",fn);
printf("Total no of lines%d\n",lines);
return 0;
}

关于C程序查找一个c文件的函数名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13909239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com