Point Out Errors

Question 6 :

Point out the error in the following program.

#include < stdio . h >
#include < stdarg . h >
void display(char *s, ...);
void show(char *t, ...);

int main()
{
    display("Hello", 4, 12, 13, 14, 44);
    return 0;
}
void display(char *s, ...)
{
    show(s, ...);
}
void show(char *t, ...)
{
    int a;
    va_list ptr;
    va_start(ptr, s);
    a = va_arg(ptr, int);
    printf("%f", a);
}


A). Error: invalid function display() call
B). Error: invalid function show() call
C). No error
D). Error: Rvalue required for t
Answer : Option B

Explanation :

The call to show() is improper. This is not the way to pass variable argument list to a function.


Question 7 :

Point out the error in the following program.

#include < stdio . h >
#include < stdarg . h >
void varfun(int n, ...);

int main()
{
    varfun(3, 7, -11.2, 0.66);
    return 0;
}
void varfun(int n, ...)
{
    float *ptr;
    int num;
    va_start(ptr, n);
    num = va_arg(ptr, int);
    printf("%d", num);
}


A). Error: too many parameters
B). Error: invalid access to list member
C). Error: ptr must be type of va_list
D). No error
Answer : Option C