2017-10-20 3 views
0

그래서 fscanf 함수를 C에서 덮어 쓰려고하는데 특정 조건이 충족 될 경우에만 다른 동작이 발생하기를 원합니다. 조건이 충족되지 않으면 원래 fscanf를 호출하려고합니다. 나는 그것을 삽입하면서 함수의 원래 버전을 사용하기 위해 dlsym을 사용할 수 있지만 fscanf의 문제는 그것이 가변적이라는 것을 알고있다. va_list와 va_arg를 사용하여 함수에 전달 된 모든 매개 변수를 가져올 수 있지만, 얼마나 많은 매개 변수가 있는지 실제로 알지 못하면 어떻게 이러한 매개 변수에서 원래의 fscanf를 호출해야합니까?특정 조건에서만 fscanf 끼워 넣기

+0

전달 가변 인수에 관해서는 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; 
}