Что касается чтения файла построчно, посмотрите на fgets .
char *fgets(char *restrict s, int n, FILE *restrict stream);
Функция fgets () читает байты
из потока в массив указал на
по s, пока не будет прочитано n-1 байт или
читается и передается
s, или условие конца файла
встречается. Строка тогда
завершается нулевым байтом.
Единственная проблема здесь может быть, если вы не можете гарантировать максимальный размер строки в вашем файле. Если это так, вы можете перебирать символы, пока не увидите перевод строки.
Относительно конца строки:
Краткий ответ: \n
- символ новой строки (также называемый переводом строки).
Длинный ответ из Википедии:
Системы на основе ASCII или совместимых
набор символов использовать либо LF (Line
подача, 0x0A, 10 в десятичном виде) или CR
(Возврат каретки, 0x0D, 13 в десятичном виде)
индивидуально или CR, затем LF
(CR + LF, 0x0D 0x0A); см. ниже для
историческая причина для CR + LF
условность. Эти персонажи основаны
по командам принтера: перевод строки
указано, что одна строка бумаги
следует выдавать из принтера, а
возврат каретки указал, что
каретка принтера должна вернуться к
начало текущей строки.
* LF: Multics, Unix and Unix-like systems (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD, etc.), BeOS, Amiga, RISC OS, and others
* CR+LF: DEC RT-11 and most other early non-Unix, non-IBM OSes, CP/M, MP/M, DOS, OS/2, Microsoft Windows, Symbian OS
* CR: Commodore 8-bit machines, Apple II family, Mac OS up to version 9 and OS-9
Но поскольку вы вряд ли будете работать с представлением, которое использует только возврат каретки, поиск строки должен быть в порядке.