logo

CuriousTab

CuriousTab

Variable Number of Arguments problems


  • 1. Point out the error in the following program.
    #include<stdio.h>
    #include<stdarg.h>
    fun(...);
    
    int main()
    {
        fun(3, 7, -11.2, 0.66);
        return 0;
    }
    fun(...)
    {
        va_list ptr;
        int num;
        va_start(ptr, n);
        num = va_arg(ptr, int);
        printf("%d", num);
    }
    

  • Options
  • A. Error: fun() needs return type
  • B. Error: ptr Lvalue required
  • C. Error: Invalid declaration of fun(...)
  • D. No error
  • Discuss
  • 2. Point out the error in the following program.
    #include<stdio.h>
    #include<stdarg.h>
    
    int main()
    {
        void display(int num, ...);
        display(4, 12.5, 13.5, 14.5, 44.3);
        return 0;
    }
    void display(int num, ...)
    {
        float c; int j;
        va_list ptr;
        va_start(ptr, num);
        for(j=1; j<=num; j++)
        {
            c = va_arg(ptr, float);
            printf("%f", c);
        }
    }
    

  • Options
  • A. Error: invalid va_list declaration
  • B. Error: var c data type mismatch
  • C. No error
  • D. No error and Nothing will print
  • Discuss
  • 3. Point out the error in the following program.
    #include<stdio.h>
    #include<stdarg.h>
    
    int main()
    {
        void display(char *s, int num1, int num2, ...);
        display("Hello", 4, 2, 12.5, 13.5, 14.5, 44.0);
        return 0;
    }
    void display(char *s, int num1, int num2, ...)
    {
        double c;
        char s;
        va_list ptr;
        va_start(ptr, s);
        c = va_arg(ptr, double);
        printf("%f", c);
    }
    

  • Options
  • A. Error: invalid arguments in function display()
  • B. Error: too many parameters
  • C. Error: in va_start(ptr, s);
  • D. No error
  • Discuss
  • 4. Point out the error if any in the following program (Turbo C).
    #include<stdio.h>
    #include<stdarg.h>
    void display(int num, ...);
    
    int main()
    {
        display(4, 'A', 'a', 'b', 'c');
        return 0;
    }
    void display(int num, ...)
    {
        char c; int j;
        va_list ptr;
        va_start(ptr, num);
        for(j=1; j<=num; j++)
        {
            c = va_arg(ptr, char);
            printf("%c", c);
        }
    }
    

  • Options
  • A. Error: unknown variable ptr
  • B. Error: Lvalue required for parameter
  • C. No error and print A a b c
  • D. No error and print 4 A a b c
  • Discuss
  • 5. Point out the error in the following program.
    #include<stdio.h>
    #include<stdarg.h>
    void varfun(int n, ...);
    
    int main()
    {
        varfun(3, 7, -11, 0);
        return 0;
    }
    void varfun(int n, ...)
    {
        va_list ptr;
        int num;
        num = va_arg(ptr, int);
        printf("%d", num);
    }
    

  • Options
  • A. Error: ptr has to be set at begining
  • B. Error: ptr must be type of va_list
  • C. Error: invalid access to list member
  • D. No error
  • Discuss
  • 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);
    }
    

  • Options
  • A. Error: invalid function display() call
  • B. Error: invalid function show() call
  • C. No error
  • D. Error: Rvalue required for t
  • Discuss
  • 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);
    }
    

  • Options
  • A. Error: too many parameters
  • B. Error: invalid access to list member
  • C. Error: ptr must be type of va_list
  • D. No error
  • Discuss
  • 8. The macro va_start is used to initialise a pointer to the beginning of the list of fixed arguments.

  • Options
  • A. True
  • B. False
  • Discuss
  • 9. A function that receives variable number of arguments should use va_arg() to extract the last argument from the variable argument list.

  • Options
  • A. True
  • B. False
  • Discuss
  • 10. va_list is an array that holds information needed by va_arg and va_end

  • Options
  • A. True
  • B. False
  • Discuss

First 2 3