千家信息网

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

发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要为大家展示了"C/C++中文件IO函数怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C/C++中文件IO函数怎么用"这篇文章吧。文件(f
千家信息网最后更新 2025年01月16日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安全错误 数据库的锁怎样保障安全 动环数据库单日新增多少 学习网络安全从哪里开始学 超市用什么云服务器好 新华三软件开发用什么 宜兴森时网络技术 乐亭普法解读网络安全法第24条 方城软件开发多少钱 HP 服务器 风扇转速 中国知网统计数据库 附加数据库 错误948 沙子口租房软件开发 服务器设计好学吗 sybase 数据库用户 千金市骨翻译软件开发 iphone 主机服务器 湖北人工智能软件开发收费报价表 网络技术学习计划手帐 周鸿祎谈网络安全支出 数据库导入协调服务器 计算机网络技术专业论文致谢 上海培训软件开发中心 网络安全青少年日手抄报 网络安全法风险检测评估 监控恢复2个月前数据库 国家医用耗材分类与代码数据库动态维护操作 基因表达与药物敏感性分析数据库 擎洲广达云计价软件开发版 台州文达软件开发有限公司 昆士兰大学网络安全专业排名 数字化软件开发用什么语言
    0