关于C语言的文件操作之前我也写过一篇博客来介绍,但是当时写的很不全面,只是简单的使用了一下 ,今天再从新学习一下。

1、文件的写

首先还是先看一个简单的例子:

include

int main()

{

FILE *fp; //声明一个文件指针,指向文件缓冲区的首地址

char ch;

if( (fp = fopen("file_1.txt","a")) == NULL ) //w+打开可读写文件,若文件存在则清零,不存在则新建文件,a 模式不清零

{

printf("Cannot open file, press any key to exit!"); //文件无法打开

}

printf("Input a string:\n");

while ((ch = getchar()) != '\n' )

{

putc(ch,fp); //该函数将字符写入文件,与 fputc 的区别?

}

fclose(fp);

return 0;

}

这个例子就是实现打开或新建一个文本文件,然后写入用户在控制台输入的数据。

关于文件操作首先是:

FILE *fp;

这个FILE是文件类型标识符,是C编译系统定义好的一个结构体类型,结构体中含有文件名、文件状态等信息。

其定义一个指针变量fp,该变量用于指向一个文件,存放的是文件缓冲区的首地址。该指针又叫文件指针,

文件指针是一个指向文件开头的指针。使用文件指针,我们可以打开或者关闭一个文件,同时,我们也可以使用文件指针将数据的读写位置移动到文件的任意字节位置。

然后使用fopen函数打开或新建一个文件:

fopen() 函数用来打开一个文件,该函数接受两个字符串类型的参数:文件名(filename)、打开模式(open mode)

fopen("filename","open mode")

当使用该函数打开一个文件时,返回一个指针,该指针指向文件的开始位置,称为文件指针,

那么为了接收它返回的文件指针,我们需要事先声明一个文件指针: FILE *fp

如果因为某些系统内部原因导致文件无法打开,则函数返回空指针 NULL

所以为了避免文件打开失败导致的程序异常,打开文件一般按照如下格式:

if( (fp = fopen("file_1.txt","a")) == NULL ) //w+打开可读写文件,若文件存在则清零,不存在则新建文件,a 模式不清零

{

printf("Cannot open file, press any key to exit!"); //文件无法打开

}

在下面就是获取用户输入,使用一个while循环持续的获取输入

while ((ch = getchar()) != '\n' )

{

putc(ch,fp);

}

再此使用 \n 作为结束标志,即只能在控制台输入一行字符串,

若使用EOF,则可以多行输入,用 ctrl+z 表示输入结束,该组合键代表标准输入文件的结束。

下一句 putc(ch,fp); 就是吧用户输入的字符写入文件,注意这里是一个字符一个字符写入的,因为输入用的是getchar函数,如果是字符串输入写入的话,可以使用 fputc()函数直接写入一个字符串。

最后也是非常重要的一部,对文件读写完毕后需要关闭文件,防止文件打开过多造成的文件读写混乱。

使用 fclose()函数关闭一个文件,

关闭文件,正常关闭时返回0,否则返回1

关闭时,系统会清除缓冲区,并把数据输出到磁盘文件,释放缓冲单元,使文件指针与具体文件脱钩。

fclose(fp);

2、文件的读

到这里关于文件的写操作就基本上是这些,下面是关于文件的读操作,其实和写差不多。

还是先看一下完整的代码,方便和上面的写操作对比:

#include

#include

int main()

{

FILE *fp;

char ch;

char str[80];

char file_name[15]; //输入文件名称缓冲

//如果文件和本程序在同一个文件下面,则直接输入txt文件名即可

//如果不在同一目录下面,则需要输入完整文件路径格式

//如 : e:\\test.txt

printf("please enter the filename: "); //注意输入文件名时需要带上文件的后缀.txt

gets(file_name); //gets函数用来读取用户输入的字符串,专门针对字符串处理设计的

if((fp = fopen(file_name,"r")) == NULL ) //r模式不能写入数据,只能读取

{

printf("Cannot open file, press any key to exit!\n"); //文件无法打开

exit(0);

}

/*

while( (ch = getc(fp)) != EOF ) //getc函数从文件中读取单个字符

{

putchar(ch); //循环输出单个字符

}

putchar('\n'); //输出一个换行

*/

while((fgets(str,80,fp)) != NULL)

puts(str);

fclose(fp);

}

开始的打开文件方式和写操作的差不多,就是多了一个用户自己输入文件的路径和名称。

然后程序用了两种方式来读取文件内容,一个是使用fgetc函数读取单个字符,然后输出,一直循环,直到读取到文件的末尾。

另一种方式是使用特殊的 fgets() 函数来一次性读取80个字节的内容:

fgets 函数从 fp 文件中读取 80 个字节的数据到str数组中,然后用 puts 函数输出。

当到达文件末尾时, 函数返回 NULL,若要持续读出字符串,则循环检测每次读出80个字节后是否到达文件末尾。

c语言txt操作,C语言文件操作总结相关推荐

  1. C 语言编程 — 输入/输出与文件操作

    目录 文章目录 目录 前文列表 输入/输出 scanf() 和 printf() getchar() 和 putchar() 文件操作 打开文件 关闭文件 写入文件 读取文件 二进制 I/O 函数 前 ...

  2. c语言 文件课件,C语言课件第13章-文件操作.ppt

    C语言课件第13章-文件操作.ppt 第13章文件操作 哈尔滨工业大学计算机科学与技术学院苏小红sxh 本章学习内容 二进制文件和文本文件 文件的打开和关闭 文件的顺序读写与随机读写 标准输入输出及其 ...

  3. linux重命名tar命令,linux常用操作指令4 —— 文件操作相关命令(mkdir、touch、rm、mv、cp、cat 、 find 、tar、chmod)...

    文件操作相关命令 文件操作相关命令 1.创建文件夹mkdir 2.创建文件touch 3.移动文件夹mv(类似于剪切) 4.删除rm 5.重命名mv 6.复制cp 7.查看文件(cat.head.ta ...

  4. 【Python】文件操作(单文件操作)

    目录 一.文件操作概述: 二.文件基本操作: 文件操作步骤: 1.打开文件: 2.对文件进行读写操作: 3.关闭文件的输入输出流: demo: 文件访问模式: 基础访问模式特点: 读取操作: 1.re ...

  5. Python文件及目录操作(基本文件操作篇)

    ​ 活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩:迟一天就多一天平庸的困扰. 学习日记 目录 学习日记 一.前言 二.基本文件操作 1.创建和打开文件 2. ...

  6. Linux——权限|shell运行原理——外壳程序|Linux权限的概念|对人操作|角色和文件操作|文件类型访问权限|修改权限ugo+-|8进制|修改权限|更改文件的拥有

    目录 shell运行原理--外壳程序 Linux权限的概念 对人操作 角色和文件操作 文件类型

  7. Objective-C文件和目录操作,IOS文件操作,NSFileManager使用文件操作

    Objective-C文件和目录操作,IOS文件操作,NSFileManager使用文件操作: objective-c通过使用NSFileManager类来管理和操作文件.目录,NSFileManag ...

  8. C语言文件操作+通讯录实现文件操作

    文章目录 前言 一.为什么使用文件 二.什么是文件 三.文件的打开和关闭 四.文件的顺序读写 五.文件的随机读写 六.文本文件和二进制文件 七.文件读取结束的判定 八.文件缓冲区 前言 电脑文件,也可 ...

  9. c语言文件操作步骤是,文件操作的正确流程,C语言文件操作的函数

    引言 操作文件的正确操作流程为: 打开文件->读写文件->关闭文件 在对文件进行读写操作之前,需要先打开文件,操作完成之后就要关闭文件!所谓的打开文件,就是需要获取文件的信息,例如文件名. ...

  10. 学生管理系统 C语言 动态链表 结构体 文件操作 设置密码 输入密码回显星号

    C语言 学生管理系统代码 实现功能 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名.学号.专业.  性别.年龄.   电话.家庭住址.还可以继续拓展 系统要求实现以下功能: 1.输入功能: ...

最新文章

  1. P1444 [USACO1.3]虫洞 wormhole,新手向超详细讲解(搜索、判环、拆点、好题)
  2. html最小化窗口,[转载]js实现窗口(支持拉伸,拖拽,最大化,最小化,滚动
  3. python组合数等于一个值_Python如何实现随机组合结果元组重复数量不能超过某个值?...
  4. (0047)iOS开发之nil/Nil/NULL的区别
  5. Python中join 和 split详解
  6. python 序列解包(解压缩)
  7. identifier of an instance of was altered from to n
  8. doctype是什么?
  9. 03.Python基础--控制流语句-顺序结构-判断结构-循环语句
  10. opencv摄像头速度慢_c++ - 从OpenCV 3切换到OpenCV 4会导致网络摄像头以最高5帧的速度记录,而不是通常的30帧。 - SO中文参考 - www.soinside.com...
  11. gorm利用钩子函数BeforeUpdate更新某个字段
  12. C语言求一个数的平方根倒数的近似值-一战封神的代码
  13. pytorch学习笔记(二十四):深度卷积神经网络(AlexNet)
  14. 项目交换成功——PM(李忠)
  15. DORADO展现中间件的实现
  16. java开发项目经验_十年开发经验总结的 Java 程序员架构学习路线
  17. Word文件忘记保存,恢复文件信息的方法
  18. Excel VLOOKUP实用教程之 08 VLOOKUP如果实现区分大小写的查找?(教程含数据excel)
  19. Could not find goal ‘assembly‘ in plugin org.apache.maven.plugins:maven-assembly-plugin: among avai
  20. Cubieboard安装系统

热门文章

  1. 特性Attibute定义和使用
  2. 关于【bootstrap modal 模态框弹出瞬间消失的问题】
  3. Cordova android框架详解
  4. 前端每日实战:123# 视频演示如何用纯 CSS 创作一架双冀飞机
  5. maven的基本用法
  6. 第十一章、认识与学习BASH
  7. Office 程序默认打开方式
  8. 标准正态分布的积分怎么求?
  9. Q105:PC双系统:Windows 7下硬盘安装Ubuntu 16.04
  10. error: 'NULL' was not declared in this scope