In general what you want to do cannot be done without actually writing a parser that understands all of the complexities of the C language. The single line that you are looking for:
functionname(param_list){
could appear anywhere within a line of C source code (not necessarily starting in position 1 nor ending at the end of a line and could include the return code type and the body of the function in addition to what you have shown, or could be spread across hundreds of lines of C source code before it gets to the body of the function definition.
Even if the group writing the kernel, utility, library, or single function you're looking for has strict function coding rules, there are occasionally exceptions that will be granted for various reasons for various functions.
As a comment: many editors in development environments (IDE's) have that feature built in: list all functions,. Examples:
UltraEdit,
Linux geany editor.
So you may be trying to reinvent something you already have.