我不知道行是以'\n‘或'\r’还是'\r\n‘结尾,也不知道文本是用什么编码的,而且如果编码是utf-8,它可能不是bom。有没有一个函数或lib可以做到这一点,或者直接告诉我一行的终止。
发布于 2013-03-28 21:22:34
你是否碰巧在一个打开阅读文本的文件上使用了fgets、fread、fputs、fwrite等?如果是这样,该实现将自动转换特定于操作系统的行终止符(例如,"\r\n")读取时转换为'\n',写入时将'\n'转换为特定于操作系统的行终止符。
还有另外两种情况,其中一种是OP:
"\r\n"而苦苦挣扎,因此在他的(可能是类Unix的)操作系统中打开文件进行读取将不再转换这种情况。我的建议是使用dos2unix进行这些一次性的转换,而不是不使用这些函数就永远不会运行again."\r\n"。在这种情况下,您应该使用strstr来查找确切的序列"\r\n".UTF-8的设计考虑到了与ASCII的兼容性,因此您可以假定任何使用UTF-8的系统也将使用ASCII或一些类似的字符集。任何使用大于一个字节的序列的字符将仅使用0x80或更大的值来表示。由于'\n'位于0x00-0x7F范围内,因此可以保证它是单字节的,并且不会作为多字节字符的一部分存在。
发布于 2013-03-28 21:07:41
使用wcslen获取utf8字符串的字节大小。
http://linux.die.net/man/3/wcslen
https://stackoverflow.com/questions/15682570
复制相似问题