栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言文件操作

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言文件操作

C语言中的变量一般是保存在内存里面,断电后数据将会不复存在,如果我们想要编写的程序将数据保存,我们需要了解一下文件的操作。

1.打开文件

假如在我们的磁盘中,有一个文件testfile.txt,现在我们在程序里面打开它。

#include"stdio.h"
#include"stdlib.h"
int main()
{
//文件指针
    FILE *fp;
//打开文件的函数fopen,以写的方式打开
    if((fp=fopen("testfile.txt","w"))==NULL)
    {
        printf("Can't open this filen");
        exit(0);
    }

//关闭文件的函数fclose
  
    fclose(fp);
    return 0;
}

打开之后我们需要对这个文件写入一个字符

#include"stdio.h"
#include"stdlib.h"
int main()
{
    FILE *fp;
    if((fp=fopen("testfile.txt","w"))==NULL)
    {
        printf("Can't open this filen");
        exit(0);
    }

    char ch;

    scanf("%c",&ch);
    
    putc(ch,fp);



    fclose(fp);
    return 0;
}

程序执行后,我们去打开文件testfile.txt,我们可以看到,我们的文件里面有一个 c。

 我们已经成功的往testfile中写入了一个字符。

现在我们从testfile中把这个字符读出来。

#include"stdio.h"
#include"stdlib.h"
int main()
{
    FILE *fp;
//以读的方式打开文件
    if((fp=fopen("testfile.txt","r"))==NULL)
    {
        printf("Can't open this filen");
        exit(0);
    }

    char ch;
//读取这个字符
    ch=getc(fp);
//打印这个字符
    printf("testfile read a character %cn",ch);


    fclose(fp);
    return 0;
}

除了向文件中进行字符的操作,我们还可以向文件内进行字符串的操作,我们需要两个函数

fgets(str,n,fp);

fputs(str,fp);

#include"stdio.h"
#include"stdlib.h"
int main()
{
    // 文件指针
    FILE *fp;
    // 以读写的方式打开testfile文件
    if((fp=fopen("testfile.txt","r+"))==NULL)
    {
        printf("Can't open this filen");
        exit(0);
    }
// 向文件中写入helloworld字符串
    fputs("hello worldn",fp);
    
// 关闭文件
    fclose(fp);
    return 0;
}

运行之后我们打开testfile文件可以看到,hellWord已经写入了。

 现在我们可以把testfile中的hello world文件读取打印在终端。

#include"stdio.h"
#include"stdlib.h"
int main()
{
    // 文件指针
    FILE *fp;
    // 以读写的方式打开testfile文件
    if((fp=fopen("testfile.txt","r+"))==NULL)
    {
        printf("Can't open this filen");
        exit(0);
    }
    // 定义ch数组
    char ch[100];
// 向fp文件内读取一个大小为100的字符串,然后把地址给ch
    fgets(ch,100,fp);
    // 打印字符串
    printf("%s",ch);
    
    
// 关闭文件
    fclose(fp);
    return 0;
}

程序运行后可以看到,字符串已经成功读取并且打印在终端上。

 我们直接输入感觉好像不太完整,如果我们想要输入输出数据,我们使用简单的这些文件操作函数就不太够用了,因此我们还需要一些函数帮助我们格式化输入输出文件。

我们先来看看fprintf的使用。

#include"stdio.h"
#include"stdlib.h"
int main()
{
    // 文件指针
    FILE *fp;
    // 以读写的方式打开已经存在的testfile文件
    if((fp=fopen("testfile.txt","r+"))==NULL)
    {
        printf("Can't open this filen");
        exit(0);
    }
    // 定义一个变量
    int value;
    // 定义一个字符串
    value = 1212345;
    char *ch="This is file operatingn";
    // 对fp文件输出一个整形数据和一个字符串
    fprintf(fp,"%d,%s",value,ch);
    
     
// 关闭文件
    fclose(fp);
    return 0;
}

我们还可以对文件里的数据进行输入操作。

#include"stdio.h"
#include"stdlib.h"
int main()
{
    // 文件指针
    FILE *fp;
    // 以读写的方式打开已经存在的testfile文件
    if((fp=fopen("testfile.txt","r+"))==NULL)
    {
        printf("Can't open this filen");
        exit(0);
    }
// 定义一个整形变量
    int value ;
    // 定义一个字符数组
    char ch[100];
// 对testfile文件进行输入,输入的值给value,字符串给ch
    fscanf(fp,"%d,%s",&value,&ch);
    // 在终端打印
    printf("%dn%sn",value,ch);
    
     
// 关闭文件
    fclose(fp);
    return 0;
}

我们还可以使用二进制写入文件,这样系统就不需要直接转换,直接写入二进制。

#include"stdio.h"
#include"stdlib.h"
int main()
{
    // 文件指针
    FILE *fp;
    // 以写的方式打开已经存在的testfile文件
    if((fp=fopen("testfile.data","wb"))==NULL)
    {
        printf("Can't open this filen");
        exit(0);
    }

//写入整形变量a
    int a=1234;

    fwrite(&a,sizeof(int),1,fp);




     
// 关闭文件
    fclose(fp);
    return 0;
}

程序执行完成后,我们再打开testfile.data文件使用fread读取数据然后输出在终端查看是否写入正确。

#include"stdio.h"
#include"stdlib.h"
int main()
{
    // 文件指针
    FILE *fp;
    // 以读的方式打开已经存在的testfile文件
    if((fp=fopen("testfile.data","rb"))==NULL)
    {
        printf("Can't open this filen");
        exit(0);
    }

//读取testfile.data文件的数据并且打印在屏幕上
    int *p;

    

    fread(p,sizeof(int),1,fp);

    printf("%dn",*p);

     
// 关闭文件
    fclose(fp);
    return 0;
}

现在我们已经成功的使用二进制文件进行读写。

我们还可以对我们想要进行读写的文件的任意位置进行读写。

 首先我们先要有一个文件有一点东西。

#include"stdio.h"
#include"stdlib.h"
int main()
{
    FILE *fp;
    fp=fopen("testfile.txt","w+");
    
    char *ch="This is windstormn";

    fputs(ch,fp);
    
    return 0;
}

文件创建完成之后,我们就对这个文件里面的第8个字符开始读取。

#include"stdio.h"
#include"stdlib.h"
int main()
{
    FILE *fp;
    fp=fopen("testfile.txt","r+");

    fseek(fp,7,SEEK_SET);
    char ch[100];

    fgets(ch,100,fp);

    printf("%sn",ch);



    fclose(fp);
    return 0;
}

以上就是文件操作的所有内容,如果觉得好不错,点个赞支持一下,如果有不同的看法,请在评论区留言,如果以上内容有错误,欢迎大家批评指正一下,O(∩_∩)O谢谢。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/935642.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号