lire les n dernières lignes du fichier en c / c ++

J'ai vu beaucoup de messages, mais ne trouve pas quelque chose que je veux.
Je suis mauvaise sortie :

ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ......  //may be this is EOF character

Entrer dans une boucle infinie.

Mon algorithme:

  1. Aller à la fin du fichier.
  2. diminution de la position du pointeur par 1 et lire caractère par
    caractère.
  3. quitter si nous avons trouvé notre 10 lignes ou nous arrivons en début de fichier.
  4. maintenant, je vais scanner le fichier complet jusqu'expressions du FOLKLORE et de les imprimer //pas mis en œuvre dans le code.

code:

#include<iostream>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>

using namespace std;
int main()
{
    FILE *f1=fopen("input.txt","r");
    FILE *f2=fopen("output.txt","w");
    int i,j,pos;
        int count=0;
        char ch;
        int begin=ftell(f1);
        //GO TO END OF FILE
        fseek(f1,0,SEEK_END);
        int end = ftell(f1);
        pos=ftell(f1);

        while(count<10)
        {
            pos=ftell(f1);
            //FILE IS LESS THAN 10 LINES
            if(pos<begin)
                break;
            ch=fgetc(f1);
            if(ch=='\n')
                count++;
            fputc(ch,f2);
            fseek(f1,pos-1,end);
        }
    return 0;
}

UPD 1:

code modifié: il a juste 1 erreur - si l'entrée a des lignes comme

3enil
2enil
1enil

it prints 10 lines only

line1
line2
line3ÿine1
line2
line3ÿine1
line2
line3ÿine1
line2
line3ÿine1
line2

PS:
1. travail sur windows dans notepad++

  1. ce n'est pas de devoirs
  2. aussi je veux le faire sans l'aide de plus de la mémoire ou de l'utilisation de la STL.
  3. je pratique afin d'améliorer mes connaissances de base donc merci de ne pas poster sur toutes les fonctions (comme la queue -5 tc.)

s'il vous plaît aider à améliorer mon code.

source d'informationauteur Aseem Goyal | 2013-07-26