8339a3712739c903f06b8b9066500a63

How do you initialize an array thats going to have words inside of another function.

This is what I have (doesn't really work):

p.s. only C code please (no C++)

void foo(char** array)
{
	*array = (char *)calloc(2, sizeof(char*));
	
	if(!(*array))
	{
		printf("returning\n");
		return;
	}
	
	array[0] = "fu";
	array[1] = "bar";
	
	printf("%s\n", array[0]); // this two lines actually print out
	printf("%s\n", array[1]); // but I get a runtime error
	
}

int main()
{
	char **words_array;
	
	foo(&words_array);
	printf("%s\n", words_array[0]);
	printf("%s\n", words_array[1]);
}

Refactorings

No refactoring yet !

D41d8cd98f00b204e9800998ecf8427e

bob

July 9, 2009, July 09, 2009 01:22, permalink

No rating. Login to rate!

you need another level of indirection

void foo(char*** array)
{
	*array = (char **)calloc(2, sizeof(char*));
	
	if(!(*array))
	{
		printf("returning\n");
		return;
	}
	
	(*array)[0] = "fu";
	(*array)[1] = "bar";
	
	printf("%s\n", (*array)[0]);
	printf("%s\n", (*array)[1]);
	
}

int main()
{
	char **words_array;
	
	foo(&words_array);
	printf("%s\n", words_array[0]);
	printf("%s\n", words_array[1]);

	return 0;
}
A001e1e84fe78dec05ebe69b3f4e4144

Anonymous

July 30, 2009, July 30, 2009 00:27, permalink

No rating. Login to rate!

Think: char *argv[].

Your refactoring





Format Copy from initial code

or Cancel