第10章  对文件的输入输出

函数名

调用形式

功能

fopen

fopen(“a1”,”r”);

打开一个文件

fclose

fclose( fp );

关闭数据文件

fgetc

fgetc( fp );

从fp指向的文件读入一个字符

fputc

fputc( ch,fp);

把字符ch写到文件指针变量fp所指向的文件中

fgets

fgets(str,n,fp);

从fp所指向的文件中读入一个长度为n-1的字符串,并在最后加一个’\0’字符,然后存放到字符数组str中

如果在读完n-1一个字符之前遇到换行符’\n’或文件结束符EOf,读入即结束,但将所遇到的’\n’也读入

fputs

fputs( str fp);

fputs( “China”,fp);

把str所指向的字符串写到fp所指向的文件中

fscanf

fcanf ( fp,”%d”,&i);

从fp所指向的文件中读取一个整数送到整型变量i

fprintf

fprintf( fp,”%d”,i)

将i按%d的格式输出到fp指向的文件中

fread

fread( buffer,size,count,fp)

Buffer是地址

从fp所指向的文件中buffer地址开始读取count个大小为size的字符。若成功返回count

fwrite

fwrite( buffer,size,count,fp)

向fp所指向的文件中buffer地址开始存入count个大小为size的字符。若成功返回count

rewind

rewind( fp )

使文件位置标记指向文件开头

fseek

fseek( fp, xxL,0)

0表示文件开始位置

1表示文件当前位置

2表示文件末尾位置

位移量是long型,不要忘记用L

1、打开与关闭文件

fopen( 文件名,使用文件方式);

常用下面的方法打开和关闭一个文件

FILE *fp;  //指向文件型数据的指针变量
if( (fp = fopen("file1","r") )==NULL)
{
printf(" Cannot open!");
exit(); //终止程序
} fclose (fp); //关闭数据文件

2、顺序读写数据文件

#include <stdio.h>
#include <stdlib.h> int main()
{
FILE *fp;
char ch,filename[];
scanf("%s",filename);
if( (fp=fopen(filename,"w"))==NULL)
{
printf("打开失败\n");
exit();
}
ch = getchar(); //接收最后的回车符
ch = getchar(); //接收第一个字符
while( ch!='#') //输入#循环结束
{
fputc(ch,fp);
putchar(ch);
ch = getchar();
}
fclose(fp); return ;
}

3、随机读写数据文件

 #include <stdio.h>
#include <stdlib.h>
#define SIZE 10
struct Studet
{
char name[];
int num;
int age;
}stud[SIZE];
void Save()
{
FILE *fp;
int i;
if( (fp=fopen("stu.dat","wb"))==NULL)
{
printf("Connot open\n");
exit();
}
for( i=; i<SIZE; i++)
if( fwrite( &stud[i],sizeof( struct Studet),,fp)!=)
printf("Write Error\n");
fclose(fp);
}
int main()
{
int i; for( i=; i<SIZE; i++)
scanf("%s%d%d",stud[i].name,&stud[i].num,&stud[i].age);
Save();
FILE *fp;
if( (fp=fopen("stu.dat","rb"))==NULL)
{
printf("Connot open\n");
exit();
}
for( i=; i<; i+=)
{
fseek( fp, i*sizeof(struct Studet),);
fread(&stud[i],sizeof(struct Studet),,fp);
printf("%-10s%4d%4d\n",stud[i].name,stud[i].num,stud[i].age);
}
return ;
}

大概文件操作最难也就考到这个地步了吧!

4、fseek

SEEK_SET: 文件开头
  SEEK_CUR: 当前位置
  SEEK_END: 文件结尾
  其中SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2.
  简言之:
  fseek(fp,100L,0);把fp指针前移到离文件开头100字节处;
  fseek(fp,100L,1);把fp指针前移到离文件当前位置100字节处;
  fseek(fp,-100L,2);把fp指针后退到离文件结尾100字节处。

