C语言对文件的基本操作

在C语言中,对于文件的操作是利用FILE结构体进行的。

几个常用的操作文件函数简介

1:打开文件 FILE *fopen( const char *filename, const char *mode );   

第一个参数是指向文件名字符串常量的指针类型;

第二个参数指定文件打开的模式。

文件打开模式:

r:读取,如果文件不存在,函数调用失败;

w:为写入操作打开一个空文件。若文件不存在,则创建一个文件;若给定的文件已经存在,那么它的内容将被清空;

a:为写入操作打开文件。若文件不存在,则首先创建一个文件;若文件存在,那么在该文件结尾添加新数据,在写入数据之前,不会移除已有的EOF标记;

r+:打开文件用于写入操作和读取操作,文件必须存在;

w+:写入和读取,其他同w;

a+:打开文件用于读取和添加操作,其他同a。

注:打开文件后一般会做一些文件的读取或者写入操作,若文件打开失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。

[cpp] view plain copy

  1. #include<stdio.h>
  2. main()
  3. {
  4. FILE * pFile=fopen("zkd","r");
  5. if(pFile==NULL) return;
  6. fclose(pFile);
  7. return 0;
  8. }
2:文件的写入 size_t fwrite( const void *buffer, size_t  size, size_t count, FILE *stream )

第一个参数:指向将要被写入文件的数据;

第二个参数:以字节为单位的项的大小。size_t类型,实际上就是unsigned int型;

第三个参数:将要被写入的项的最大数目;

注:即保证写入数据大小为第二个参数和第三个参数之积即可。

第四个参数:指向FILE类型的指针,通过fopen获得。

3:刷新缓冲区 fflush( FILE *stream )

C语言对文件的操作使用了缓存文件系统,即系统自动为每个正在使用的文件在内存中开辟了一块缓存区域,从内存向磁盘文件写入的数据先送到内存中的这个缓冲区,直到缓冲区的数据装满以后,才把数据一起送到磁盘文件上。

    FILE *pFile=fopen("zkd.txt","w");
    if (pFile==NULL)
        return 1;
    fwrite("I love you!",1,strlen("I love you!"),pFile);
    fflush(pFile);  

4:文件的关闭 fclose( FILE *stream )

关闭文件,此时也会将缓冲区内容写入磁盘,但是和fflush相比,接下来若想对文件读写,则必须再次打开文件。

5:文件指针定位 int fseek( FILE *stream, long offset, int origin);

在C语言文件操作中,将有一个文件指针,该指针会随时根据我们对文件的操作来移动位置,始终指向下一个将要写人的位置;

第二个参数:偏移量(和文件指针的位置相比)

第三个参数:指定文件指针的起始位置,可以取三个值:

SEEK_CUR:从文件当前位置处开始;

SEEK_END:从文件结尾处开始;

SEEK_SET:从文件开始处开始。

6:文件的读取 size_t fread( void *buffer, size_t size, size_t count, FILE *stream)

第一个参数:指向存放数据的缓冲区;

其他的同fwrite();

7:获取文件长度方法 long ftell( FILE *stream )

函数 ftell 用于得到文件位置指针当前位置相对于文件首的偏移字节数

先利用fseek函数将文件指针移动到文件的结尾处,然后利用ftell函数就可以得到文件的长度。

fseek(pFile,0,SEEK_END);

int len=ftell(pFile);

len即为文件长度

                #include "stdafx.h"
                #include <stdio.h>
                #include <string.h>
                #include <stdlib.h>  

                int _tmain(int argc, _TCHAR* argv[])
                {
                    FILE *pFile=fopen("zkd.txt","r");
                    if (pFile==NULL)
                        return 1;
                    fwrite("I love you!",1,strlen("I love you!"),pFile);
                    fflush(pFile);
                    fseek(pFile,0,SEEK_END);
                    int len=ftell(pFile);
                    char *ch=(char*)malloc(len+1);
                //  memset(ch,0,100);
                    rewind(pFile);
                    fread(ch,1,len,pFile);
                    ch[len]=‘\0‘;
                    printf("%s",ch);
                    fclose(pFile);
                    return 0;
                } 

注意点:

文件的打开与关闭是配套的,有文件的打开就有文件的关闭。

在对文件进行读写时,需要注意文件位置指针,文件位置指针来控制文件读写的位置,例如是在最开始读写还是在最后面读写。例如当我们调用fgetc()读取一个字符,文件位置指针就会自动指向下一个字节。

文件指针文件位置指针是不同的两个概念,文件指针指向整个文件结构,而文件位置指针指向文件读写的位置。

参考文章:https://blog.csdn.net/clh19901213/article/details/18269989

原文地址:https://www.cnblogs.com/mlgjb/p/8966549.html

时间: 2024-10-12 07:27:47

C语言对文件的基本操作的相关文章

c语言文件的基本操作

