C语言 文件操作解析详解及实例代码
C语言文件操作解析
在文件操作中除了打开操作以及读写操作,还有几种比较常见的操作。下面介绍一下这些操作中涉及到的函数。
一.移动位置指针的函数
rewind函数和fseek函数,这两个函数的原型是:
void rewind(FILE *fp); 将位置指针移动到文件首
int fseek(FILE *fp,long int offset,int origin); 将位置指针移动到距离origin的offset字节数的位置
其中对于fseek函数中的参数,origin为起始点,offset为距离origin的偏移字节数
origin的值有三个:SEEK_SET(0)—>文件首,SEEK_CUR(1)—>当前位置,SEEK_END(2)—>文件尾。
注意:1)若文件是以追加方式打开,则当进行写操作时,这两个函数是不起作用的,无论将位置指针移动哪个位置,始终将添加的数据追加到文件末尾。
二.其他常用函数
1.ftell函数
long int ftell(FILE *fp);
计算当前位置指针距文件首的字节数,若出错,则返回-1L。
利用ftell函数可以计算出文件的大小。
2.feof函数
int feof(FILE *fp);
检测当前位置指针是否到达文件末尾,若到达文件末尾,则返回一个非零值,否则返回0。
3.ferror函数
int ferror(FILE *fp);
检测文件操作过程中是否出错,若出错,则返回一个非零值,否则返回0
4.remove函数
int remove(const char *filename);
删除文件,若删除成功,则返回0,否则返回非零值
5.rename函数
int rename(const char *oldname,const char *newname);
将文件重命名,重命名成功则返回0,否则返回非零值。
6.freopen函数
FILE* freopen(const char *filename,const char *mode,FILE *stream);
实现重定向输入输出。此函数在测试数据时用得比较多。
7.fclose函数
int fclose(FILE *stream);
关闭一个流,若成功,则返回0,否则返回-1.注意每次对文件操作完之后需关闭流,否则可能会造成数据丢失。
测试程序:
#include<stdio.h> #include<stdlib.h> int main(void) { freopen("input.txt","r",stdin); freopen("output.txt","w+",stdout); int i; int a[10]; for(i=0;i<10;i++) { scanf("%d",&a[i]); } for(i=0;i<10;i++) { printf("%d\n",a[i]); } return 0; }
假设工程目录下已经存在input.txt,文件中的数据为1 2 -1 3 4 5 7 8 9 10,则运行之后,不需要从控制台输入数据,程序直接从input.txt中读取数据,然后将结果输出到output.txt中,不直接向控制台输出结果。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关推荐
-
C语言文件操作函数freopen详细解析
今天做USACO 用到了文件的操作. 之前做USACO只是格式化的些 写 freopen("xxx.in","r",stdin) 和"freopen("xxx.out","w",stdout)" 百度百科上是这么介绍的: 函数名: freopen 功 能: 替换一个流,或者说重新分配文件指针,实现重定向.如果stream流已经打开,则先关闭该流.如果该流已经定向,则freopen将会清除该定向.此函数
-
c语言程序设计文件操作方法示例(CreateFile和fopen)
实例: (1)第一种方法CreateFile 复制代码 代码如下: #include "stdafx.h"#include <windows.h>void main(int argc, char* argv[]){ HANDLE hDevice = CreateFile("C://S.txt", GENERIC_READ|GENERIC_WRITE, 0, NULL,
-
C语言文件操作函数大全(超详细)
fopen(打开文件)相关函数 open,fclose表头文件 #include<stdio.h>定义函数 FILE * fopen(const char * path,const char * mode);函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态.mode有下列几种形态字符串:r 打开只读文件,该文件必须存在.r+ 打开可读写的文件,该文件必须存在.w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失.若文件不存在则建立该文件.w
-
c语言文件读写示例(c语言文件操作)
方法: 复制代码 代码如下: long filesize(char* filename);char* file_get_contents(char* filename);void file_put_contents(char* filename, char* data); 示例: 复制代码 代码如下: #include <stdio.h>#include <stdlib.h>#include <string.h>long filesize(char* filename)
-
C语言文件操作 fopen, fclose, mkdir详解
1.建文件夹 int _mkdir(const char *path,mode_t mode); 函数名: _mkdir 功 能: 建立一个目录 用 法: int _mkdir( const char *dirname ); 头文件库:direct.h 返回值:创建一个目录,若成功则返回0,否则返回-1 ===================================================== 2.打开文件fopen() 函数功能: 打开一个文件 函数原型:FILE * fope
-
C语言文件操作中 fgets与fputs 函数详解
C语言文件操作中 fgets.fputs 函数详解 先给出api fgets 语法: #include <stdio.h> char *fgets( char *str, int num, FILE *stream ); 函数fgets()从给出的文件流中读取[num - 1]个字符并且把它们转储到str(字符串)中. fgets()在到达行末时停止,在这种情况下,str(字符串)将会被一个新行符结束. 如果fgets()达到[num - 1]个字符或者遇到EOF, str(字符串)将会以nu
-
C语言 文件操作解析详解及实例代码
C语言文件操作解析 在文件操作中除了打开操作以及读写操作,还有几种比较常见的操作.下面介绍一下这些操作中涉及到的函数. 一.移动位置指针的函数 rewind函数和fseek函数,这两个函数的原型是: void rewind(FILE *fp); 将位置指针移动到文件首 int fseek(FILE *fp,long int offset,int origin); 将位置指针移动到距离origin的offset字节数的位置 其中对于fseek函数中的参数,origin为起始点,offs
-
Python 文件操作的详解及实例
Python 文件操作的详解及实例 一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧明. 白首为功名,旧山松竹老,阻归程. 欲将心事付瑶琴. 知音少,弦断有谁听. f = open('小重山') #打开文件 data=f.read()#获取文件内容 f.close() #关闭文件 注意:if in the win,hello文件是utf8保存的,打
-
C++语言实现hash表详解及实例代码
C++语言实现hash表详解 概要: hash表,有时候也被称为散列表.个人认为,hash表是介于链表和二叉树之间的一种中间结构.链表使用十分方便,但是数据查找十分麻烦:二叉树中的数据严格有序,但是这是以多一个指针作为代价的结果.hash表既满足了数据的查找方便,同时不占用太多的内容空间,使用也十分方便. 打个比方来说,所有的数据就好像许许多多的书本.如果这些书本是一本一本堆起来的,就好像链表或者线性表一样,整个数据会显得非常的无序和凌乱,在你找到自己需要的书之前,你要经历许多的查询过程:而如果
-
Java大文件上传详解及实例代码
Java大文件上传详解 前言: 上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败. 一开始以为是session过期或者文件大小受系统限制,导致的错误.查看了系统的配置文件没有看到文件大小限制,web.xml中seesiontimeout是30,我把它改成了120.但还是不行,有时候10分钟就崩了. 同事说,可能是客户这里服务器网络波动导致网络连接断开,我觉得有点道理.但是我在本地测试的时候发觉上传也失败,网络原因排除. 看了日志,错误为: java.lang.OutOfMemor
-
Android json数据解析详解及实例代码
Android json数据解析详解 移动开发经常要与服务器数据交互,也常使用json数据格式,那就说说Android json解析. 1.最简单json格式解析如下: //解析json ry { JSONTokener jsonParser = new JSONTokener(strResult); JSONObject jsonObj = (JSONObject) jsonParser.nextValue(); String strsportsTitle = jsonObj.getStri
-
C语言 奇偶排序算法详解及实例代码
C语言奇偶排序算法 奇偶排序,或奇偶换位排序,或砖排序,是一种相对简单的排序算法,最初发明用于有本地互连的并行计算.这是与冒泡排序特点类似的一种比较排序.该算法中,通过比较数组中相邻的(奇-偶)位置数字对,如果该奇偶对是错误的顺序(第一个大于第二个),则交换.下一步重复该操作,但针对所有的(偶-奇)位置数字对.如此交替进行下去. 使用奇偶排序法对一列随机数字进行排序的过程 处理器数组的排序 在并行计算排序中,每个处理器对应处理一个值,并仅有与左右邻居的本地互连.所有处理器可同时与邻居进行比较.交
-
C语言之单向链表详解及实例代码
1,单向链简洁. 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始:链表是使用指针进行构造的列表:又称为结点列表,因为链表是由一个个结点组装起来的:其中每个结点都有指针成员变量指列表中的下一个结点:列表是由结点构成,由head指针指向第一个成为表头的结点而终止于最后一个指向nuLL的指针: 2,例子要求: 根据示例代码中的例子,完成单向链表(single linked list)中的以字符串为数据的链表的插入.删除以及查找,并支持单向链表的反转
-
Json 生成与解析详解及实例代码
Json 生成与解析 JSON常用与服务器进行数据交互,JSON中"{}"表示JSONObject,"[]"表示JSONArray 如下json数据: 1 {"singers":[ 2 {"id":"02","name":"tom","gender":"男","tel":["123456"
-
C++中文件操作基础详解
目录 文件操作 文件分类 文本文件 写文件 读文件 二进制文件 写文件 读文件 文件操作 意义:利用文件操作可以保存我们程序运行的信息,是持久化技术的体现 文件分类 按文件类型分为: 1.文本文件 - 文件以文本的ASCII码形式存储在计算机中 2.二进制文件 - 文件以文本的二进制形式存储在计算机中 按类分为: ofstream类:写操作 ifstream类: 读操作 fstream类: 读写操作 文本文件 写文件 五个步骤: 1.引入头文件 #include <fstream> 2
-
Python 操作MySQL详解及实例
Python 操作MySQL详解及实例 使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy. Python-MySQL资格最老,核心由C语言打造,接口精炼,性能最棒,缺点是环境依赖较多,安装复杂,近两年已停止更新,只支持Python2,不支持Python3. PyMySQL为替代Python-MySQL而生,纯python打造,接口与Python-MySQL兼容,安装方便,支持Python3. SQLA
随机推荐
- 各种编程语言中$符号的意义
- Python help()函数用法详解
- ORACLE学习笔记-新建用户及建表篇
- Android Framework Application Framework层简单介绍
- java线程并发cyclicbarrier类使用示例
- java 创建自定义数组
- 一步步打造简单的MVC电商网站BooksStore(3)
- 详解struts2的token机制和cookie来防止表单重复提交
- jQuery防止click双击多次提交及传递动态函数或多参数
- JQuery each()函数如何优化循环DOM结构的性能
- 关于rundl132.exe vidll.dll LOGO1.exe 的清除方法
- SpringMVC4+MyBatis+SQL Server2014实现数据库读写分离
- 有提示确定与取消功能的弹出式窗的代码
- javascript类型File的Input按钮功能研究
- JavaScript中的Math.sin()方法使用详解
- 关于 文本框默认值 的操作js代码
- Android实现顶部导航栏可点击可滑动效果(仿微信仿豆瓣网)
- 食物混吃可要注意,可能中毒呢
- 用软路由实现局域网与Internet连接
- Windows下mysql5.7.10安装配置方法图文教程