You only need to wrap as I did if you're initializing structure elements. Your method using just a multidimensional array is (currently) correct. The braces around each word is because they're structure elements. Like so:
Code:
struct foo {
int a;
float b;
char c;
char *str;
} arrayoffoo[] =
{
{ 10, 1.23, 'c', "hello" },
{ 55, 3.67, 'x', "goodbye" },
{ 9, 22.0, 'y', "foo bar baz" },
};
The first set of braces, excluding the actual structure definition, wrap up the bounds of the entire array. The nested sets are for each structure. Each structure's elements are grouped by a pair of braces. When you reach the } on the inner set, you know you're at the end of the elements for that structure. When you reach the final }, you've reached the end of the array's elements.
Quzah.