【问题标题】:Clear 2 newline characters from the end of a file从文件末尾清除 2 个换行符
【发布时间】:2015-09-06 01:37:26
【问题描述】:

我有一个文本文件 myfile.txt,在它的最底部有。

感谢阅读,晚安。\n\n

如何删除这 2 个换行符?我可以打开文件进行写入,但不知道如何从最后删除这两个。

【问题讨论】:

    标签: c file input output


    【解决方案1】:

    只需将文件截断 2 个字符:

    int fd = open("file.txt", O_WRONLY);
    fseek(fd, 0L, SEEK_END);
    int sz = ftell(fp);
    close(fd);
    truncate("file.txt", sz - 2);
    

    您应该在文本文件的末尾至少保留一个换行符,但这不是必需的:

    【讨论】:

    • 我不知道。并且可以肯定的是,它不会强制实施这样的限制。试试printf "word" > text-file
    • @Diego 尝试做一个 hexdump。文件末尾有一个换行符。
    • 你使用了echo 而不是printf。不一样
    • Linux 中文本文件的末尾不需要有 \n。这是验证这一点的简单方法。如果您在终端 cat > testfile 中执行,请输入几个字符并执行 Ctrl+D,然后再次 Ctrl+D 测试文件将接收内容。现在在终端执行file testfile,输出为testfile: ASCII text, with no line terminators
    • 请参阅No final newline 讨论如果您的“文本文件”不以换行符结尾可能会遇到的一些问题。您应该避免没有最终换行符的文本文件。 Core Unix 不在乎;一些文本处理工具确实很关心。
    猜你喜欢
    • 2012-01-27
    • 2013-04-28
    • 2021-10-04
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2016-04-07
    • 1970-01-01
    相关资源
    最近更新 更多