strlen() tiene internamente un contador... al pasarle un puntero empieza a recorrerlo hasta que encuentra un caracter nulo ('\0'), incrementando su contador interno por el camino. Una vez localizado este carácter devuelve el valor del contador. 
Dicho esto, Buffer[strlen(Buffer)-1]='\0' va a eliminar SIEMPRE el último caracter de la secuencia leída. Es decir, si tenías 'HOLA\0' te vas a quedar con 'HOL\0'. No entiendo la utilidad de esa línea. 
Y, por cierto, aquí te sucede lo mismo:    
Código C:
Ver original- fgets(- Datos [- X ]- . Name,sizeof(- Datos [- X ]- . Name),- stdin );
 
- Datos [- X ]- . Name[strlen(- Datos [- X ]- . Name)-1]='\0';
Seguimos...    
Código C:
Ver original-     // ... 
-     // ... 
-     // ... 
-     // ... 
-     // ... 
-     // ... 
-     // ... 
- } 
la condición del "while" no va a fallar nunca porque feof() no se actualiza hasta que no realizas una lectura fallida... y entre el último feof() del bucle y la condición del while no hay ningúna operación sobre el fichero... 
puedes dejarlo como    
o así    
Código C:
Ver original- do 
- { 
-     // ... 
-     // ... 
-     // ... 
-     // ... 
-     // ... 
-     // ... 
-     // ... 
-     // if(feof(Agenda)) break; <-- comentado 
más que nada porque la condición del while, tal y como está el código, no va a devolver false en la vida.    
No se si te has dado cuenta, pero te puedes ahorrar el uso de "Buffer"... primero haces una copia del fichero a "Buffer" y después copias ese mismo contenido de "Buffer" a la estructura "Datos"... ¿Por qué no haces una copia directa a "Datos"? 
Algo así:    
Por otro lado, no se si te has dado cuenta, pero "Buffer" tiene tamaño 200 y "Name", "Address" y "Email" tienen tamaño 100... si editas el archivo a mano y aumentas la longitud de uno de esos campos por encima de 100 vas a pisar memoria... para evitar eso puedes valerte de "sizeof"    
Así te evitas el desbordamiento del buffer. 
Otra cosilla: dado que utilizas 'X' para controlar el número máximo de elementos... "Algodon" es otra variable que te puedes ahorrar... básicamente cambia el if por:    
Y listo. 
Y, bueno, entiendo que este programa te funciona... ¿Qué problemas tienes al cambiar fgets por fread???