I do not know what you are trying to accomplish, but from looking carefully at your program there seems a slight change should do the trick. Let me know if the result is what is right. You might not get the precision you need if acc is just an integer instead of a float. I had to adjust with a type cast to float in one of the calculations.

Code:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int acc, counter, temp;
float sum=1, fake;
printf("Up to which term you want to get closer to #e?\n");
scanf("%d",&acc); /* obtain data about precision. */
if(acc<2) /*if accuracy is 1, e is directly 1. */
{
printf("#e is close to 1");
}
else
{ /*if accuracy is bigger than 1, run here */
for(counter=1; counter<acc; counter++ )
{
fake=1; /*initialize value of "fake" every time. */
temp = counter;
while (counter>0)
{ /*find factorial terms*/
fake*=(float)counter;
counter--;
}
counter = temp;
sum+= (1/fake); /*add 1/factorial to sum*/
}
printf("you accurate term is %.2f", sum);
}
return(0);
}