精华内容
下载资源
问答
  • c语言文件操作
    2021-05-20 11:45:28

    C语言文件操作总结

    File manipulation function

    File on / off

    FILE, *infile, =fopen ("ride? in〃,〃W〃);

    Fclose (inf订e);

    File read:

    Fgetc:

    Format: int fgetc (FILE ^stream);

    Reads a character from the file pointing to the file pointer stream?

    The return value of this function is a byte that returns the read. Returns EOF (-1) if it is read at the end of the file or when the error is read.

    Fgets:

    The prototype is char *f gets (char, *s, int, N, FILE, * stream);

    Parameter:

    *s: character pointer to the data address that will be stored.

    N: integer data, which reads n - 1 characters from the stream.

    ^stream: pointer data, the stream to read.

    Function:

    Read nT characters from the file pointer stream, save in the space where s is the starting address, until you have completed a row, and if successful, return the pointer to s, or else return NULL.

    Fscanf:

    Function name: fscanf

    Function: performs formatted input from a stream, fscanf ends with spaces and line breaks, and ends with spaces? This is different from fgets, where fgets encounters spaces that do not end.

    Usage: int, fscanf (FILE, ^stream, char, ^format,

    [argument ,???);

    Int fscanf (file pointer, format string, input list);

    Example:fscanf (FP,%s%d%lf, a, &b, &c)

    Return value: integer, value equal to the number of [argument??? _

    Fread:

    Function prototypes: size_t, FREAD (void, ^buffer, size_t, size, size_t, count, FILE, ^stream);

    Function: read data from a file stream, read count elements, each element size bytes? If the call succeeds, return count?? If the call is successful, the actual read size*count bytes are read

    Parameter:

    Buffer: is used to receive data memory addresses, at least size*count bytes in size

    Size: the size of a single element, in bytes

    The number of count: elements, each of which is size bytes? Stream: input stream

    Return value: the number of elements actually read. If the return value is not the same as count (not count*size), the end or error of the file may occur

    Gets the error information from f err or and f

    更多相关内容
  • C语言文件操作解析  在文件操作中除了打开操作以及读写操作,还有几种比较常见的操作。下面介绍一下这些操作中涉及到的函数。 一.移动位置指针的函数  rewind函数和fseek函数,这两个函数的原型是:  void rewind...
  • C语言文件操作文件PPT课件.pptx
  • C语言文件操作总结

    2021-01-20 06:18:02
    关于C语言文件操作之前我也写过一篇博客来介绍,但是当时写的很不全面,只是简单的使用了一下 ,今天再从新学习一下。 1、文件的写 首先还是先看一个简单的例子: include int main() { FILE *fp; //声明一个...
  • 主要介绍了c语言文件读写示例(c语言文件操作),需要的朋友可以参考下
  • C语言文件操作

    2018-10-23 14:52:41
    C语言文件操作编程指导,对于使用文件的操作具有指导作用
  • fopen(打开文件)相关函数 open,fclose表头文件 #include定义函数 FILE * fopen(const char * path,const char * mode);函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流...
  • c语言文件操作

    2018-04-09 10:41:00
    c语言文件操作,大家有兴趣的可以看看,适合一些小白,
  • C语言,文档操作函数大全,对软件开发人员来说是个不错的参考。
  • c语言文件操作基础内容,包括fwirte,fopen,rb,wb等等的用法
  • C语言文件操作详解

    千次阅读 2022-02-24 21:01:52
    如果你是一个C语言初学者,那么你一定发现,目前我们的C语言程序只会在执行后自动退出,而不会保存数据及运行结果,那么如何才能保存数据呢?为了保存数据,我们可以用到文件操作

    如果你是一个C语言初学者,那么你一定发现,目前我们的C语言程序只会在执行后自动退出,而不会保存数据及运行结果,那么如何才能保存数据呢?为了保存数据,我们可以用到文件操作。

    目录

    一.文件的打开和关闭-fopen()函数和fclose()函数

    二.常见文件操作函数

    三.文件位置指针相关操作函数

    四.文件读取结束的判定

    5.文件缓冲区


    一.文件的打开和关闭-fopen()函数和fclose()函数

    //打开文件
    FILE * pf = fopen ( const char * filename, const char * mode );
    //关闭文件
    fclose ( pf);

    1.FILE为C语言提供的文件类型,它是一个结构体类型,用于存放文件的相关信息。FILE*即为文件指针类型,通过该指针,我们可以对其相关联的文件进行一系列操作。

    2.为了打开文件,文件名是不可缺少的。如果要打开当前目录下的文件,可只用输入文件名,否则应该输入文件的绝对路径,如:c:\code\test.txt

    3.mode为打开文件的几种方式,常见的有"r"(只读),"w"(只写),"a"(文件末尾追加),"rb"(二进制件打开,只读),"wb"(二进制件打开,只读),"ab"(二进制件打开,追加)等。

    用"r"方式打开文件,若文件不存在,则返回一个空指针表示错误。若用"w"或"a"打开文件,则若文件不存在,都会创建一个新文件,即使文件存在,写入时也会把原有内容先进行覆盖

    4.在对文件进行相关操作后应该及时使用fclose函数进行关闭,以便及时释放资源

    5.若fopen函数打开失败,则返回空指针,且设置全局变量 errno 来标识错误,因此打开文件后应该做必要的判断。对于flose函数,如果成功返回值为零。如果失败,则返回 EOF。

    二.常见文件操作函数

    1.字符输入函数-fgetc()

    fgetc函数返回文件指针指向的字符,并使指针向下一个字符偏移。若想用此函数打印文件全部内容,可用while((ch=fgetc(pf))!=EOF)循环来控制,这是因为当指针指向文件结尾,函数返回值为-1

    2.字符输出函数-fputc()

     由于要输出数据,故文件打开方式为"w",此时如图将字符c输出到了文件内

    3.文本行输入函数-fgets()

     读取的最大字符数为(5-1)=4,这是因为字符串末尾会添加一个‘\0’作为字符串结束标志。该函数返回值为相同的 arr 参数。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指针,因此同理可用while循环判断指针是否为NULL实现打印全部内容。

    4.文本行输出函数-fputs()

                                            如图,能将字符串输入文件 

    5.二进制输入-fread()

     首先需要了解,文本文件内容是以ASCII形式存储,而内存中,字符是以ASCII存储,而整形一般是以二进制进行存储,因此将字符‘4’以二进制输入(而非52),才得以输出字符‘4’。

    函数返回值为成功读取的元素总数,如果总数与 nmemb 参数不同,则可能发生了一个错误或者到达了文件末尾。因此二进制文件的读取结束判断,可以判断返回值是否小于实际要读的个数

    其参数为:

    size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
    • ptr -- 这是指向带有最小尺寸 size*nmemb 字节的内存块的指针。
    • size -- 这是要读取的每个元素的大小,以字节为单位。
    • nmemb -- 这是元素的个数,每个元素的大小为 size 字节。
    • stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输入流

    6.二进制输出-fwrite()

    如图,参数同上,只不过变为输出,将数据内容输出到文件中。此处输出内容为字符,否则在文本文件显示中会产生乱码,如:

    函数返回值表示元素的总数,该对象是一个整型数据类型。如果该数字与 nmemb 参数不同,则会显示一个错误。

    7.格式化输入函数-fscanf()

    如图,将文件内容以格式化输入的方式赋值给变量,再进行打印

    顺便一提sscanf函数,它是将字符串内容以格式化方式输出,其第一个参数是指向字符数组的指针 

    8.格式化输出函数-fprintf()

    如图,基本与printf函数参数相同,只是多了一个文件类型指针的参数,能以格式化输出的方式将内容输出到文件内。

    顺便提一下sprintf()函数。fprintf函数能将数据内容向所有输出流输出,而sprintf函数便是将数据内容保存为字符串,其第一个参数是指向字符数组的指针

    三.文件位置指针相关操作函数

    我们需要知道,文件内部的位置指针用以指示文件内部的当前读写位置,每读写一次,该指针均向后移动

    1.ftell()函数-返回文件位置指针相对于起始位置的偏移量

    如图,以"r"的方式打开文件,位置指针初始时在文首,偏移量为0,而每进行一次字符读写,偏移量便加一。 ftell函数能反映当前文件位置指针的位置

    2.rewind()函数-让文件指针的位置回到文件的起始位置

    如图,使用rewind函数后,偏移量归零。

    3.fseek()函数-根据文件指针的位置和偏移量来定位文件指针。

    其第一个参数为文件类型指针

    第二个参数为指定偏移量,若为负值则位置指针向前偏移

    第三个参数为指定初始偏移位置,有:SEEK_SET为文件开头位置,SEEK——CUR为当前位置指针的位置,SEEK_END则为文件结尾位置

    如图指定初始偏移位置为文件开头SEEK_SET,偏移量为1,打印后位置指针相对于起始位置偏移量便是1

    四.文件读取结束的判定

    1.ferror()函数-判断是否由于发生错误而结束读取

    若读取错误而结束,该函数返回一个非零值,否则返回一个零值。

    如图以"w"(只写)方式进行读取操作,显然由于错误而结束读取文件。

    2.feof函数-判断是否遇到文件结束而结束读取

    若遇到文件结束标志而结束读取,该函数返回一个非零值,否则返回零。

    如图以"r"方式正常读取,用while循环一直读取知道fgetc函数返回值为EOF,即遇到文件结束标志

    需注意,文件结束并非指位置指针置于文件末尾,feof必须在读取到EOF标志后才返回非零值

    如图若用fseek函数将位置指针移动到末尾,此时feof函数对应内容并未打印,这是因为EOF还尚未被读取,相关内容附上原文链接:http://t.csdn.cn/Z6Y4B,原文:关于C语言中feof的使用

    5.文件缓冲区

    ANSIC 标准采用“缓冲文件系统”处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序 中每一个正在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区,装 满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓 冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。

    #include <stdio.h>
    #include <windows.h>
    //VS2013 WIN10环境测试
    int main()
    {
     FILE*pf = fopen("test.txt", "w");
     fputs("abcdef", pf);//先将代码放在输出缓冲区
     printf("此时打开文件,没有内容\n");
     Sleep(10000);//程序睡眠10秒
     printf("刷新缓冲区\n");
     fflush(pf);//刷新缓冲区时,将输出缓冲区的数据写到文件(磁盘)
     printf("再次打开test.txt文件,文件有内容了\n");
     Sleep(10000);
     fclose(pf);
     //注:fclose在关闭文件的时候,也会刷新缓冲区
     pf = NULL;
     return 0;
    }
    

    C语言在操作文件的时候,需要做刷新缓冲区或者在文件操作结束的时候关闭文件,以便将缓冲区数据写到磁盘文件内,如果不做,可能导致读写文件的问题。

    展开全文
  • C语言文件操作系统实验

    千次阅读 2022-04-14 17:54:09
    C语言文件操作实验:用C语言实现把n个学生的姓名,学号,英语成绩,数学成绩存到文件中计算总分并且在屏幕上显示学生信息 对于文件操作实现有两种方法,一种是用fscanf/fprintf函数实现,另外一种是用fwrite/fread...

    ⭐一个很基础的文件实验,让我们初步接触文件操作

    ⭐C语言文件操作实验:用C语言实现把n个学生的姓名,学号,英语成绩,数学成绩存到文件中计算总分并且在屏幕上显示学生信息

    划重点(小细节来了)
    对于文件操作实现有两种方法,一种是用fscanf/fprintf函数实现,另外一种是用fwrite/fread函数实现,我的建议是用前者编写代码。具体的原因是因为fscanf/fprintf函数创建的是文本文件,可以用编译器直接打开,而后者创建的是二进制文件,打开后会出现乱码的情况。
    两种函数的具体实现方式我都会给大家介绍

    ⭐函数中涉及到的文件地址就是我们所要进行操作的文件,复制文件地址时会有‘‘转义符号编译器会报错,我们可以用两个’'或者用’/'符号代替就可以了。
    用我自己的文件举个栗子:
    “D:\Stephen_Curry__.txt”
    这个文件地址我们只需要修改成
    "D:\\Stephen_Curry__.txt"或者"D:/Stephen_Curry__.txt"就可以正常运行了。⭐

    代码如下:

    第一种用fscanf/fprintf函数实现

    //创建的是文本文件
    #include<stdio.h>
    #include<stdlib.h>
    int n;
    struct student
    {
        char name[100];
        char eng[20];
        int english;
        int math;
        int sum;
    }stu[100],*qq,*pp;
    int main()
    {
        FILE *fp;
        qq=stu;
        if((fp=fopen("文件地址","wb+"))==NULL)
        {
            printf("Cannot open file,strike any key exit!");
            exit(1);
        }
        printf("intput student number:\n");
        scanf("%d",&n);
        printf("input data\n");
        //从键盘输入学生数据存入数组
        for(int i=0;i<n;i++,qq++)
        {
            scanf("%s%s%d%d",qq->name,qq->eng,&qq->english,&qq->math);
            qq->sum=qq->english+qq->math;
        }
    
        qq=stu;
        pp=stu;
        //把数组中学生数据粗存入文件
        for(int i=0;i<n;i++,qq++)
            fprintf(fp,"%s\t%s\t%5d%5d%5d\n",qq->name,qq->eng,qq->english,qq->math,qq->sum);
        //把文件指针重新定位到文件头
        rewind(fp);
        //从文件中读取学生数据到数组
        for(int i=0;i<n;i++,pp++)
            fscanf(fp,"%s%s%d%d%d",pp->name,pp->eng,&pp->english,&pp->math,&pp->sum);
    
        printf("\n\nname\tnumber     english     math     sum\n");
        qq=stu;
        for(int i=0;i<n;i++,qq++)
            printf("%s\t%s\t%5d%5d%5d\n",qq->name,qq->eng,qq->english,qq->math,qq->sum);
        fclose(fp);
        return 0;
    }
    

    第二种用fwrite/fread函数实现

    //创建的是二进制文件
    #include<stdio.h>
    #include<stdlib.h>
    int n;
    struct student
    {
        char name[100];
        char eng[20];
        int english;
        int math;
        int sum;
    }stu[10],*qq,*pp;
    int main()
    {
        FILE *fp;
        qq=stu;
        if((fp=fopen("文件地址","wb+"))==NULL)
        {
            printf("Cannot open file,strike any key exit!");
            exit(1);
        }
    
        printf("intput studen number:\n");
        scanf("%d",&n);
        printf("input data\n");
    
        //从键盘输入两个学生数据存入数组
        for(int i=0;i<n;i++,qq++)
        {
            scanf("%s%s%d%d",qq->name,qq->eng,&qq->english,&qq->math);
            qq->sum=qq->english+qq->math;
        }
        qq=stu;
        pp=stu;
    
        //把数组中学生数据写入文件
        fwrite(pp,sizeof(struct student),n,fp);
    
        //把文件指针重新定位到文件头
        rewind(fp);
    
        //从文件中读取学生数据到数组
        fread(qq,sizeof(struct student),n,fp);
    
        printf("\n\nname\tnumber     english     math     sum\n");
    
        for(int i=0;i<n;i++,qq++)
            printf("%s\t%s\t%5d%5d%5d\n",qq->name,qq->eng,qq->english,qq->math,qq->sum);
        fclose;
        return 0;
    }
    
    展开全文
  • c语言文件操作详解

    千次阅读 2022-03-21 11:21:16
    首先对于文件操作的文件缓冲区概念:其由ANSIC标准采用“缓存文件系统“处理的数据文件,缓冲文件系统值系统自动的在内存中为程序中每一个正在使用的文件开辟一块”文件缓冲区“,输出缓冲区(满后一次送往磁盘),...

    c语言定义了文件的操作类型为文件指针类型(FILE*)

    • 首先对于文件操作的文件缓冲区概念:其由ANSIC标准采用“缓存文件系统“处理的数据文件,缓冲文件系统值系统自动的在内存中为程序中每一个正在使用的文件开辟一块”文件缓冲区“,输出缓冲区(满后一次送往磁盘),输入缓冲区(满后一次送往程序数据区),以上首先与内存交互(任何数据输出屏幕时都有文件缓冲区)
    • 文件信息区保存在一个结构体变量中(类型 FILE),可创建各个信息文件维护区,下方是c语言对于FILE*的内部定义

    • 文件的打开和关闭 文件在读写之前应该先打开文件,在使用结束之后应该关闭文件。 在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指 针和文件的关系。 ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件。 打开方式如下:

      FILE * fopen ( const char * filename, const char * mode );

       //关闭文件 int fclose ( FILE * stream );

    • 文件使用方式含义:mode“r”(只读) 为了输入数据,打开一个已经存在的文本文件 出错 “w”(只写)  建立一个新的文件 “a”(追加) 向文本文件尾添加数据 建立一个新的文件 “rb”(只读) ,打开一个二进制文件 出错 “wb”(只写),打开一个二进制文件 建立一个新的文件 “ab”(追加) “r+”(读写) 为了读和写,打开一个文本文件  “w+”(读写) 为了读和写,建议一个新的文件 建立一个新的文件 “a+”(读写) 打开一个文件,在文件尾进行读写 建立一个新的文件 “rb+”(读写) 为了读和写打开一个二进制文件  “wb+”(读写) 为了读和写,新建一个新的二进制文件 建立一个新的文件 “ab+”(读写) 打开一个二进制文件,在文件尾进行读和写 建立一个新的文件。

    • 字符输出函数fgetc格式化读取函数fscanf
      字符输入函数

               fputc

      格式化写入函数fprintf
      文本行输出函数fgets二进制输出函数fread
      文本行输入函数fputs二进制输入函数fwrite
    • 以上为c语言给出的字符读写操作函数,那么首先我们应该创建一个文件

    • 现已写入,再来输出

    •  
      int fputc ( int character, FILE * stream );//fputc原型
      int fgetc ( FILE * stream );//fgetc原型
    • 以下是fgets、fputs、fread等函数原型
      char * fgets ( char * str, int num, FILE * stream );
      int fputs ( const char * str, FILE * stream );
      size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
      size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
      int fscanf ( FILE * stream, const char * format, ... );
      int fprintf ( FILE * stream, const char * format, ... );
    • 下面就来照此定义运用一下fgets和fputs
    • 以下为fread和ferite的测试

    • 格式化的输入输出依旧可以按照定义去测试

     以下是关于随机读写的描述

    展开全文
  • 本文给大家详细介绍了下C语言文件操作函数fopen, fclose, mkdir的用法及示例,非常的简单实用,有需要的小伙伴可以参考下。
  • 文章主要例举一个c语言文件操作常用函数及读写文件的代码,感性趣的朋友可以看看。
  • C语言文件操作思维导图及实例代码
  • C语言文件操作大全

    2020-08-27 22:08:11
    主要介绍了C语言文件操作大全的相关资料,需要的朋友可以参考下
  • C语言文件操作.pdf

    2021-09-30 11:39:16
    C语言文件操作.pdf
  • 关于C语言文件操作之前我也写过一篇教程来介绍,但是当时写的很不全面,只是简单的使用了一下 ,今天再从新学习一下。 1、文件的写 首先还是先看一个简单的例子: include int main() { FILE *fp; //声明一个...
  • C语言常用函数说明
  • 主要介绍了C语言文件操作中 fgets与fputs 函数详解的相关资料,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 353,733
精华内容 141,493
关键字:

c语言文件操作

友情链接: ProIEC104Client1-5版.rar