【C 语言】文件操作 ( fopen 文件打开方式详解 )(二)

简介: 【C 语言】文件操作 ( fopen 文件打开方式详解 )(二)

类似于 r , 凡是与 r 相关的 , 文件必须存在 ;



代码示例 :


#include <stdio.h>
int main()
{
    // 以 rb+ 读写方式 打开 二进制文件
    FILE *p = fopen("D:\\a.txt", "rb+");
    if(p == NULL)
    {
        printf("File Open Failed !\n");
    }else
    {
        printf("File Open Success !\n");
        fputs("Hello\n", p);
        fputs("World\n", p);
        // 如果打开成功 , 则需要关闭文件
        fclose(p);
    }
    printf("Main End\n");
    return 0;
}



执行结果 : 使用文本查看工具输出


Hello
World


使用二进制查看工具 , 输出结果 : 其中 0x0A 指的是 ‘\n’ 字符 ;


48 65 6C 6C 6F 0A 57 6F 72 6C 64 0A






4、rb+ 与 r+ 对比


在上面使用 " rb+ " 的方式打开文件 , 是以二进制形式打开的文件 , 二进制输出内容为


48 65 6C 6C 6F 0A 57 6F 72 6C 64 0A


下面的代码中 , 使用 " r+ " 的方式打开文件 , 是以文本形式打开的文件 , 二进制输出内容为


48 65 6C 6C 6F 0D 0A 57 6F 72 6C 64 0D 0A


其中 0D 是 ‘\r’ , 0A 是 ‘\n’ , 文本形式中换行被解析为 “\r\n” , 二进制形式只有 ‘\n’ ;



在 Windows 系统下 , 文本都是以 “\r\n” 作为换行符号 ;


在 Linux / Unix 系统下 , 文本都是以 ‘\n’ 作为换行符号 ;



代码示例 :


#include <stdio.h>
int main()
{
    // 以 rb+ 读写方式 打开 二进制文件
    FILE *p = fopen("D:\\a.txt", "r+");
    if(p == NULL)
    {
        printf("File Open Failed !\n");
    }else
    {
        printf("File Open Success !\n");
        fputs("Hello\n", p);
        fputs("World\n", p);
        // 如果打开成功 , 则需要关闭文件
        fclose(p);
    }
    printf("Main End\n");
    return 0;
}




文本方式下 , 换行是 0D 0A , 二进制方式下 , 将数据原封不动输出 ;



在 Windows 下使用文本模式和二进制模式读写数据是不同的 ;


但在 Linux / Unix 下使用文本模式和二进制模式读写文件没有区别 ;




5、rw+


rw+ : 以读写方式打开文本文件 , 允许读写 ;


如果文件存在 , 则 文件打开成功 ;

如果文件不存在 , 返回的 FILE *p 为 NULL ;

写出时 , 将该文件原有数据覆盖 , 即文件长度清 0 00 , 删除文件内容 , 重新写入文件内容 ;


代码示例 :


#include <stdio.h>
int main()
{
    // 以 rw+ 读写方式 打开文件
    FILE *p = fopen("D:\\a.txt", "rw+");
    if(p == NULL)
    {
        printf("File Open Failed !\n");
    }else
    {
        printf("File Open Success !\n");
        fputs("Hello\n", p);
        fputs("World\n", p);
        // 如果打开成功 , 则需要关闭文件
        fclose(p);
    }
    printf("Main End\n");
    return 0;
}



如果文件存在 , 则文件打开成功 , 写出数据成功 , 写出时覆盖之前的内容 ;


image.png


如果文件不存在 , 则打开失败 ;


image.png



目录
相关文章
|
21天前
|
存储 C语言
【c语言】玩转文件操作
本文介绍了C语言中文件操作的基础知识,包括文件的打开和关闭、文件的顺序读写、文件的随机读写以及文件读取结束的判定。详细讲解了`fopen`、`fclose`、`fseek`、`ftell`、`rewind`等函数的使用方法,并通过示例代码展示了如何进行文件的读写操作。最后,还介绍了如何判断文件读取结束的原因,帮助读者更好地理解和应用文件操作技术。
27 2
|
26天前
|
存储 编译器 C语言
如何在 C 语言中判断文件缓冲区是否需要刷新?
在C语言中,可以通过检查文件流的内部状态或使用`fflush`函数尝试刷新缓冲区来判断文件缓冲区是否需要刷新。通常,当缓冲区满、遇到换行符或显式调用`fflush`时,缓冲区会自动刷新。
|
26天前
|
存储 编译器 C语言
C语言:文件缓冲区刷新方式有几种
C语言中文件缓冲区的刷新方式主要包括三种:自动刷新(如遇到换行符或缓冲区满)、显式调用 fflush() 函数强制刷新、以及关闭文件时自动刷新。这些方法确保数据及时写入文件。
|
1月前
|
存储 C语言
C语言文件操作(2)
【10月更文挑战第2天】
|
1月前
|
程序员 编译器 C语言
C语言底层知识------文件操作
本文详细介绍了文件操作的基本概念,包括文件的分类(程序文件和数据文件,其中着重于数据文件的文本文件和二进制文件),流的概念及其在C程序中的应用,以及标准输入输出流stdin、stdout和stderr的作用。作者通过示例展示了如何使用fopen、fclose和常见的读写函数如fgetc、fputc和fgets进行文件操作。
21 2
|
1月前
|
存储 缓存 编译器
文件操作——C语言
文件操作——C语言
|
1月前
|
存储 C语言
简述C语言文件操作
简述C语言文件操作
11 0
|
1月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
34 3
|
7天前
|
C语言
c语言调用的函数的声明
被调用的函数的声明: 一个函数调用另一个函数需具备的条件: 首先被调用的函数必须是已经存在的函数,即头文件中存在或已经定义过; 如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。 如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。 如果被调用的函数定义出现在主调函数之前可以不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明
23 6