If you're going to solve the harder questions on Project Euler you need to start thinking about the limitations of the questions and in this case the numbers you are generating. Regardless, what you did with the code is the way probably 80% of any person trying to solve that question, would have done, keep in mind.
Here's something I've put together for Euler #1 in C:
int main(void)
{
int sum = 0;
const int limit = 1000;
for (int i = 3, j = 5; i < limit; i += 3)
{
sum += i;
while (j < i)
{
if (j % 3) sum += j;
j += 5;
}
}
printf("%d\n", sum);
}
I'm using C99 btw. This is the way you should be thinking about Project Euler questions though, as they are going to get MUCH more difficult. Thinking differently about how you code, also makes you a better programmer.
What you are doing is checking all values in that range, why though? You know that out of every 3 numbers, only 1 of them is going to be divisible by 3, and the same logic applies with multiples of 5; every 5th number. Why not just count the multiples and filter out the numbers that are both multiples of 3 and 5 to avoid having added it twice to the sum? :S
Examples of those numbers are obviously, 15, 30, etc...
Also, checking and adding 0, in any case, would be a waste of time, because a number added to 0, is the same as the number it previously was. In your case I would've at least started with 3. Checking 0, 1, 2, 4, etc... Is just a waste of CPU time.
In your case though, I don't see the reasoning behind having a variable outside of a local scope like you have mults currently. If you add the values of mult3 and mult5, why have separate variables for each if you don't use them as individual values?
Project Euler is a great way to apply your knowledge though and progress in a language you are trying to learn.