|
と、色々書いておいて関数名っぽいものを出すだけならそれほど難しくないかも?
変に解析しようとするからいけなかったかw
たぶん単語+'('だけでいけますね(とじ括弧がいらない)
↓結構綺麗に出ます。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char *get_func_name(char *str,char *c){
for(;str < c && isspace(*c);c--)//空白飛ばし
;
*(c+1) = '\0';
for(;isalpha(*c) || *c == '_';c--){//名前探し
if(str == c) return c;
}
return c+1;
}
void get_func(char *str){
char *c=str,*d;
for(;c = strchr(c,'(') ;c++){
d = get_func_name(str,c-1);
if(*d != '\0' && strcmp(d,"if") && strcmp(d,"for") && strcmp(d,"while") && strcmp(d,"switch")){
printf("%s\n",d);
}
}
return;
}
int main(){
char str[256];
while(fgets(str,256,stdin)){
get_func(str);
}
return 0;
}
|