c语言对文件的操作主要分为: 按字符操作,按行操作,按内存块操作 主要的函数: fopen(): FILE * fopen(_In_z_ const char * _Filename, _In_z_ const char * _Mode); 第一个参数是文件的绝对路径名(包含文件),第二个是文件的打开方式, Mode(方式) 意义如下: "r"打开一个用于读取的文本文件 "w" 创建一个用于写入的文本文件 "a" 附加到一个文本文件 "

C语言中文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析

C语言文件打开模式浅析 在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图: 打开模式  只可以读   只可以写  读写兼备 文本模式 r w a r+ w+ a+ 二进制模式 rb wb ab  rb+ (r+b)   wb+ (w+b)   ab+ (a+b)  其中,二进制模式与文本模式操作相似,只不过是以二进制流的形式读写而已,下面以文本模式为例分析: 1."r" 模式: 1.1 打开文件进行“只读”操作,即只能从文件读取内容. 1.2 若欲操作的文件不存在,则打开

打印菜单界面,用c语言实现二叉树的基本操作

打印菜单界面,用c语言实现二叉树的基本操作: 其代码原理和用c++实现一样,请看本人上篇博客:二叉树的先序.中序.后序遍历等基本操作c++实现,链接:http://yaoyaolx.blog.51cto.com/10732111/1783527 实现代码: #include <stdio.h> #include <stdlib.h> #define MAXSIZE 50 //定义二叉树的二叉链表结构 typedef struct Node { char data; struct N

C语言头文件的使用(转载)

C语言头文件的使用 ——by janders 转载请注名作者和出处,谢谢! 原文:http://blog.csdn.net/janders/article/details/611081 C语言中的.h文件和我认识由来已久,其使用方法虽不十分复杂,但我却是经过了几个月的“不懂”时期,几年的“一知半解”时期才逐渐认识清楚他的本来面目.揪其原因,我的驽钝和好学而不求甚解固然是原因之一,但另外还有其他原因.原因一:对于较小的项目,其作用不易被充分开发,换句话说就是即使不知道他的详细使用方法,项目照样进行

C语言之文件操作08——总结

C程序的文件操作共涵盖7个例题,包含格式打印,文件读取,条件查找,矩阵的文件操作,数据格式输入及调用计算等内容. 文件操作使得程序有更强的拓展性,使其可以单独保存数据,这为程序的调试和优化打下了坚实的基础,为我们实现大规模计算提供了可能.至此,相信大家对文件操作也有了比较好的认识,无非是写入.读取.调用. 我们常常会听说C的强大,也是因为她有着文件操作的功能,而文件数据是可以方便重写和维护的. MATLAB数学软件是一款十分强大的工具型软件,它是通过C语言来表达算法的,作为面向过程的编程语言C,

015_C语言中文件操作

 文件:存储在外部介质上的数据集合 ASCII码文件和二进制文件 流式文件和非流式文件 在内存中只有1和0,电脑在显示文件时,按一定编码显示 流式文件:输入输出的数据流的开始和结束仅受程序控制而不受物理符号控制 缓冲文件和非缓冲文件 每一个使用的文件都会在内存中开辟一个缓冲区 文件打开fopen 文件关闭fclose 读到文件末尾时即读到EOF 文件操作所用到的函数fgetc/fputc  fgets/fputs   fscanf/fprintf等一些函数使用时可同过帮助文档得知 文件定位函

关于C语言读取文件时候多读一行

梗概:为什么C语言读取文件到结构体时为什么整天多读一行?一切都是[!feof(fp)]的错!!! while (!feof(fp)) {  fgets(buffer,256,fp);  j++; } 像这样的代码,是很多C语言学者经常犯的错误!! feof()这个函数是用来判断指针是否已经到达文件尾部的.若fp已经指向文件末尾,则feof(fp)函数值为"真",即返回非零值:否则返回0. 对呀!那有什么问题的呢? 其实feof() 这个函数是当读到文件结束符就返回 true 值,而非到

(转) C语言头文件、库文件的查找路径

在程序设计中,文件包含是很有用的.一个大的程序可以分为多个模块,由多个程序员分别编程.有        些公    用的符号常量或宏定义等可单独组成一个文件,在其它文件的开头用包含命令包含该文件即可使        用.这样,可避免在每个文件开头都去书写那些公用量,从而节省时间,并减少出错. 对文件包含命令还要说明以下几点:1. 包含命令中的文件名可以用双引号括起来,也可以用尖括号括起来.例如以下写法都是允许的:    #include"stdio.h"    #include   

C语言的文件的操作(一)

C语言的文件的操作(一) 一.文件定义及分类 概念:文件是指一组相关数据的有序集合,这个数据集有一个名称,即为文件名. §1 普通文件: 普通文件是驻留在磁盘或其他外部介质上的一个有序数据集,可以是源文件.目标文件.可执行程序,也可以是一组带输入的处理的原始独居或者是一组输出结果.对于源文件.目标文件.可执行程序可以称为程序文件,对输入输出程序可称作数据文件. §2 设备文件: 设备文件是指与主机相连的各外部设备,如串行通信接口.显示器.打印机.键盘等.在操作系统中把外部设备也看作一个文件来进行