Перенос строки в текстовых файлах осуществляется
либо последовательностью \x0d\x0a
либо \x0a
См. # 2 в этой теме
Посимвольно просматриваешь t в цикле и сравниваешь с \x0a (if (t[i]=='\x0a') ;. Если встретили значит произошел перенос строки. Чтобы точно убедиться в переносе считываем и проверяем предыдущий символ if (t[i-1]=='\x0d') Если это \x0d то у нас совершенно точно перенос строки и мы увеличиваем счетчик строк.Чтобы пометить что мы в 10 строке, можно завести булевую переменную и присвоить ей значение 1. При старте инициализируем ее нулем. Обнуляем переменную cnt2 и продолжаем считывать символы. Если
bool==1 && cnt2==3 то у нас 3 символ 10 строки
Код:

counter=0;
booll=0;
....
for (int i=0;i<N;i++)
{
if (t[i]=='\x0a')
if (t[i-1]=='\x0d')
counter++,cnt2=-1;
if (counter==10)
{
booll=1; //10 строка
cnt2++;
}
if (booll==1 && cnt2==3)
{3 символ 10 строки}
....
}