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;
}

 

 

 

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星河边采花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值