В файле нет «координат», только позиция. Текстовый файл - это просто поток байтов, а строки разделяются переносами строк. Таким образом, при чтении текстового файла вы можете рассчитать свои «координаты», если вы сканируете весь файл. Это означает, что если вам действительно нужно какое-то значение "row" и "column":
- Читать файл построчно. Подсчитайте символы новой строки, и вы получите номер строки. Имейте в виду, что в разных ОС используются разные символы разрыва строки - окончания строк в Unix отличаются от Windows.
- Считайте соответствующую строку символ за символом и посчитайте символы до позиции, о которой идет речь. Это даст вам номер "столбца". Очевидно, что вы должны принять, что количество «столбцов» может варьироваться между «строками», и вполне возможно иметь «строки» с «количеством столбцов», равным 0.
Другой подход был бы к
- Читайте файл построчно и строите массив позиций (используя
ftell
) разрывов строк.
- Теперь, чтобы определить положение любого символа, просто найдите его положение в файле, а затем найдите ближайший предыдущий разрыв строки. От счетчика разрыва строки до символа вы получаете «строку», из разницы между позицией разрыва строки и текущей позицией вы получаете «столбец».
Но самое главное - признать, что в файлах нет строк или столбцов - в файле есть позиция, но сам файл представляет собой просто поток байтов. Это также означает, что вам придется обрабатывать файлы, закодированные с помощью широких наборов символов, иначе, поскольку символ больше не отображается на байт.