fopen的按文本读写和按二进制读写

本文探讨了二进制与文本方式在不同操作系统下处理文件的区别。通过示例代码展示了在Linux和Windows环境下,换行符如何被不同地处理。在Linux下两种方式效果相同,而在Windows下则有所不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二进制读写和文本读写的区别:
1. 二进制方式很简单,读文件时,会原封不动的读出文件的全部內容,写的時候,也是把內存缓冲区的內容原封不动的写到文件中。而‘\n’ 在ascii码中是’0x0A’。
2. 而文本方式就不一样了,在写文件时,会将换行符号‘\n’会转化为系统相应的ascii码,所以,在linux下,会把换行符转化为linux 的换行 ‘0x0A’ ;在windown下,会把换行符转化为‘0x0D 0x0A’。
加入,有下面代码

nt main( )
{

    char he[20] = "hello world\n";
    FILE *outfile = fopen("t.txt", "wt");
    fwrite(he, sizeof(char), 20, outfile);
    fclose(outfile);

    outfile = fopen("b.txt", "wb");
    fwrite(he, sizeof(char), 20, outfile);
    fclose(outfile);

    return 0;
}

在linux下运行,分别按文本生成t.txt,按二进制生成b.txt,用hexdump -C命令查看,如下:

tl@tl-vm:~/program/c/test_in_clion/cmake-build-debug$ hexdump b.txt -C
00000000  68 65 6c 6c 6f 20 77 6f  72 6c 64 0a 00 00 00 00  |hello world.....|
00000010  00 00 00 00                                       |....|
00000014
tl@tl-vm:~/program/c/test_in_clion/cmake-build-debug$ hexdump t.txt -C
00000000  68 65 6c 6c 6f 20 77 6f  72 6c 64 0a 00 00 00 00  |hello world.....|
00000010  00 00 00 00                                       |....|
00000014

在vs2013下运行,产生相应文件
t.txt如下:
这里写图片描述
b.txt如下:
这里写图片描述

总结:

二进制标志,文本标志,在linux下是没有影响的,因为两种情况下,‘\n’都是‘0x0A’。
而在windown下,二进制是转化为’0x0A’ ,文本是转化为’0x0D 0x0A’。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值