库函数系统调用文件方式,王明学learn
库函数系统调用文件方式
基于C函数库的文件编程是独立于具体的操作系统平台的,不管是在Windows、Linux还是其他的操作系统中,都是使用这些函数。使用库函数进行程序设计可提高程序的可移植性。
对于标准的C函数库,它们的操作都是围绕流来进行的。流是一个抽象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。
在系统调用方式实现的文件访问中,使用文件描述符(一个整数)来指向一个文件。在库函数方式的文件访问中,使用FILE类型来表示一个打开的文件,这个类型中包含了管理文件流的信息。而指向该类型的指针FILE* 则被称之为文件指针。
一、函数学习
1.1打开文件fopen
1.1.1 函数原形
FILE *fopen(const char* path,const char* mode);
1.1.2 函数功能
打开文件
1.1.3 所属头文件
<stdio.h>
1.1.4 返回值
成功:返回文件指针
失败:NULL
1.1.5参数说明
path;指定打开的文件名称(包含路径)
mode:文件打开模式
1.2关闭文件fclose
1.2.1函数原形
int fclose(FILE* fp);
1.2.2 函数功能
关闭文件
1.2.3所属头文件
<stdio.h>
1.2.4返回值
成功:0
失败 EOF
1.2.5参数说明
fp:待关闭文件指针
1.3读文件fread
1.3.1函数原形
size_t fread(void* ptr,size_t size,size_t n,FILE* stream);
1.3.2函数功能
fread()实现从 stream 中读取 n 个字段,每个字段为 size 个字节,并将读取的字段放入 ptr 所指的字符数组中, 返回实际已读取的字段数。在读取的字段数小于 num 时,可能是在函数调用时出现错误,也可能是读到文件的结尾。
1.3.3所属头文件
<stdio.h>
1.3.4返回值
成功:返回成功读取的数据量 失败:0
1.3.5参数说明
stream:指向要读取的文件
ptr:指向读取到的 数据 要保存的位置
size:每块的数据大小
nmemb:读取的数据块数
1.4 写文件fwrite
1.4.1函数原形
size_t fwrite(const void* ptr,size_t size,size_t n,FILE* stream);
1.4.2函数功能
write()实现从缓冲区 ptr 所指的数组中把 n 个字段写到 stream 中,每个字段长为size 个字节,返回实际写入的字段数。
1.4.3所属头文件
<stdio.h>
1.4.4返回值
成功:成功写入数据量
失败:0
1.4.5参数说明
ptr:存放要写入的数据
size:每块的数据大小
nmemb:数据的块数
stream:要写入数据的文件指针
1.5定位文件fseek
1.5.1函数原形
int fseek(FILE* stream,long offset,int whence);
1.5.2函数功能
设置文件位置指针
1.5.3所属头文件
<stdio.h>
1.5.4返回值
成功:返回0
失败:-1
1.5.5参数说明
stream:移动的文件
offset:要移动的偏移量
whence:确定要移动的初始位置
实例:
#include <stdio.h>
#define LENGTH 100
main()
{
FILE *fd;
char str[LENGTH]; fd = fopen("hello.txt", "w+"); /* 创建并打开文件 */
if (fd)
{
fputs("Hello World", fd); /* 写入字符串 */
fclose(fd);
} fd = fopen("hello.txt", "r");
fgets(str, LENGTH, fd); /* 读取文件内容 */
printf("%s\n", str);
fclose(fd);
}
库函数系统调用文件方式,王明学learn的更多相关文章
- 系统调用方式文件编程,王明学learn
系统调用方式文件编程 一.文件描述符 在Linux系统中,所有打开的文件也对应一个数字,这个数字由系统来分配,我们称之为:文件描述符. 二.函数学习 2.1打开文件 open 2.1.2 函数原形 ...
- 静态/动态函数库设计,王明学learn
静态/动态函数库设计 Linux应用程序设计中需要的外部函数主要由函数库和系统调用来提供. 两者区别: 一.函数库分类 函数库按照链接方式可分为: 1.静态链接库 对函数库的链接是放在编译时期(com ...
- linux设备驱动概述,王明学learn
linux设备驱动学习-1 本章节主要学习有操作系统的设备驱动和无操作系统设备驱动的区别,以及对操作系统和设备驱动关系的认识. 一.设备驱动的作用 对设备驱动最通俗的解释就是“驱使硬件设备行动” .设 ...
- linux内核的组成,王明学learn
linux内核的组成 一.linux内核源代码目录结构 arch: 包含和硬件体系结构相关的代码, 每种平台占一个相应的目录, 如 i386.ARM.PowerPC.MIPS 等. block:块设备 ...
- 共享内存同行,王明学learn
共享内存同行 一.共享内存概念 共享内存是IPC机制中的一种,它允许两个不相关的进程访问同一段内存, 这是传递数据的一种非常有效的方式. 二.函数学习 这里主要有创建共享内存.映射共享内存.分离共享内 ...
- 信号量互斥,王明学learn
信号量互斥 信号量(又名:信号灯)与其他进程间通信方式不大相同,主要用途是保护临界资源(进程互斥).进程可以根据它判定是否能够访问某些共享资源.除了用于访问控制外,还可用于进程同步. 一.信号量分类 ...
- 信号通讯编程,王明学learn
信号通讯编程 在Linux系统中,信号(signal)同样也是最为古老的进程间通信机制. 一.信号类型 Linux系统支持的所有信号均定义在/usr/include/asm/signal.h(展示), ...
- 管道通信,王明学learn
管道通信 一.通讯目的 1.数据传输 一个进程需要将数据发送给另一个进程. 2.资源共享 多个进程之间共享同样的资源. 3.通知事件 一个进程需要向另一个/组进程发送消息,通知它们发生了某事件. 4. ...
- 时间编程,王明学learn
时间编程 一.时间类型 Coordinated Universal Time(UTC):世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT) Calend ...
随机推荐
- Unity3d UGUI序列帧动画
代码 using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine. ...
- ffmpeg-20160527-git-bin
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...
- [转]Handler MessageQueue Looper消息循环原理分析
Handler MessageQueue Looper消息循环原理分析 Handler概述 Handler在Android开发中非常重要,最常见的使用场景就是在子线程需要更新UI,用Handler ...
- Python: 安装BeautifulSoup4
python3.4.3 安装BeautifulSoup4: 使用pip install 安装: 在命令行cmd之后输入,pip install BeautifulSoup4 BeautifulSoup ...
- (转)JAVA AJAX教程第四章—AJAX和MVC的简单结合
这里我们再理解了AJAX后,开始来用实例感受AJAX的力量. 今天我最后要实现的效果,当鼠标放到图片上时会根据,会把数据库库里的数据读出,通过显示框显示出来.这个在很多网上商店都有用到这里效果,我们这 ...
- plsql客户端显示菜单等
不小心把plsql的左边的都关了,如图 菜单条---工具---浏览器. 即可.
- 【leetcode】Sort Colors(middle)☆
Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...
- 【DPM】Deformable Part Models matlab代码在windows下的调试过程
我下载的是voc-release5 1.按照这篇文章,都操作了一遍:http://blog.csdn.net/pozen/article/details/7023742#quote 2.运行demo不 ...
- 【sqlite】python备份数据库
备份整个数据库的方法: # coding=utf-8 import sqlite3 def testBakSqlite(): conn = sqlite3.connect("sqlite_d ...
- POJ 1681 Painter's Problem (高斯消元)
题目链接 题意:有一面墙每个格子有黄白两种颜色,刷墙每次刷一格会将上下左右中五个格子变色,求最少的刷方法使得所有的格子都变成yellow. 题解:通过打表我们可以得知4*4的一共有4个自由变元,那么我 ...