【C语言疯狂讲义】(十六)C语言文件操作

1、文件的基本概念

存储外部介质上得数据集,数据集有一个名称就是文件名

文件的分类:

1)用户角度:普通文件和设备文件

2)存储的内容:

ascii文件(文本文件):

存储的流程:根据文本找到其对应的ascii码值---->转为二进制-->

写到文件中

读取流程:
二进制-->10进制-->找对应的字符-->显示出来

二进制文件:

二进制数据的存取

文件的操作流程:

1)导入头文件  stdio.h

2) 定义文件指针

3)打开文件

4)操作文件

5)关闭文件

文件操作原理

2、文件指针

FILE 结构体

FILE *fp;  结构体指针

作用:存储一个文件的首地址,指向一个文件

3、文件的打开和关闭

打开  fopen(文件名,操作方式);

fopen("a.txt","r");

//a.txt默认的去products目录去找,/Users/apple/Library/Developer/Xcode/DerivedData/C15-综合项目-cmassyrpkwjxularuygrjqhojbwj/Build/Products/Debug

fopen("/Users/apple/Desktop/a.txt","r");

操作方式:

r    w    a    b       +      t

读   
写   追加 
二级制   读写  
文本

w  -- 写入文件的时候,如果文件不存在,则创建

‘                                         
存在   则覆盖

r+   w+   wb+  a+

关闭文件:

fclose(文件指针);

4、文件操作的函数

1) 字符型数据的读取和写入

写入:

fputc(‘字符‘,文件指针);

char c=‘A‘;

fputc(c,fp);

读取:

char ch = fgetc(fp);

2)字符串类型数据的读取和写入

写入:

fputs(数组名/指针名,fp);  //fputs(数组名,stdout);

读取:

fgets(数组名/指针名,长度,fp);

fgets实际读取的字符个数是长度-1

1)遇到\n
结束,遇到EOF也会结束

3)数据块的读取和写入

写入:

fwrite(写入的变量地址,数据块的大小,块数,fp);

int a =123;

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

struct Student stu1;

fwrite(&stu1,sizeof(struct Student),1,fp);

读取:

struct Student s1;

fread(变量的地址,数据块的大小,块数,fp)

fread(&s1,sizeof(struct Student),1,fp);

//使用s1进行输出

4)格式化的读取和写入

写入数据和读取数据按照一定的格式进行

写入:

fprintf(文件指针,"格式化的字符串",变量列表);

fprintf(fp,"%d,%c,%d#",10,‘a‘,20);

10,a,20#10,a,20#10,a,20#

读取

fscanf(fp,"%d,%c,%d#",&a,&ch,&b);

fprintf(fp,"%d,%s,%d",20,"abc",30);

fscanf(fp,"%d,%s,%d",&a,str,&b);

str = abc,30

改成:

fprintf(fp,"%d,%d,%s",20,20,"abc");

fscanf(fp,"%d,%d,%s",&a,&b,str);

5、文件的随机读取

设定文件的头指针的位置

默认fp是指向文件的首地址

1)rewind(fp);    //fp指向首地址

2)fseek(fp,偏移的距离,起始点);

fseek(fp,32L,SEEK_SET); //从文件头部开始,偏移32个字节

6、文件的检测函数

feof()   用来检测文件是否到了末尾

如果没有到末尾 0

到末尾 1

缺点:多执行一次

7、C语言的其他的头文件的介绍

math.h

stdio.h

stdlib.h

time.h

string.h

时间: 2024-10-30 18:01:38

【C语言疯狂讲义】(十六)C语言文件操作的相关文章

苹果新的编程语言 Swift 语言进阶(十六)--泛化

泛化允许你定义一个宽松.可重用的函数或者类型,使用泛化能够避免代码的重复,也能以更清楚和抽象的方式来表达程序的意图. 泛化是Swift语言提供的强大功能之一,Swift提供的许多标准库都使用了泛化来创建,如Swift提供的数组和词典类型.通过使用泛化,你能使用一个数组和词典来包含和存储任何类型的元素. 1.1 泛化函数 使用Swift语言你能定义一个可以工作于任意类型的泛化函数,从而不必为每种类型都定义一个具有相同功能的函数,这样就可以大大减少代码的重复. 如对一个实现任意类型值交换(swap)

