zoukankan      html  css  js  c++  java
  • CRLF和LF以及对应的坑

    CRLF和LF的区别

    • CR:回车
    • LF:换行

    使用VSCode打开文件,右下角显示文件的换行方式:

    • CRLF即使用回车+换行表示换行
    • LF仅使用换行表示换行

    相关的坑

    使用不同的换行方式,可能导致各种稀奇古怪的问题,例如文件数据如下:

    abcdefg
    hijklmno
    pqrstu
    vwxyz
    

    使用如下代码读取数据:

    // 每读取2个字符然后跳过一个字符
    for {
    	data := make([]byte, 2)
    	_, err := f.Read(data)
    	if err != nil {
    		break
    	}
    	f.Seek(1, 1)
    	log.Println(string(data))
    }
    
    • 对于CRLF换行方式的文件,输出结果是:
    2022/01/13 20:11:25 ab
    2022/01/13 20:11:25 de
    2022/01/13 20:11:25 g
    2022/01/13 20:11:25 hi
    2022/01/13 20:11:25 kl
    2022/01/13 20:11:25 no
    2022/01/13 20:11:25
    p
    2022/01/13 20:11:25 rs
    2022/01/13 20:11:25 u
    2022/01/13 20:11:25 vw
    2022/01/13 20:11:25 yz
    
    • 对于LF换行的文件而言,输出是:
    2022/01/13 20:12:24 ab
    2022/01/13 20:12:24 de
    2022/01/13 20:12:24 g
    
    2022/01/13 20:12:24 ij
    2022/01/13 20:12:24 lm
    2022/01/13 20:12:24 o
    
    2022/01/13 20:12:24 qr
    2022/01/13 20:12:24 tu
    2022/01/13 20:12:24 vw
    2022/01/13 20:12:24 yz
    

    由上可以看出,

    • 对于使用CRLF换行的文件,每次换行由两个字符:CR(回车)、LF(换行)组成。例如:第三个输出结果是"g ",第四个输出是"hi"。即第三次读取"g"和"回车键",然后跳过换行键,第四次读取"hi"。
    • 对于使用LF换行的文件,从第三次结果可以看出,结果是"g" + "换行键",跳过后续的"h",第四次读取"ij"。

    本文来自博客园,作者:战五渣渣渣渣渣,转载请注明原文链接:https://www.cnblogs.com/truestoriesavici01/p/15799537.html

  • 相关阅读:
    bbb SOCKET CAN
    在BBB上使用CCS5开发环境
    BBB的PRU模块
    垃圾邮件分类
    yzoj 2377 颂芬梭哈 题解
    yzoj 2372 小B的数字 题解
    yzoj P2371 爬山 题解
    hdu 1007 Quoit Design 题解
    手写堆
    yzoj P1126 塔 题解
  • 原文地址:https://www.cnblogs.com/truestoriesavici01/p/15799537.html
Copyright © 2011-2022 走看看