У меня есть код C, который читает по 1 строке за раз, из файла, открытого в текстовом режиме с использованием
fgets(buf,200,fin);
Входной файл, из которого fgets () читает строки, является аргументом командной строки дляпрограмма.
Теперь fgets оставляет символ новой строки, включенный в строку, скопированный в buf. * 1006 *
Где-то в строке кода я проверяю
length = strlen(buf);
Для некоторого вводафайлы, которые, я думаю, редактируются в среде * nix, символ новой строки - это просто '\n'
Но для некоторых других входных файлов тестового примера (которые, я думаю, редактируются / создаются в среде Windows) есть 2 символа, указывающие на новую строку- '\r''\n'
Я хочу удалить символ новой строки и хочу поставить '\ 0' в качестве символа конца строки.Поэтому я должен сделать -
if(len == (N+1))
{
if(buf[length-1] == '\n')
{
buf[length-2] = '\0'; //for a `\r\n` newline
}
}
или
if(len == (N))
{
if(buf[length-1] == '\n')
{
buf[length-1] = '\0'; //for a `\n` newline
}
}
Поскольку текстовые файлы передаются программе в качестве аргумента командной строки, я не имею никакого контроля над тем, как она редактируется / составляется иследовательно, не может отфильтровать его с помощью какого-либо инструмента, чтобы сделать строки новыми.
Как мне справиться с этой ситуацией?
Есть ли в стандартной библиотеке C какая-либо эквивалентная функция fgets (без расширений), которая может обрабатывать эти противоречивыесимволы новой строки и вернуть строку без них?