总结文件操作函数(一)-C语言
在进程一開始执行,就自己主动打开了三个相应设备的文件。它们是标准输入、输出、错误流。分别用全局文件指针stdin、stdout、stderr表示,相应的文件描写叙述符为0。1。2;stdin具有可读属性,缺省情况下是指从键盘的读取输入,stdout和stderr具有可写属性,缺省情况下是指向屏幕输出数据。
将文件路径转化为文件指针:
#include <stdio.h> //头文件包括
FILE *fopen(const char *pach,const char *mode); //文件名称 模式
int fclose(FILE *stream);
fopen以mode的方式打开或创建文件,假设成功。将返回一个文件指针,失败则返回NULL.
fopen创建的文件的訪问权限将以0666与当前的umask结合来确定。
在Linux系统中,mode里面的’b’(二进制)能够去掉。可是为了保持与其它系统的兼容性。建议不要去掉。ab和a+b为追加模式,在此两种模式下,不管文件读写点定位到何处。在写数据时都将是在文件末尾加入,所以比較适合于多进程写同一个文件的情况下保证数据的完整性。一般使用r或者w模式。
将文件夹名转化为文件夹指针:
#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char *name); //打开一个文件夹,返回一个DIR类型的指针
struct dirent *readdir(DIR *dir); //读取文件夹的一项信息,并返回该项信息的结构体指针
void rewinddir(DIR *dir); //又一次定位到文件夹文件的头部
int closedir(DIR *dir); //关闭文件夹文件
读取文件夹信息的步骤为:
用opendir函数打开文件夹;
使用readdir函数迭代读取文件夹的内容,假设已经读取到文件夹末尾。又想又一次開始读,则能够使用rewinddir函数将文件指针又一次定位到文件夹文件的起始位置。
用closedir函数关闭文件夹
opendir()用来打开參数name指定的文件夹,并返回DIR*形态的文件夹流,和文件操作函数open()类似,接下来对文件夹的读取和搜索都要使用此返回值。函数失败则返回NULL;
在字符串读取和写入的时候以及格式化输入输出时经经常使用到文件指针:
Char buf[1024];
char *fgets(char *s, int size, FILE *stream);
int fputs(const char *s, FILE *stream);
fgets和fputs从文件流stream中读写一行数据;当文件指针为stdin/stdout分别表示从标准输入流和输出流 输入和输出。
此时类似于gets和puts函数
fgets能够指定目标缓冲区的大小,读取文件的时候size大于该行的字符总数加2(多出来的两个。一个保存文件本身的'\n'换行,一个保存字符串本身的结束标识'\0')。文件并不会继续读下去,只不过这一行读取完。随后指向文件的指针会自己主动偏移至下一行。
此时buf[strlen(buf)-1]里存放的是'\n'
用char*则要用malloc分配内存。
fputs不会在行尾自己主动加入换行符。可是puts会在标准输出流中自己主动加入一换行符。
对二进制形式的依照块来读写:
函数原型:
size_t fread(void *buffer,size_t size, size_t count, FILE *fp);
size_t fwrite(void *buffer,size_t size, size_t count, FILE *fp);
功能:读/写数据块fread与fwrite 一般用于二进制文件的输入/输出
fread:从fp所指向的文件里读取count个块,每一个块的长度为size个字节,存放到以buffer为首地址的内存中。当中buffer必须已经是由内存空间的。
fwrite:从以buffer为首地址的内存中读取count个块。每一个块的长度为size个字节,写入到fp所指向的文件里。
返回值:成功,返回读/写的块数;出错或文件尾。返回0
说明:
buffer: 指向要输入/输出数据块的首地址的指针
size: 读/写的数据块的大小(字节数)
count: 要读/写的数据块的个数
fp: 要读/写的文件指针
范例代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct STUDENT
{
char sNo[5];
char sName[20];
double score;
}STUDENT;
void main()
{ /* 操作一块 */
STUDENT stu[3] = {{"0001", "赵军", 89},{"0002", "李千", 90},{"0003", "张芳", 100}
};
STUDENT stu2;
FILE* fp = fopen("d:\\b.txt", "wb+");//写打开。转化为文件指针
if(NULL == fp)
{
printf("Can not open this file!\n");
exit(0);
}
fwrite(stu, sizeof(STUDENT), sizeof(stu)/sizeof(STUDENT), fp);
rewind(fp); /* 文件指针又一次回到头 */
fseek(fp, sizeof(STUDENT), SEEK_SET); /* 定位,此处跳过一条记录 */
fread(&stu2, sizeof(STUDENT), 1, fp); /* 从文件里读取指定大小的块 */
printf("%s-->%s-->%lf\n", stu2.sNo, stu2.sName, stu2.score);
fclose(fp);
}
总结文件操作函数(一)-C语言的更多相关文章
- C语言样式的文件操作函数
使用C语言样式的文件操作函数,需要包含stdio.h头文件. 1.打开文件的函数: //oflag的取值为“w”或“r”,分别表示以写或读的方式打开 FILE* fd = fopen(filename ...
- C语言文件操作函数
C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * str ...
- C语言文件操作函数大全(超详细)
C语言文件操作函数大全(超详细) 作者: 字体:[增加 减小] 类型:转载 本篇文章是对C语言中的文件操作函数进行了详细的总结分析,需要的朋友参考下 fopen(打开文件)相关函数 open,fc ...
- 总结文件操作函数-文件夹(三)-C语言
获取.改变当前文件夹: 原型为: #include <unistd.h> //头文件 char *getcwd(char *buf, size_t size); //获取当前文件夹.相 ...
- 总结文件操作函数(二)-C语言
格式化读写: #include <stdio.h> int printf(const char *format, ...); //相当于fprintf( ...
- 【阅读笔记】《C程序员 从校园到职场》第六章 常用文件操作函数 (Part 1)
参考链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/24926023 让你提前认识软件开发(18):C语言中常用的文件操作函数总结 ...
- Linux C 文件操作函数(~上善止水~)
翻翻笔记,整理一下 C 语言中的文件操作函数 ~~~~~~,多注意细节,maybe 细节决定成败~ 1. fopen /* fopen(打开文件) * * 相关函数 open,fclose * * 表 ...
- 文件操作(FILE)与常用文件操作函数
文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...
- Delphi文件操作函数
文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道.文件的本质是一个数据流,所有的文件实际上是一串二进制序列.文件管理包括:1.文件操作.2.目录操作.3.驱动器操作.三部分. 1.常见文 ...
随机推荐
- 【OpenJudge9270】【Pku2440】【递推】DNA
DNA [描述] A kind of virus has attacked the X planet, and many lives are infected. After weeks of stud ...
- 2014DNIOS视频教程(5-9)
2014DNIOS视频教程(5-9) 联系2g32@sina.com
- Multivariate Adaptive Regression Splines (MARSplines)
Introductory Overview Regression Problems Multivariate Adaptive Regression Splines Model Selection a ...
- Java RSA加密算法生成公钥和私钥
原文:http://jingyan.baidu.com/article/6dad5075f33466a123e36ecb.html?qq-pf-to=pcqq.c2c 目前为止,RSA是应用最多的公钥 ...
- TQuery
TQuery uses syndb 查询 function Tfmain.query(const sql: string): RawUTF8;var q: TQuery;begin q := TQue ...
- 调用wsdl的接口-用axis
// 创建一个服务(service)调用(call) org.apache.axis.client.Service service = new org.apache.axis.client.Servi ...
- jquery动态添加表单数据
动态添加用户 实现代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html ...
- Nginx" upstream prematurely closed connection while reading response header from upstream"问题排查
问题背景 我们这边是一个基于Nginx的API网关(以下标记为A),最近两天有调用方反馈,偶尔会出现502错误,我们从Nginx的error日志里看,就会发现有" upstream prem ...
- asp.net membership 修改密码
aspnet_Applications 存储数据库所涉及应用程序有关信息. aspnet_Membership 存储与用户相关信息例如:用户登陆密码,创建时间. aspnet_Paths 存储应用程序 ...
- codeforces#277.5 C. Given Length and Sum of Digits
C. Given Length and Sum of Digits... time limit per test 1 second memory limit per test 256 megabyte ...