在 C 语言中,我通常一次读取一个字符的文本文件(例如,在 FSM 的循环中,同时进行标记和解析)。不幸的是,一些操作系统使用不同的方法来标记行尾,例如 Unix ( "\n"
)、Mac OS ( "\r"
) 和 DOS/Windows ( "\r\n"
)。
因此我的问题是:如何正确检测来自不同操作系统的文本文件的行尾?
我目前的方法是'\r'
视为'\n'
并忽略空行。不幸的是,这种方法只有在空行不改变底层文本的语义时才有效。
我不想“检测”每个文件的行尾样式,我当然不想要基于#ifdef
或其他类型的条件编译的解决方案。是否有任何有效的解决方案?