《C语言程序设计(第四版)》阅读心得(四 文件操作)的更多相关文章

  1. python(第四版阅读心得)(系统工具)(一)

    本章将会讲解python常用系统工具的介绍 python中大多数系统级接口都集中在两个模块: sys 和 os 但仍有部分其他标准模块也属于这个领域 如: 常见: glob   用于文件名扩展 soc ...

  2. C语言的f(open)函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:     FILE * fopen(const char * path, ...

  3. <C++Primer>第四版 阅读笔记 第一部分 “基本语言”

    之前阅读时没有及时总结,现在慢慢补上. 第1章 快速入门 main 函数在很多方面都比较特别,其中最重要的是每个C++程序必须含有 main 函数,且 main 函数是(唯一)被操作系统显示调用的函数 ...

  4. C语言程序设计·谭浩强(第四版)第二章课后习题的答案,算法——程序的灵魂

    C语言程序小练习 1.用C语言设计程序算出1-1/2+1/3-14+1/5...+1/99-1/100的值 #include<stdio.h> int main() { ; double ...

  5. C语言程序设计:现代方法阅读笔记

    第二十六章 atexit函数允许用户“注册”在程序终止时要调用的函数:atexit(func); 在程序终止后,func函数会被自动调用 clock()函数可以计算程序运行时间 time函数返回当前的 ...

  6. C++ Primer 第四版阅读笔记

    阅读笔记 初始化 变量定义指定了变量的类型和标识符,也可以为对象提供初始值.定义时指定了初始值的对象被称为是 已初始化的.C++ 支持两种初始化变量的形式:复制初始化和 直接初始化.复制初始化语法用等 ...

  7. <C++Primer>第四版 阅读笔记 第三部分 “类和数据抽象”

    类定义了数据成员和函数成员:数据成员用于存储与该类类型的对象相关联的状态:而函数成员则负责执行赋予数据意义的操作. 第12章 类 一个类可以包含若干公有的.私有的和受保护的部分:在public部分定义 ...

  8. 《Android深度探索HAL与驱动开发》第四章阅读心得

     Android源代码包含了很多内容,可以实现拍照.计算机.日历.相册.拨号器等功能.配置Android源代码下载环境需要如下几步: (1)创建一个用于存放下载脚本文件的目录:  (2)下载repo脚 ...

  9. 鸟哥的LINUX私房菜基础篇第三版 阅读笔记 四 档案的文件系统的压缩和打包

    1.压缩文件案的用途与技术     a.用途,简单来说,就是节约磁盘空间.如果从传输角度讲,占用宽带也会小很多(Apache就有自动压缩的功能,节省宽带资源,提升网站的输出能力)     b.压缩技术 ...

  10. <C++Primer>第四版 阅读笔记 第四部分 “面向对象编程与泛型编程”

    继承和动态绑定与数据抽象一起成为面向对象编程的基础. 模板使我们能够编写独立于具体类型的泛型类和泛型函数. 第15章 面向对象编程 面向对象编程基于三个基本概念:数据抽象.继承和动态绑定.在C++中, ...

随机推荐

  1. bzoj 1858: [Scoi2010]序列操作 || 洛谷 P2572

    记一下:线段树占空间是$2^{ceil(log2(n))+1}$ 这个就是一个线段树区间操作题,各种标记的设置.转移都很明确,只要熟悉这类题应该说是没有什么难度的. 由于对某区间set之后该区间原先待 ...

  2. 题解报告:hdu 1421 搬寝室(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1421 Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9 ...

  3. SpringCloud开发学习总结(五)—— 服务容错保护Hystrix

    在微服务架构中,我们将系统拆分成了很多服务单元,各单元的应用间通过服务注册与订阅的方式相互依赖.但由于每个单元都在不同的进程中运行,一来通过远程调用的方式执行,这样就有可能因为网络原因或是依赖服务自身 ...

  4. Vmware workstation12里如何正确快速安装可视化IDS系统Security Onion(图文详解)

    不多说,直接上干货! 首先,大家要明确: 问:安全洋葱能阻止入侵吗? 答:这一点,和OSSIM一样,不能阻止入侵. Security Onion基于Ubuntu,包含了入侵检测.网络安全监控.日志管理 ...

  5. AJPFX简述java语言现状和发展

    作为一种最流行的网络编程语言之一,java语言在当今信息化社会中发挥了 重要的作用.Java语言具有面向对象.跨平台.安全性.多线程等特点,这使得java成为许多应用系统的理想开发语言.java应用在 ...

  6. Asp.Net中调用存储过程并返回输出参数

    /// <summary> /// 调用存储过程返回参数 /// </summary> /// <param name="orderId">&l ...

  7. SOA测试之浏览器插件

    1. Chrome HTTP Rest Client 插件: 1.1 Postman: https://chrome.google.com/webstore/detail/postman-rest-c ...

  8. 用yunio网盘搭建git私有仓库

      研究生开始奔波于教研室和寝室之间,于是想搭建一个git私有仓库来管理自己在做的项目或者学习资料.一来可以很方便的管理项目,二来可以学习使用git.我的主要工作平台是Linux,这也是我选择yuni ...

  9. php中字符与字节的区别

    字符: 字符是可使用多种不同字符方案或代码页来表示的抽象实体.例如,Unicode UTF-16 编码将字符表示为 16 位整数序列,而 Unicode UTF-8 编码则将相同的字符表示为 8 位字 ...

  10. 使用Jenkins进行android项目的自动构建(1)

    环境搭建 1. 下载JDK,安装,并将JDK的安装目录加入到环境变量JAVA_HOME,将JDK的bin目录加入到环境变量PATH. 2. 下载Android SDK,解压,并将SDK的安装目录加入到 ...