C言語というよりプログラミングの話なのですが良いでしょか。

よく似た処理を行う関数が2つあります。処理の8割は同じコードになります。
しかし2つの関数の引数は一部違っています。例えばこのように。
FuncA( int a, char *s); FuncB( int a, int b , int c);
この場合どうコーディングするのがベターでしょうか。理由も教えて下さい。

(1)処理の同じ部分は無視して、全く別々に関数をふたつ作る。
(2)処理の同じ部分を切り出してみっつめの関数を作り、ふたつの関数から呼び出すようにする。
(3)ひとつの関数を作って、引数にフラグを追加して、関数の内部で処理を分ける。
(4)その他に良い案があれば