logo

CuriousTab

CuriousTab

Discussion


Home C Programming Variable Number of Arguments Comments

  • Question
  • 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

  • Correct Answer
  • Error: ptr has to be set at begining  

    Explanation
    Using va_start(ptr, int);

  • Variable Number of Arguments problems


    Search Results


    • 1. 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
    • 2. 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
    • 3. 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
    • 4. 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
    • 5. Point out the error in the program.
      #include<stdio.h>
      #define MAX 128
      
      int main()
      {
          char mybuf[] = "India";
          char yourbuf[] = "CURIOUSTAB";
          char *const ptr = mybuf;
          *ptr = 'a';
          ptr = yourbuf;
          return 0;
      }
      

    • Options
    • A. Error: unknown pointer conversion
    • B. Error: cannot convert ptr const value
    • C. No error
    • D. None of above
    • 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


    Comments

    There are no comments.

Enter a new Comment