Dosyalarda veriyi nelli bir konumdan itibaren nasıl okuturuz

NoWeDoR
Cool Çırak
Aşağıdaki gibi bir proje yaptım (Bir dosya içerisinde veriler var ve bunları tek tek okutuyorum. Her satır sonunda sayacı arttırarak içeriğin kaç satırdan oluştuğunu buluyorum ve daha sonra kullanıcıdan görüntülemek istediği satır sayısını alıyorum. Kullanıcı (Varsayalım) 2 girmiş olsun. Bu durumda program döngü ile ilk iki satırı okuyor ve buna bağlı olarak ekranda bu iki satırı görüntülüyor. Ancak yapmak istediğim kullanıcı negatif bir değer girerse, örneğin -3 gibi programın son 3 satırı göstermesini istiyorum. Bu nasıl yapılabilir? Saygılar

Kod:
#include <stdio.h>

int main()
{
	FILE *ptrFILE;
	int lineNumber=1,choice,i;
	char c;

	if ((ptrFILE = fopen("Test.txt", "r")) == NULL)
	{
		printf("File couldn't open..\n\n");
	}
	
	printf("*-* Content of file *-*\n\n");
	c = fgetc(ptrFILE);
	while (!feof(ptrFILE))
	{		
		printf("%c", c);
		if (c == '\n')
		{
			lineNumber++;
		}
		c = fgetc(ptrFILE);
	}
	printf("\n\nTotal line number : %d\n\n\n\n", lineNumber);

	printf("Express the line number which you want to display (Enter positive value for at\nthe beginning or vice versa) : ");
	scanf("%d", &choice);
	printf("\n");
	if (choice > 0)
	{
		lineNumber = 0;
		fseek(ptrFILE, 0L, SEEK_SET);
		c = fgetc(ptrFILE);
		while (!feof(ptrFILE))
		{
			printf("%c", c);
			if (c == '\n')
			{
				lineNumber++;
				if (lineNumber == choice)
				{
					break;
				}
			}
			c = fgetc(ptrFILE);
		}
		printf("\n\n\n");
	}
	
	fclose(ptrFILE);
	return 0;
}
 
mbk.
Forum Kalfası
Kod:
lineNumber = 0;
while (!feof(ptrFILE))
		{
                 lineNumber++;
                 }
yukardaki while göngüsünü sizin döngünüzden önce çalıştırarak eof değerini almanız ve
yeni döngünüzde lineNumber--; yaparak geriye doğru kayıtları çekmeniz gerekiyor

saygılarımla,
 
Üst