Looking at the code, I'm seeing comments that may give a clue about what method to use. However, I don't know who wrote them and I don't know whether you are a student. My guess from reading the comments is that you are a student in a course and these comments were left by the instructor. Or if you're self-teaching from a book, they're from the book author. I'm looking at the comment on line 45 in particular ("When files are open, read each word from the text file into an array"). However I try not to assume.
If I'm right, however, you've already been told what to do, so there's no choice. Line 45 clearly states to use an array. If you're a student, the assignment probably came with a spec sheet that will explain the requirements more fully. Regarding how to read things into an array, given that you have 5 weeks experience, I'm guessing that the word "malloc" might not be familiar to you (I can't see it being taught in the first 5 weeks), so that tells me you need to go this route, as suggested above.
char dictionary [100000][46]; // add 1 to 45 for NULL terminator. Holds 100,000 words
As far as a "binary tree" goes, I'll make the point that I suggested a binary SEARCH, but not a binary TREE. A binary search on an array is easier than searching through a binary tree. Could you use a binary tree? Sure, but that requires malloc. The array seems easier regardless and again, it appears to be what is expected by the line 45 comment.
So how does one read from a file into an array. You have part of it.
while(fscanf(fp1,"%s", worddict)!=EOF)
{
// code here
}
Now we're reading into an array, so we'll be replacing worddict with dictionary.
while(fscanf(fp1,"%s", dictionary[?])!=EOF)
{
// code here
}
Now what goes where the question mark is? Well at some point we'll need to know how many words are in this dictionary, right? So create a variable called num_words_in_dict. At the beginning it will be equal to 0 (makes sense, right, we haven't read any words in yet).
int num_words_in_dict = 0;
while(fscanf(fp1,"%s", dictionary[num_words_in_dict])!=EOF)
{
// code here
}
Now what goes where "// code here" is? Well, think about it. If num_words_in_dict stays at 0, we're going to keep writing over the same element in the array and at the end we'll still supposedly have a dictionary size of 0. Clearly that's wrong, so something in "// code here" should change that.
Anything else? Well I'm assuming the dictionary is in alphabetical order already. If it isn't, you might want to implement an insertion sort inside of that loop.
You need to have, at the end of that loop, a sorted array of dictionary words. At that point, you'll never need the dictionary file again, so close it. Then you open the file you are checking against and go through a word at a time and check that word against the dictionary array using a binary SEARCH (again, there's no binary TREE).