Gradle 1.12 翻译——第十六章. 使用文件

有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com/1.12/userguide/userguide.html 本文原创,转载请注明出处:http://blog.csdn.net/maosidiaoxian/article/details/41113353 关于我对Gradle的翻译,以Github上的项目及http://gradledoc.qin

第十六章 在文件中搜索文本工具:grep命令 和egrep命令

第十六章 在文件中搜索文本工具:grep命令 和egrep命令 名词解释 grep(global search regular expression(RE)and print out the line,全面搜索正则表达式并把行打印出来) grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 选项 - -a :不要忽略二进制数据 - -A <显示行数>:除了显示符合范本样式的那一行之外,并显示该行之后的内容. - -b :在显示符合范本样式的那一行之外,并显示该行

QT开发(二十四)——QT文件操作

QT开发(二十四)--QT文件操作 一.QT文件操作简介 QT中的IO操作通过统一的接口简化了文件与外部设备的操作方式,QT中文件被当作一种特殊的外部设备,文件操作与外部设备操作相同. 1.IO操作的主要函数接口 打开设备:bool open(OpenMode mode) 读取数据:QByteArray read(qint64 maxSize) 写入数据:qint64 write(const QByteArray & byteArray) 关闭设备:void close() IO操作的本质是连续

【C语言疯狂讲义】(七)C语言进制转换

1.计算机中的进制 2进制:逢二进1      0  1 8进制:逢八进1      0  1   2  3  4  5  6  7 10进制:逢十进1  默认的进制  0 - 9 16进制:逢十六进1   0 - 9  A B C D E F      (内存的地址格式) 2.进制的转换问题 三个要素: 数位(0-7). 基数(每一位能取值的个数). 位权(数码*基数^数位).    101 = 1*2^0+0*2^1+1*2^2 数码(每一位设置) 转换:有得时候转换为人能识别的数制,要操作

【阅读笔记】《C程序员 从校园到职场》第六章 常用文件操作函数 (Part 1)

参考链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/24926023 让你提前认识软件开发(18):C语言中常用的文件操作函数总结及使用方法演示代码 - CSDN博客 Contents: 1. C语言中常用的文件操作函数总结 (1) fopen   作用:打开文件 (2) fclose  作用:关闭文件 (3) fgetc   作用:由文件中读取一个字符. (4) fgets   作用:由文件中读取一字符串. (5) fflu

【C语言疯狂讲义】(十六)C语言简易通讯录(未优化版)

<通讯录>开发用到得知识点 常量.变量的使用 全局变量 分支语句 函数 宏 循环语句 scanf和printf 数据 结构体 文件 指针* <通讯录>中解决的经典问题 数组元素如何删除(不使用链表) 开发调试环境:Mac os x10.10 + xcode6.1 通讯录主界面: 添加联系人界面 删除联系人界面 修改联系人界面 搜索联系人 #include <stdio.h> #include <string.h> /****** 宏定义 *******/ #

区块链技术语言(二十六)——Go语言异常处理

任何编程语言的学习都要考虑错误处理.早期的语言,比如C语言中的errno,不是语言规范的一部分,通常只作为一种编程范式存在.但C++语言从语言层面上增加错误处理的支持,比如异常的概念和try-catch关键字的引入.而Go语言最大的亮点之一就是拥有漂亮的错误处理规范. 一.error error是Go语言内建的接口类型,它是错误处理的标准模式,定义如下: 在Go语言中,生成err值的方法有三种方式:通过errors包的New函数获得error类型的值,采用fmt.Errof 将string信息转

苹果新的编程语言 Swift 语言进阶(十六)--泛型

? ? ? ? ??? ?泛型同意你定义一个宽松.可重用的函数或者类型.使用泛型能够避免代码的反复.也能以更清楚和抽象的方式来表达程序的意图. ? ? ? ? ? ?泛型是Swift语言提供的强大功能之中的一个,Swift提供的很多标准库都使用了泛型来创建,如Swift提供的数组和词典类型. 通过使用泛型,你能使用一个数组和词典来包括和存储不论什么类型的元素. ?? ? 1.1 泛型函数 ?? ? ? ? ? 使用Swift语言你能定义一个能够工作于随意类型的泛型函数.从而不必为每种类型都定义一