IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言文件基本操作 -> 正文阅读

[C++知识库]C语言文件基本操作

这里咱们不写那么细,就复习一下常用的文件操作。分别是文件的打开和关闭,还有读写。

1.首先介绍一下文件指针

对文件的操作都是由文件指针来完成的,它是一个结构体,保存文件有关的信息。该结构体由系统实现,我们只需要记得使用时写成这样即可:

FILE *fp;

2.文件的打开

fopen函数用来打开文件。

FILE *fp;
fp = fopen(文件名,使用文件方式);

常用的文件使用方式:

??????? 只是文本文件的,二进制文件大家需要自行百度一下。

文件使用方式含义
r(只读)打开一个文本文件,只允许读数据
w(只写)打开或建立一个文本文件,只允许写数据
a(追加)打开一个文本文件,并在文件末尾写数据
r+,w+,a+对应功能不变,只是均支持读写操作

?3.文件的关闭

fclose(文件指针);

4.文件的读写

这一部分的函数有很多。

(1)fputc()函数和fgetc()函数

ch = fputc(ch,fp);
ch = fgetc(ch,fp);

下面举个例子演示:

首先在D盘下的CFILE文件夹下创建一个test.txt文件

?然后是我们的文件的写入程序:

#include <stdio.h>

int main()
{
    FILE* fp;
    char ch;
    fp = fopen("D:\\CFILE\\test.txt", "w");//注意从文件夹复制过来的路径只有一个斜杠,我们自己要加一个
    if (fp == NULL) {
        printf("文件打开失败");
        return 0;
    }
    ch = getchar();
    while (ch != '#') {
        fputc(ch, fp);
        ch = getchar();
    }
    fclose(fp);
    return 0;
}

?

我们的结果:

?接下来是读操作的例子:

就读我们刚刚创建的这个文件。

#include <stdio.h>

int main()
{
    FILE* fp;
    char ch;
    fp = fopen("D:\\CFILE\\test.txt", "r");//注意从文件夹复制过来的路径只有一个斜杠,我们自己要加一个
    if (fp == NULL) {
        printf("文件打开失败");
        return 0;
    }
    ch = fgetc(fp);
    while (ch != EOF) {
        printf("%c ", ch);
        ch = fgetc(fp);
    }
    fclose(fp);
    return 0;
}

运行结果:

?

(2)fputs()函数和fgets()函数

????????与fputc()函数和fgetc()函数完全类似,只不过变成了对字符串操作。

fputs(字符串,文件指针);
fgets(字符数组名,n,文件指针);

????????n是得到的字符串中字符的个数(包含'\0');

(3)fprintf()函数和fscanf()函数

??????? 格式输出输入函数,与printf()函数和scanf()函数的区别就是读写对象不同,前者是磁盘文件,后者是终端。

例:它的作用是将整形变量i的值以"%d"的格式输出到fp指向的文件中。

fprintf(文件类型指针,格式字符串,输出列表);
fprintf(fp,"%d",i);
fscanf(文件类型指针,格式字符串,输入列表);
fscanf(fp,"%d",&i);

?一个fscanf()函数的例子:

首先在test.txt中写5个字母,一会用程序将他们以整数形式输出。

#include <stdio.h>

int main()
{
    FILE* fp;
    char ch;
    fp = fopen("D:\\CFILE\\test.txt", "r");//注意从文件夹复制过来的路径只有一个斜杠,我们自己要加一个
    if (fp == NULL) {
        printf("文件打开失败");
        return 0;
    }
    char j;
    for (int i = 0; i < 5; i++) {
        fscanf(fp, "%c", &j);
        printf("%d is %5d\n", i + 1, j);
    }
    fclose(fp);
    return 0;
}

(4)fread()函数和fwrite()函数

前面介绍的fpute和fgetc函数,每次只能读写文件中的一个字符,但是在编写程序的过程中往往需要对整块数据进行读写,例如,对一个结构体类型变量值进行读写。下面就介绍实现整块读写功能的fread和fwrite函数。

fread函数的一般形式如下:

fread(buffer,size,count,fp);

该函数的作用是从fp所指的文件中读入count次,每次读size字节,读入的信息存在buffer地址中。fwrite函数的一般形式如下:

fwrite(buffer,size,count,fp);

该函数的作用是将buffer地址开始的信息输出count次,每次写size字节到fp所指的文件中。

buffer:一个指针。对于fwrite函数来说,是要输出数据的地址(起始地址);对fread函数来说,是所要读入的数据存放的地址。

size:要读写的字节数。

count:要读写多少个size字节的数据项。

fp:文件型指针。

例如:fread(a,2,3,fp);其含义是从p所指的文件中每次读两个字节送入实数组a中,连续读3次。fwrite(a,2,3,fp);其含义是将a数组中的信息每次输出两个字节到fp所指向的文件中,连续输出3次。

举一个今天上课用到的例子吧:

学生信息管理系统

#include <stdio.h>
typedef struct student {
    char name[30];
    char age[10];
    char phone[15];
}student;
student stu[100];
int main()
{
    FILE* fp;
    char ch;
    fp = fopen("D:\\CFILE\\test.txt", "w");//注意从文件夹复制过来的路径只有一个斜杠,我们自己要加一个
    if (fp == NULL) {
        printf("文件打开失败");
        return 0;
    }
    printf("请问有多少学生?");
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        printf("请输入第%d位学生的姓名,年龄,电话号码:\n", i + 1);
        scanf("%s%s%s", stu[i].name, stu[i].age, stu[i].phone);
        fwrite(&stu[i], sizeof(student), 1, fp);
    }

    fclose(fp);
    return 0;
}

?

?

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 00:51:43  更:2022-09-04 00:54:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 8:17:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码