I've been wrestling with this for some hours and I'm wondering if anyone can see what's wrong with it.

This is a linked list meaning the last element should always point to NULL


Code:
int main(void) {
	srand ( time(NULL) );
	BOOK books;				// Both of these should be stored as pointers and malloc should be used to make things easier for myself but when I switch it and make the necessary changes, the program still crashes
	MEMBER club;
	club.next = NULL;
	books.ISBN[0] = 'a';
	books.next = &books;
..........
Code:
if (userInput == 1) { // Let's add a new member!
				char fName[32];
				char mInit;
				char lName[32];
				char phoneNum[13];
				printf("Please enter the user's first name\n");
				getUserInputString(32, fName);  //this function works for sure
				printf("Please enter the user's middle inital\n");
				getUserInputString(1, &mInit);
				printf("Please enter the user's last name\n");
				getUserInputString(32, lName);
				printf("Please enter the user's phone number\n");
				getUserInputString(13, phoneNum);
				memberInsert(&club, fName, mInit, lName, phoneNum);

Code:
MEMBER* memberInsert(MEMBER* memberStart, char fname[], char mInit, char lname[], char phonenum[]) {
	MEMBER *newMember = (MEMBER*) malloc(sizeof(MEMBER));
	strcpy((newMember->name).firstname, fname);
	strcpy(newMember->name.lastname, lname);
	newMember->name.intial = mInit;
	strcpy(newMember->telephone, phonenum);
	return insertMember(memberStart, newMember);
}
Code:
MEMBER* insertMember(MEMBER *memberStart, MEMBER *newMember) {
	MEMBER* currentMem = memberStart;
	if ((memberStart->telephone)[0] == 'a') {
		memberStart = newMember;
		return memberStart;
	}
	while (currentMem->next != NULL)
		currentMem = currentMem->next;
	currentMem->next = newMember;
	return memberStart;

}