将新行终止符添加到每行的末尾

时间:2017-11-02 19:24:25

标签: c newline memmove

在我的换行序列中添加'\ r'的最佳方法是什么?我正在将一个字符串写入文件并对其进行各种解析,但根据我的分配规范,新行将被视为'\ r \ n'。

现在我最后只有一个新行。我在考虑使用for循环和/或使用memmove,但不确定如何使其正常工作?

{{1}}

1 个答案:

答案 0 :(得分:0)

算法类似于:

  1. 检查字符串中的最后两个字符是否已经是“\ r \ n”,如果它们是返回字符串。
  2. 检查字符串中的最后一个字符是否有'\ r'或'\ n',设置一个标志。
  3. 如果设置了标志,则分配strlen(string) + 2个字节以保存新字符串,否则分配strlen(string) + 3个字节。
  4. 如果设置了标记,则将bytes to copy计算为strlen(string) - 1,否则strlen(string)
  5. bytes to copy的{​​{1}}复制到已分配的存储空间。
  6. 将“\ r \ n \ 0”附加到上面复制的字节的末尾。
  7. 返回刚刚在已分配存储中创建的字符串。
  8. 编辑:如果您可以对string的状态做出假设,您的里程可能会有所不同。如果它驻留在足够大的缓冲区中以在其末尾添加字符,则不需要新的分配。如果您的string类型不是一个字节,则需要进行相应的调整。