如何用c表示一行的结尾

时间:2013-03-28 13:03:43

标签: c text encode

我不知道该行是以“\ n”还是“\ r”或“\ r \ n”结尾? 并且不要对文本进行编码,除非编码是utf-8,否则它可能不是bom。 是否有函数或lib可以执行此操作,或者只是告诉我终止行。

2 个答案:

答案 0 :(得分:1)

使用wcslen获取utf8字符串的字节大小。

http://linux.die.net/man/3/wcslen

答案 1 :(得分:1)

您是否偶然使用fgetsfreadfputsfwrite等来打开阅读文字的文件?如果是这样,实现将在读取时自动将特定于OS的行终止符(例如"\r\n")转换为'\n',并在写入时将'\n'转换为特定于OS的行终止符。


有两个其他场景,其中一个是OP:

  1. OP正在努力将"\r\n"从其他操作系统软件中移除,因此在他的(可能类似于Unix的)操作系统中打开文件进行读取将不再转换。我的建议是使用dos2unix进行一次性转换,而不是使用可能永远不会再次运行的代码来膨胀您的代码。
  2. 您没有使用其中一项功能。这可能是因为您正在使用诸如套接字之类的流,并且协议可能需要"\r\n"。在这种情况下,您应该使用strstr来查找确切的序列"\r\n"

  3. UTF-8在设计时考虑到了与ASCII的兼容程度,因此您可以假设使用UTF-8的任何系统也将使用ASCII或某些类似的字符集。使用大于一个字节的序列的任何字符仅使用值0x80或更大来表示。由于'\n'位于0x00-0x7F范围内,因此可以保证它只是一个字节,并且不会作为多字节字符的一部分存在。