I'm having this weird error when I pass in a structure array to a function to read it from file, but it keeps giving wrong output.

Code:
void process(int command, char *argc[])
{
	struct Contact contact[CONTACTSIZE];
	int size = readSaved(contact);

	printf("%s %s %s %s\n", contact[0].first, contact[0].last, contact[0].home, contact[0].cell);
	
	if(command == 1 || command == 2)
		search(command, argc[2], contact, size);
	else if(command == 3)
	{
		delete(argc[2], argc[3], contact, size);
		size--;
		Save(contact, size);
	}
	else 
	{
		add(command, argc[2], argc[3], argc[4], contact, size);
		size++;
		Save(contact, size);
	}
}
Code:
int readSaved(struct Contact contact[])
{
	FILE *fp;
	int max = 2*NAMELENGTH + 2*PHONELENGTH;
	char line[max],  *token;
	int i = 0;

	if((fp = fopen(FILENAME, "r")) != NULL)
	{
		while(fgets(line,max, fp) != NULL)
		{
			token = strtok(line, " ");
			contact[i].first = token;

			token = strtok(NULL, " ");
			contact[i].last = token;
			
			token = strtok(NULL, " ");
			contact[i].home = token;
			
			token = strtok(NULL, "\n");
			contact[i].cell = token;

			i++;
		}
		fclose(fp);
	}

	return i;
}
the output should be something like this: Tom Johnson 333-444-5555 111-222-3333
but it keeps giving me this: space space space space.
this is bothering me for a long time and I cannot find where went wrong??
Can I get some help on this?
thanks