常用文件及内存操作函数

1._mkdir

int   _mkdir(const char *path,mode_t mode);
函数名: _mkdir   
功 能: 建立一个目录   
用 法: int _mkdir( const char *dirname );   
头文件库:direct.h   
返回值:创建一个目录,若成功则返回0,否则返回-1

2.fopen

函数功能: 打开一个文件   
函数原型:FILE * fopen(const char * path,const char * mode);
所需库: <stdio.h>
返回值: 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。   

一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。
if((fin = fopen("a.txt","r")) == NULL)
 printf("Open file error.\n");

参数说明:   
参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。   
mode有下列几种形态字符串:  (常用的就前几个,后面用到了再查,不用记) 
r 以只读方式打开文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)

rb 为输入打开一个二进制文件。
wb 只写打开或新建一个二进制文件;只允许写数据。
ab 向二进制文件尾添加数据

r+ 以可读写方式打开文件,该文件必须存在。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)

rb+ 读写打开一个二进制文件,只允许读数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。   

rt+ 读写打开一个文本文件,允许读和写。  
wt+ 读写打开或着建立一个文本文件;允许读写。   
at+ 读写打开一个文本文件,允许读或在文本末追加数据。   

3.fwrite

size_t  fwrite(const void* buffer, size_t  size, size_t  count, FILE* stream);
注意:这个函数以二进制形式对文件进行操作,不局限于文本文件
返回值:返回实际写入的 数据块数目
(1)buffer:是一个 指针,对fwrite来说,是要获取数据的地址;
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的 数据项的个数;
(4)stream:目标 文件指针
(5)返回实际写入的数据项个数count。
说明:写入到文件的哪里? 这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。
fseek对此函数有作用,但是fwrite函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。

4.fread

size_t fread ( void * buffer , size_t size , size_t count , FILE * stream ) ;
 
buffer
用于接收 数据内存地址,大小至少是 size* count字节.
size
单个元素的大小,单位是 字节
count
元素的个数,每个元素是size字节.
stream
输入流
返回:实际读取的元素个数.如果返回值与 count不相同,则可能文件结尾或发生错误.
从ferror和feof获取错误信息或检测是否到达文件结尾.

5.fseek

int fseek(FILE *stream, long offset, int fromwhere);
函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置: 文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset( 指针 偏移量)个字节的位置。如果执行失败( 比如offset超过文件自身大小),则不改变stream指向的位置。
fseek 函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型

6.ftell

函数 ftell 用于得到文件位置指针当前位置相对于文件首的偏移字节数

long ftell(FILE *stream)

如以下语句序列: fseek(fp, 0L,SEEK_END); len =ftell(fp); 首先将文件的当前位置移到文件的末尾,然后调用函数ftell()获得当前位置相对于文件首的位移,该位移值等于文件所含字节数。

7.memset

void *memset(void *s, int ch, size_t n);
函数解释:将s中前n个字节 (typedef unsigned int size_t)用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的 结构体数组进行清零操作的一种最快方法
memset(buffer,0,sizeof(char)*20)

8.rewind

void rewind(FILE *stream);

功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头

注意:不是 文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。而 文件指针是指向整个文件,如果不重新赋值文件指针不会改变。

9.fclose

功 能: 关闭一个流。注意:使用fclose()函数就可以把 缓冲区内最后剩余的 数据输出到磁盘文件中,并释放 文件指针和有关的缓冲区。

10.feof

检测流上的文件结束符
如果文件结束,则返回非0值,否则返回0,文件结束符只能被clearerr()清除。

11.printf

格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)

int printf ( const char *format,[argument]);

%[flags][width][.prec][F|N|h|l]type
 
12.sprintf
字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个 变参函数
int sprintf( char *buffer, const char *format, [ argument] … );
bufferchar型指针,指向将要写入的字符串的缓冲区。
format:格式化字符串。
[argument].. .:可选参数,可以是任何类型的数据。
返回值:字符串长度( strlen
 
char *buf[60];
char *who= "I" ;
char *whom= "CSDN" ;
sprintf (buf, "%slove%s." ,who,whom);
printf ( "%s" ,buf);
//输出结果:"IloveCSDN."
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值