2017-10-20 14 views
0

したがって、cのfscanf関数をオーバーライドしようとしていますが、特定の条件が満たされていれば、それらの条件が満たされない場合は、元のfscanfを呼び出すだけです。私はあなたがそれを介在させながら関数の元のバージョンを使用するためにdlsymを使用することができますが、fscanfの問題はそれがvariadicだということを知っています。 va_listとva_argを使って、私の関数に渡されるすべてのパラメータを得ることができますが、実際にいくつのパラメータがあるのか​​分からないときに、どのようにこれらのパラメータに対して元のfscanfを呼び出すのでしょうか?特定の条件の下でのみfscanfを配置する

+0

vaderの転送については、vfscanfを呼び出してください。 –

答えて

0

挿入されたfscanfから元のfscanfを呼び出すことはできません。 vfscanf()に電話するだけです。あなたの介在関数は次のようになります:

int fscanf(FILE *stream, const char *format, ...) 
{ 
    .... 
    .... 

    va_list ap; 
    va_start(ap, format); 
    int rc = vfscanf(stream, format, ap); 
    va_end(ap); 
    return rc; 
} 
関連する問題