looked everywhere, but all the information i find doesn't explain clearly on how to do this.

im not sure how to store char* tokens[...] into an array where i can manipulate them. when i try storing tokens into array by: shapes[n] = tokens[n]; and when i try to print out the shapes values it shows the address, i don't want the address, i need the values that is stored there to be printed out.

any help please?

I'm not sure I get your meaning, but consider something like this:

int main(void)
{
	char* tokens[5] = {"one", "two", "three", "four", "five"};
	
	char** tokenCopy = tokens;

	for(int i=0; i < 5; i++)
	{
		puts(tokens[i]);
		puts(tokenCopy[i]);
	}

	return 0;
}

If your intention, however, is to modify one set of the data while leaving the other untouched, you will need to COPY the data (using one of the string copy methods) to a different array based on the size of the strings.