Como dice Leo, si quieres hacer operaciones en números MUY grandes tendrás que buscar o programar una clase (no es complicado) que utilice vectores para guardar dígitos, y también programar las operaciones.
scanf espera de primer argumento un string, para poner por ejemplo "%d". Tu realmente le estás pasando un string así que "no haces nada mal" en la llamada a la función.
El problema es que no le pasas lo que espera, que es %d,%s,%x etc... así que te da un resultado aleatorio.
Imagino que es así, ya que yo nunca he trabajado con estas funciones, yo siempre fuí de c++.
EDIT: A la vez que publicaba esto escribía Leo, que seguro que sabe mejor que yo como funciona esta función.
De todas maneras, te recomiendo que cambies de tutorial, porque viendo ese programa tan simple ya se ve que no es el tutorial más recomendado que puede haber.
Si, quería corregir a dany y al final escribí lo mismo que él, lo que tienen las prisas xD. Pero exactamente eso, ifstream es la lectura, y es lo que tiene bien, poner ofstream es lo que no tendría sentido.
Eso que dices dany, no es cierto. El fichero lo quiere como lectura, asi que debe ser ofstream. ifstream se usa para escritura, y no es el caso. Por otro lado usar la opción open también es válido, igual que usarla en el constructor.
El problema, probablemente, es que no está inicializada la variable 'i'.
Puedo entender que es lo que no debe hacer el del primer post, pero el segundo post? O ando muy perdido o no me ifjo muy bien en que hace que no debería hacer.
Ahora me pongo a ello. A primera hora lo tendrá encima de su mesa!
Nah fuera coñas, esos programas es capaz de hacerlos cualquiera que sepa declarar el main y poco mas en c++, nadie te los va a hacer, básicamente, porque si no sabes eso, supongo que no mereces aprobar esa asignatura.