declaring function that returns a structure

jhgan's Avatar
Light Poster
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
{
        int num_a=0, num_b=0;
};
//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++;
                                return count( str[idx], idx);
                case 'b':
                                (res.num_b)++;
                                idx++;
                                return count( str[idx], idx);
                case '\0':
                                return res;
        }
}

Last edited by shabbir; 31Oct2009 at 09:44.. Reason: Code blocks
0
SaswatPadhi's Avatar, Join Date: May 2009
~ Б0ЯИ Τ0 С0δЭ ~
(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: CPP
struct result count( char str[], int idx )
accepts a character array and an integer.
But you are passing a character ... str[idx].
jhgan, shabbir likes this
0
jhgan's Avatar
Light Poster
oo...