0

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

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

for (int x = 0;x < strlen(string);x++)
{
    if (string[x] == '\n')
    {
        ..............
    }
}
4

1 回答 1

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将from的数量复制string到分配的存储。
  6. 将“\r\n\0”附加到上面复制的字节的末尾。
  7. 返回刚刚在分配的存储中创建的字符串。

编辑:如果您可以对string. 如果它驻留在足够大的缓冲区中以将字符添加到它的末尾,则不需要新的分配。如果您的char类型不是一个字节,则需要进行相应调整。

于 2017-11-02T21:50:34.937 回答