declaring function that returns a structure

Discussion in 'C' started by jhgan, Oct 31, 2009.

  1. jhgan

    jhgan New Member

    Joined:
    Oct 31, 2009
    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    0
    Hi, anyone knows why the highlighted words cause syntax errors?
    Please advise.

    Code:
    #include <stdio.h>
    #include <ctype.h>
    #include <string.h>
    //declare structure
    struct result
    {
            [COLOR=Red]int num_a=0, num_b=0;[/COLOR]
    };
    //declare function prototype 
    struct result count( char str[], int idx );
    
    int main()
    {
            char str[] = "acdefAbbA";
            struct result res = count( str, 0 );
            /*char *pa=res.num_a, *pb=res.num_b;*/
            
            printf( "num a = %d and num b = %d\n", res.num_a, res.num_b );
            // should output : "num_a = 1 and num_b = 2"
            
            
            return 0;
    }
    
    struct result count( char str[], int idx )
    {
            switch( str[idx] )
            {
                    struct result res;
                    case 'a':
                                    (res.num_a)++;
                                    idx++;
                                    [COLOR=Red]return count( str[idx], idx);[/COLOR]
                    case 'b':
                                    (res.num_b)++;
                                    idx++;
                                    [COLOR=Red]return count( str[idx], idx);[/COLOR]
                    case '\0':
                                    return res;
            }
    }
     
    Last edited by a moderator: Oct 31, 2009
  2. SaswatPadhi

    SaswatPadhi ~ Б0ЯИ Τ0 С0δЭ ~

    Joined:
    May 5, 2009
    Messages:
    1,342
    Likes Received:
    55
    Trophy Points:
    0
    Occupation:
    STUDENT !
    Location:
    Orissa, INDIA
    Home Page:
    http://www.crackingforfun.blogspot.com
    (1) int num_a=0, num_b=0;

    This one causes error because C (or C++) does not allow in-struct (or in-class) initialization of non-const static member variables.
    You should define the struct without initializations and then initialize num_a and num_b to 0 whenever you declare a new variable of that struct type.

    (2) return count( str[idx], idx);

    The count function you have defined :
    Code:
    struct result count( char str[], int idx )
    accepts a character array and an integer.
    But you are passing a character ... str[idx].
     
  3. jhgan

    jhgan New Member

    Joined:
    Oct 31, 2009
    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    0

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice