函数调用:

fclose(文件指针);

函数功能:

使文件指针变量不指向该文件,也就是文件指针变量与文件“脱钩”,此后不能再通过该指针对原来与其相联系的文件进行读写操作。
返回值:
关闭成功返回值为0;否则返回EOF(-1)
对文件的读和写是最常用的文件操作。在C语言中提供了多种文件读写的函数:
字符读写函数    :fgetc 和 fputc
字符串读写函数:fgets 和 fputs
数据块读写函数:freed 和 fwrite
格式化读写函数:fscanf 和 fprinf
下面分别予以介绍。使用以上函数都要求包含头文件stdio.h。
一、字符输入输出函数(fputc()和fgetc())
fputc()函数调用:
fputc ( ch,fp ) ;
函数功能:
将字符(ch的值)输出到 fp 所指向的文件中去。
用写或读写方式打开一个已存在的文件时将清除原有的文件内容,写入字符从文件首开始。如需保留原有文件内容,希望写入的字符以文件末开始存放,必须以追加方式打开文件。被写入的文件若不存在,则创建该文件。
每写入一个字符,文件内部位置指针向后移动一个字节。
fputc函数有一个返回值,如写入成功则返回写入的字符,否则返回一个EOF。可用此来判断写入是否成功。
#if 1
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>void main()
{FILE* fp;char ch, filename[20];printf("Please input the filename you want to write:");scanf("%s", filename);if (!(fp = fopen("filename", "wt+"))){printf("Can't open the file!");exit(0);}printf("Please input the sentences you want to write: ");ch = getchar();ch = getchar();while (ch != EOF)   // ctrl + z{fputc(ch, fp);ch = getchar();}fclose(fp);
}
#endif

程序执行结果不对,需要排查

fgetc()函数调用:

ch = fgetc(fp);
函数功能:
其意义是从打开的文件 fp 中读取一个字符并送入 ch 中。
在fgetc函数调用中,读取的文件必须是以读或读写方式打开的。
在文件内部有一个位置指针。用来指向文件的当前读写字节。
在文件打开时,该指针总是指向文件的第一个字节。使用fgetc 函数后,该位置指针将向后移动一个字节。因此可连续多次使用fgetc函数,读取多个字符。
应注意文件指针和文件内部的位置指针不是一回事。
文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。
文件内部的位置指针用以指示文件内部的当前读写位置,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的。
从一个文本文件顺序读入字符并在屏幕上显示出来:

ch = fgetc(fp);

while(ch!= EOF)

  {

       putchar(ch);

ch = fgetc(fp);

  }

注意:EOF不是可输出字符,因此不能在屏幕上显示。由于字符的ASCII码不可能出现-1,因此EOF定义为-1是合适的。当读入的字符值等于-1时,表示读入的已不是正常的字符而是文件结束符。
#if 1
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>
#include <stdlib.h>void main()
{FILE *fp;char ch, filename[20];printf("Please input the filename you want to write: ");scanf("%s", filename);if( !(fp = fopen(filename, "r"))){printf("Cannot open the file!\n");exit(0);   // 终止程序}while( ch != EOF )   // ctrl + z{ch = fgetc(fp);putchar(ch);}fclose(fp);
}
#endif

程序执行结果不对,需要排查

从一个二进制文件顺序读入字符:

while(!feof(fp))

  {

ch = fgetc(fp);

  }

注意:ANSI C提供一个feof()函数来判断文件是否真的结束。如果是文件结束,函数feof(fp)的值为1(真);否则为0(假)。以上也适用于文本文件的读取。

文件操作(第二节文件的写入和读取)相关推荐

  1. 初学Python——文件操作第二篇

    前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...

  2. linux判断文件写入完毕,linux文件编程——系统调用(打开、写入、读取、访问判断)...

    linux文件编程有两个方法:1.linux系统调用 2.C语言函数库 前者依赖的是linux系统,后者独立于操作系统而存在,不依赖于任何操作系统,因此,在不同的操作用使用C语言函数库的方法是一样的. ...

  3. Go 学习笔记(21)— 标准库 os 操作文件(新建、打开、写入、读取、删除、关闭文件)

    Go 操作文本文件时,与其它语言一样也有新建文件.打开文件.写文件.读文件.删除文件等操作.主要有两个标准库来提供这些操作,分别为 os 和 ioutil .在该文中我们介绍 os 模块. 1. 新建 ...

  4. 基石为勤能补拙的迷宫之旅——第八天(Python文件操作)

    一.文件操作基本步骤 1.打开文件的两种方式 变量名 = open('需打开的文件','模式选择',encoding='编码类型')with open('需打开的文件','模式选择',encoding ...

  5. C/C++/Qt 文件操作 效率比较

    C/C++/Qt 文件操作 & 效率比较 1 介绍 2 比较结果 2.1 Linux平台上运行程序普遍比Windows上快:Windows下VC编译的程序一般运行比MINGW(MINimal ...

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

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

  7. [Python]文件操作

    前言 系列文章目录 [Python]目录 视频及资料和课件 链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234 提取码:1234 文 ...

  8. Python文件操作,时间日期操作,collections增强,Deque(类似java的LinkedList),OrderedDict,Counter

    1.文件操作的案例: #文件操作的三种方式 #r = read 读取文件 #w = write 写入文件,覆盖掉 #a = append 追加写入,不会覆盖原有的内容 #读文件 f = open(&q ...

  9. c#文件操作Streamwriter, streamreader的使用

    网上看到的觉得值得学习所以保存下来供以后参考 c文件操作 C使用StreamWriter类写入文件文件 C使用StreamReader类读取文件文件 网上看到的,觉得值得学习,所以保存下来供以后参考 ...

最新文章

  1. 考夫曼:破解大脑代码并创建真正的人工智能
  2. iOS开发 - OC - block的详解 - 深入篇
  3. Oracle 原理: 视图,对视图进行增删改操作
  4. python3之协程(1)---协程简介
  5. Apache OpenOffice 下载量突破一亿次
  6. SPOJ1812 LCS2
  7. java中key的作用_key word ‘final’ 在java 中作用
  8. 【elasticsearch】es一直重启,报错日志是分片无法分配
  9. IDEA配置使用阿里云maven仓库
  10. 学生用计算机记录表,计算机教室学生上机记录表第14周
  11. react 类暴露_React 组件暴露自身 API 的方法
  12. Android中ListView错位布局实现(无聊向)
  13. dot全称_求魔兽世界中的缩写全称
  14. 微信聊天记录迁移(Android到IOS)
  15. 绕过tp路由器管理密码_怎么用手机设置路由器?TPlink无线路由器安装设置方法...
  16. 1,话题通讯C++与python
  17. Mysql数据库服务
  18. 引用网络jQuery地址
  19. 5个机器学习开源项目,挑战你的数据科学技能!(附链接)
  20. DPDK(二):准备5---cache 颠簸

热门文章

  1. 水晶报表的制作(图表)
  2. 解决spring JdbcTemplate更新操作成功但数据库未插入值的方案
  3. 1.Android稳定性测试
  4. 搞点好玩儿的,如何做一个你自己的ad-block插件
  5. C语言坐标旋转,c语言矩阵的顺、逆时针旋转
  6. 十年寻伯乐,只为指路人
  7. sort()sorted()
  8. 个人搭建阿里云轻量级服务器
  9. Forth(背包!动态规则)
  10. 搭建多节点Linux环境