It seems like you're having trouble adding suitable logic to main() because that logic belongs in the actual iterative calculation, e.g. in your eSeries function.  @chux pushed the stop condition into eSeries(), while @Weather Vane pulled the iteration up into main(), either is fine.
I'll offer the following as my own take on the problem - I thought you'd find it it interesting to see the behavior of eSeries() with various "target thresholds"...
output from e.c
$ gcc e.c
$ ./a.out
hello from eSeries, threshold=0.100000
  i/  n :     diff : current approx of 'e'
  1/100 : 1.00000000 : 2.00000000
  2/100 : 0.50000000 : 2.50000000
  3/100 : 0.16666675 : 2.66666675
  4/100 : 0.04166675 : 2.70833349
hello from eSeries, threshold=0.010000
  i/  n :     diff : current approx of 'e'
  1/100 : 1.00000000 : 2.00000000
  2/100 : 0.50000000 : 2.50000000
  3/100 : 0.16666675 : 2.66666675
  4/100 : 0.04166675 : 2.70833349
  5/100 : 0.00833344 : 2.71666694
hello from eSeries, threshold=0.001000
  i/  n :     diff : current approx of 'e'
  1/100 : 1.00000000 : 2.00000000
  2/100 : 0.50000000 : 2.50000000
  3/100 : 0.16666675 : 2.66666675
  4/100 : 0.04166675 : 2.70833349
  5/100 : 0.00833344 : 2.71666694
  6/100 : 0.00138879 : 2.71805573
  7/100 : 0.00019836 : 2.71825409
hello from eSeries, threshold=0.000100
  i/  n :     diff : current approx of 'e'
  1/100 : 1.00000000 : 2.00000000
  2/100 : 0.50000000 : 2.50000000
  3/100 : 0.16666675 : 2.66666675
  4/100 : 0.04166675 : 2.70833349
  5/100 : 0.00833344 : 2.71666694
  6/100 : 0.00138879 : 2.71805573
  7/100 : 0.00019836 : 2.71825409
  8/100 : 0.00002480 : 2.71827888
$ 
e.c source code
#include <stdio.h>
float eSeries (int n, float threshold){
   int nFact = 1;
   float e = 1.0;
   float last = e;
   int i;
   printf("hello from eSeries, threshold=%f\n", threshold );
   printf("%3s/%3s : %8s : %s\n", "i", "n", "diff", "current approx of 'e'" );
   for (i = 1; i < n; i++) {
      nFact *= i;
      e = e + (1.0 / nFact);
      float diff = e - last;
      last = e;
      printf("%3d/%3d : %8.8f : %8.8f\n", i, n, diff, e );
      if( diff < threshold ) break; // good enough, stop early
   }
   return e;
}
int main(int argc, char const *argv[]) {
   float current;
   float past;
   int count = 0;
   eSeries( 100, 0.1 );
   eSeries( 100, 0.01 );
   eSeries( 100, 0.001 );
   eSeries( 100, 0.0001 );
   //do {
      // here's where i can't get the logic right.
   //} while(current != past);
   return 0;
}