千家信息网

C/C++中文件IO函数怎么用

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要为大家展示了"C/C++中文件IO函数怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C/C++中文件IO函数怎么用"这篇文章吧。文件(f
千家信息网最后更新 2025年11月07日C/C++中文件IO函数怎么用

这篇文章主要为大家展示了"C/C++中文件IO函数怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C/C++中文件IO函数怎么用"这篇文章吧。

    文件(file)通常是在磁盘或固态硬盘上的一段已命名的存储区。C中采用的主要是文件指针的办法,C++中对文件的操作主要运用了"文件流"(即非标准的输入输出)的思想。

    一、C

    C把文件看作是一系列连续的字节,每个字节都能被单独读取。C提供两种文件模式:文本模式和二进制模式。

    1.fopen函数

    std::FILE* fopen( const char* filename, const char* mode );

    打开文件filename并返回与该文件关联的文件流。mode用于确定文件访问模式。

    参数
    filename-将文件流关联到的文件名
    mode-以空字符结尾的字符串确定文件访问模式
    返回值

    如果成功,则返回一个指向控制已打开文件流的对象的指针,同时清除 eof 和错误位。出错时,返回一个空指针。

    2.fclose

    int fclose(FILE *stream)

    C 库函数 int fclose(FILE *stream) 关闭流 stream。刷新所有的缓冲区。

    参数

    stream 是指向 FILE 对象的指针,该 FILE 对象指定了要被关闭的流。

    返回值

    如果流成功关闭,则该方法返回零。如果失败,则返回 EOF。

    3.FILE结构体

    C语言的stdio.h头文件中定义了用于文件操作的结构体FILE。通过fopen返回一个文件指针(指向FILE结构体的指针)来进行文件操作。可以在stdio.h头文件中查看FILE结构体的定义,如下:

    不过在visual studio中貌似被隐藏了,见https://docs.microsoft.com/en-us/cpp/porting/visual-cpp-change-history-2003-2015

    4.fprintf()和fscanf()函数

    文件I/O函数 fprintf() 和 fscanf() 函数的工作方式与 printf() 和 scanf()类 似,区别在于前者需要用第1个参数指定待处理的文件。

    int fprintf(FILE *stream, const char *format, ... );fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.int fscanf(FILE *stream, const char *format, ...)C库函数 int fscanf(FILE *stream, const char *format, ...) 从流stream读取格式化输入。
    • stream -- 指向 FILE 对象的指针,该 FILE 对象标识了流。

    • format -- C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。

    成功则返回成功赋值或写入的个数,失败或到达文件末尾返回负数。

    二、C++

    头文件fstream 定义了三个类型来支持文件IO: ifstream从一个给定文件读取数据,ofstream向一个给定文件写入数据,以及fstream可以读写给定文件。

    每个流都有一个关联的文件模式(file mode),用来指出如何使用文件。表8.4列出了文件模式和它们的含义。

    每个文件流类型都定义了一个默认的文件模式,当未指定文件模式时就使用此默认模式。与ifstream关联的文件默认以in模式打开,与ofstream关联的文件默认以out模式打开,与fstream关联的文件默认以in和out模式打开。

    默认情况下,打开一个ofstream时,文件的内容会被丢弃。阻止一个ofstream清空给定文件内容的方法是同时指定app或in模式:

    //在这几条语句中,filel都被截断ofstream out ("filel"); //隐含以输出模式打开文件并截断文件ofstream out2("file1", ofstream::out); //隐含地截断文件ofstream out3("file1", ofstream::out | ofstream::trunc);//为了保留文件内容,显式指定app模式ofstream app("file2", ofstream::app); //隐含为输出模式ofstream app2("fi1e2", ofstream::out | ofstream::app);

    三、示例程序

    #include#include#include#include#include#includeusing namespace std;const int MAX_NUM = 100;int a[MAX_NUM];int n = 2;int main(int argc, char* argv[]){    FILE* file4 = fopen("d.txt", "w");    if (!file4) {        printf("file4 open error!\n");        return -1;    }    //fprintf(file4, "name age sex position\n");    int age, sex;    char name[50], position[50];    printf("please input 2 date : name age sex position:\n");    while (n--)    {        scanf("%s %d %d %s", &name, &age, &sex, &position);        fprintf(file4, "%s %d %d %s\n", name, age, sex, position);    }    fclose(file4);    FILE* file5 = fopen("d.txt", "r");    if (!file5) {        printf("file5 open error!");        return -1;    }    int m = 2, ans, ans1;    while (m--)    {        fscanf(file5, "%s %d %d %s", &name, &age, &sex, &position);        printf("%s %d %d %s\n", name, age, sex, position);    }    fclose(file5);    fstream file1("d.txt");    if (!file1) {        cout << "file1 open error! " << endl;        return -1;    }    string tmp;    vectorstr;    while (file1 >> tmp)    {        str.push_back(tmp);        cout << tmp << endl;    }    ifstream file2("b.txt", ios::in);    if (!file2) {        cout << "file2 open error! " << endl;        return -1;    }    ofstream file3("c.txt", ios::out);    if (!file3) {        cout << "file3 open error! " << endl;        return -1;    }    while (n--)    {        file3 << n<<' ';    }    file1.close();    file2.close();    file3.close();    return 0;}

    输入输出结果如下:

    以上是"C/C++中文件IO函数怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

    文件 模式 函数 指针 内容 关联 对象 成功 参数 字符 指向 结构 输出 篇文章 输入 同时 字符串 字节 数据 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 面向对象软件开发英文文献 电脑打开云服务器地址或域名 新建数据库主文件 用友采购订单 数据库表名 资源管理器中怎么打开服务器 高校网络安全 嘉兴瑞商网络技术有限公司 杭州传橙网络技术有限公司是什么 济宁服装erp软件开发 建行外包网络安全工程师收入 工业互联网科技政策 实现网络安全目标需要 linux 服务器 申请软件开发企业代理 分布式数据库开发入门 外包软件开发算哪个研发费用 电脑有地址连不上服务器 戴尔服务器授权申请 吉林什么是软件开发不二之选 手机无法登录网络服务器 服务器空间划分管理方法 胶州ios软件开发哪家好 实惠的进销存软件开发流程 湖南服务器虚拟化优势 路由器拨号上网老是服务器无响应 我的世界服务器哪个好玩 数据库中修改库 我的世界服务器藏宝藏最佳位置 集群服务器系统 青岛市软件开发费用人工时
    0