C语言文件操作

内容:文件操作,主要为文本文件和二进制文件的读写操作。

相关函数包含在<stdio.h>头文件

打开文件

调用方式:fopen(文件名,使用文件方式);
文件名要把文件说在路径写出来,可以是绝对路径,也可是相对路径,如果与c程序在同一级目录下,只需要写文件名就可以了。
如下1.1


FILE *fp;                   //定义一个指向文件的指针变量fp
fp = fopen("file","r")      //以只读形式打开file文件,使得fp与file连接起来

说明:如果fp的值为NULL,表明要操作的文件对象出现问题,无法打开。

使用文件方式

方式含义文件对象
“r”只读文本
“w”只写文本
“a”追加文本
“rb”只读二进制
“wb”只写二进制
“ab”追加二进制
“r+”读写文本
“w+”读写文本
“a+”读写文本
“rb+”读写二进制
“wb+”读写二进制
“ab+”读写二进制

关闭文件

调用方式:fclose(fp);

顺序读写文本文件

向文件读写字符

函数名形式功能返回值
fgetcfgetc(fp)从文件中读入一个字符所读字符,失败返回-1
fputsfputc(ch,fp)将字符ch写入文件中所写字符,失败返回-1

在c程序路径下建立文件1.txt。

从键盘输入字符,写到文件中

3.1

#include<stdio.h>

int main()
{
    FILE *fp;
    fp = fopen("1.txt","w");
    char ch = getchar();
    while(ch != '#') {
        fputc(ch,fp);
        ch = getchar();
    }
    fclose(fp);
    return 0;
}

从文件读入,打印在屏幕上

3.2

#include<stdio.h>

int main()
{
    FILE *fp;
    fp = fopen("1.txt","r");
    char ch;
    while(ch != EOF) {
        ch = fgetc(fp);
        putchar(ch);
    }
    fclose(fp);
    return 0;
}

向文件读写字符串

函数名形式功能返回值
fgetsfgets(str,n,fp)从文件中读入长度为n-1的字符到str成功返回str的地址,失败返回NULL
fputsfputs(str,fp)将字符串写入文件中成功返回0,失败返回非0

写入字符串

3.3

#include<stdio.h>

int main()
{
    FILE *fp;
    fp = fopen("1.txt","w");
    char str[100];
    scanf("%s",str);  //或gets(str);

    fputs(str,fp);

    fclose(fp);
    return 0;
}

读入字符串

3.4

#include<stdio.h>

int main()
{
    FILE *fp;
    fp = fopen("1.txt","r");
    char str[100];

    fgets(str,90,fp);
    printf("%s",str);

    fclose(fp);
    return 0;
}

格式化读写文件

前面介绍的都是对字符或字符串进行读写操作,实际上,也可以int,double这些数据类型进行操作。

调用方式:
fscanf(文件指针,格式化字符串,输入);
fprintf(文件指针,格式化字符串,输出);
如下:

int i;
double j;
fscanf(fp,"%d %lf",&i,&j);
fprintf(fp,"%d %lf",i,j);

顺序读写二进制文件

用二进制方式向读写数据的好处是可以对任何文件进行读写操作。

调用方式:

fread(buffer,size,count,fp);

fwrite(buffer,size,count,fp);

字段说明
buffer要读入或写出到的地址
size要读写字节数
count要读写多少个数据项,每个数据项长度为size
fp文件指针

4.1

#include<stdio.h>

int main()
{
    FILE *fp;
    fp = fopen("1.dat","wb+");
    int val = 10.0;
    fwrite(&val,sizeof(int),1,fp);
    fclose(fp);
    fp = fopen("1.dat","rb+");
    int ans = 0;
    fread(&ans,sizeof(int),1,fp);
    printf("%d",ans);
    fclose(fp);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值