Я пишу программу в c, чтобы идентифицировать подпись и копию функции в другом файле.определить подпись функции
Идея заключалась в том, чтобы определить скобки в любой строке и скопировать эту строку в файл. Впоследствии мы можем проверить тип и параметры возврата, чтобы дифференцировать конструкции, если, в то время как из пользовательских функций, кроме main.
Но мой код застрял в бесконечном цикле. Не удается найти проблему.
find_sig.c
#include <stdio.h>
int main()
{
int count=0;
char c;
FILE *f1,*f2;
f1=fopen("input.c","r");
f2=fopen("output.c","w");
while((c=getc(f1))!=EOF)
{
do
{
if(c=='(')
{
fseek(f1,-count,1);
do{
putc(c,f2);
}while((c=getc(f1))!=')');
count=0;
}
else
count++;
}while((c=getc(f1))!=10);
count=0;
}
fclose(f1);
fclose(f2);
return 0;
}
input.c
#include<stdio.h>
void fun();
int main()
{
fun();
return 0;
}
void fun()
{
printf("hello");
}
Любая другая идея для определения подписи функций будет очень полезно.
Вам необходимо будет правильно разобрать C. Это не тривиально. Может быть, посмотрите на libclang? –
@ H2CO3 что такое libclang – sandy
Что такое Google? См. Первый матч для «libclang». –