linux 操作常用函数,方法.doc

上传人:s9****2 文档编号:557244236 上传时间:2023-03-10 格式:DOC 页数:23 大小:78.50KB
返回 下载 相关 举报
linux 操作常用函数,方法.doc_第1页
第1页 / 共23页
linux 操作常用函数,方法.doc_第2页
第2页 / 共23页
linux 操作常用函数,方法.doc_第3页
第3页 / 共23页
linux 操作常用函数,方法.doc_第4页
第4页 / 共23页
linux 操作常用函数,方法.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《linux 操作常用函数,方法.doc》由会员分享,可在线阅读,更多相关《linux 操作常用函数,方法.doc(23页珍藏版)》请在金锄头文库上搜索。

1、linux 文件操作常用函数,方法在标准库中,结构FILE是指向文件的指针,所有对文件的操作都是通过FILE完成的,FILE指针也称为文件流,它定义在头文件,相对于整形的低级文件I/O描述符,它提供了I/O缓冲功能。1,创建、打开、关闭与删除文件的函数族#includeFILE *fopen(const char *filename,const char *type);FILE *freopen(const char *filename,const char *type,FIlE *strem);int fclose(FILE * stream);int remove(const char *

2、filename);int rename(const char *oldname,const char *newname);/*filename 打开文件的名称(带路径)*/*Type 打开文件的方式,由权限和类型两部分组成,前者可以是r、w、a、r+、w+、a+,后者默认表示文本文件、使用b表示二进制文件*/*stream 已经打开的文件指针*/函数fopen打开或创建文件;fclose关闭文件;函数freopen重新打开文件;函数remove删除磁盘文件;函数rename更改文件名称。ex1:以只读方式打开文本文件/etc/passwd: FILE *fp; fp=fopen(/etc/p

3、asswd,r);ex2:以二进制方式创建文件rr.txt: FILE *fp; fp=fopen(rr.txt,wb);(只读打开r,只写打开w,追加a,增强功能读写打开+)2)freopen函数 本函数实现文件流的替换。它首先关闭原文件流stream,然后再以freopen的方式打开一个新的文件流,此后对原文件流的任意操作都自动转换为对新文件流的操作。成功时返回指向新文件的FILE型指针,否则返回NULL。 Unix进程默认打开三个文件:标准输出、标准输入、标准错误输出,它们的FILE标识符号分别是stdout、stdin、stderr。函数freopen常用于将以上三个文件流重定向,实现

4、方法如下:/*-open.c-*/#includevoid main() FILE *fp; char *szBuf100; /*将屏幕标准输出的内容重定向到文件/tmp/1 */ if(fp=freopen(/tmp/1,w,stderr)=NULL) printf(stderr-/tmp/1 failed./n); return ; /*stderr已经输出重定向,所有错误输出内容都将写到/tmp/1*/ fputs(T Like Unix./n,stderr); /*关闭文件*/ fclose(fp); /*将标准输入由键盘输入更改为从文件/tmp/1中读入*/ if(fp=freope

5、n(/tmp/1,r,stdin)=NULL) printf(stdin -/tmp/1 failed./n); return ; memset(szBuf,0,sizeof(szBuf); /*stdin 已经输入重定向,所有内容都将写入文件/tmp/1*/ fgets(szBuf,sizeof(szBuf),stdin); printf(szBuf=%s,szBuf); fclose(fp); 编译与运行:gcc -o open.c open./openszBuf = I Like UNIX.3)fclose函数 为了减少系统资源消耗、避免误改文件内容和更新文件缓冲,应该及时关闭在将来一段

6、时间内不需要使用的文件。函数fclose关闭文件流stream,成功时返回0,否则返回EOF;4)remove 函数remove删除字符串filename指定的文件或目录,当filename指定文件时,remove相当于unlinke函数,当filename指定目录时,相当于rmdir; 文件的无格式读写1)字符读写 字符读写函数每次只操作一个字符,为了提高磁盘读写效率,标准文件编程中提供了缓冲处理。 (1)字符输入函数#includeint getc(FILE *stream);int getchar(void);int fgetc(FILE *stream); 函数getc以unsigne

7、d char类型读取文件输入流stream中的一个字符,并将该无符号字符转化为整数返回,同时移动文件指针到下一个字符处。函数getchar实际上是关于getc的一个宏定义getc(stdin). 函数fgetc的功能类似于getc,不同的是,它的执行速度远低于getc,因此getc常常被定义在宏中使用。 当文件结束或错误时,这三个函数都将返回EOF,EOF为常数。特别注意,他们的返回值都是整形。 EOF一般都是定义为int型-1,在某些UNIX中,将EOF强行转换为字符型后的数值不再与原值相等,从而程序不能正确执行。 因此错误的文件结束判断代码如下:char c;/*-char c是错误的-*

8、/.c=getc(FILENAME);if(c=EOF). 而正确的文件结束判断代码是:int c;/*-char c是错误的-*/.c=getc(FILENAME);if(c=EOF). (2)字符输出函数族#includeint putc(int c,FILE *stream);int putchar(int c);int fputc(int c,FILE *stream); 函数putc首先先将int型参数c自动转换为unsigned char类型,然后写入文件流stream中,同时移动文件指针到下一个字符处。函数putchar 实际上是关于putc的宏定义putc(stdout)。 (

9、3)实例 报文解析是Unix应用的一个重要内容。双方把约定的几个域通过某种排序和分割方式组合在一起,就成了报文。报文解析就是从报文中分解出各个域的数据,比如从银行的代收代付报文查找出账号域和资金域的内容。 字符串报文是报文的重要分支,它以字符串为载体记录了域的数据。在字符串报文中,域与域之间最常见的2中分隔方式是固定长度分割和特殊字符(串)分割。前 者每个域占用固定宽度,解析时只是读取特定位置的数据即可。后者的域与域之间由固定的字符(串)连接,解析时需要计算固定字符(串)出现的次数,以决定域 的序号和内容。Unix中passwd文件就是由:分割的字符串报文组合而成的。 例子:一个使用字符读写函

10、数解析报文的,程序读取文件的/etc/passwd中每一个字符,并将用户名称域(报文的第一个域)单独提出,存入文件copyname.txt中,源程序如下:#includevoid main() FILE *fpr,*fpw; int c=0,f=0; /*以下打开源文件*/ if(fpr=fopen(/etc/passwd,r)=NULL) printf(open file /etc/passwd failed./n); return ; /*以下打开目标文件*/ if(fpw=fopen(./copyname.txt,w)=NULL) printf(open file ./copyname.

11、txt failed./n); fclose(fpr);/*如果程序需要同时打开两个或两个以上文件,当后一个文件的打开操作发生错误,而不得不退出函数时,务必关闭前面已经打开的文件。*/ return ; while(c=getc(fpr)!=EOF) /*字符已经读取到了c中*/ if(f=0) if(c!=:) putchar(putc(c,fpw); else f=1; else if(c=/n) f=0; putchar(getc(c,fpw); fclose(fpr); fclose(fpw);2)按行读写 标准函数编程库提供了行读写函数,该类函数读取一行以换行符/n结束的数据,写入数

12、据时自动输出换行符。 (1)行输入函数族#includechar *gets(char *s);char *fgets(char *s,int n,FILE *stream); 函数gets从标准输入流(stdin)中读取一串字符存储到参数s所指向的内存空间中,文件结束或者错误发生时返回NULL,否则将返回参数s所指向的内存地址。 函数fgets中键入了防溢出控制,它从文件流stream中读取一串字符到参数s所指向的内存空间,但读取数据的长度(包括换行符/n)不能超过 n-1,。参数n代表了字符串s的最大存储空间。倘若待读入的实际数据长度包括(/n)超过了n-1,函数将截取该n个字符返回,剩余

13、的字符将在下一 次fgets调用时读入。 两个函数都把读取的字符信息存入字符串s中,并且自动增加字符串结束符0,这也是fgets一次性最多只能读入n-1个字符的原因(第n个字符需要存储结束符0)。函数调用成功时返回参数s的值,即指向输入的字符信息,否则返回空指针NULL。/*不利用fgets函数的返回值*/char s1024;.fgets(s,sizeof(s),STREAM);puts(s);. /*利用fgets函数的返回值*/char s1024;.puts(fgets(s,sizof(s),STREAM);.(2)行输出函数 标准文件编程库中用于文件行输出的函数如下:#includeint puts(const char *s);int fputs(const char *s,FILE *steam);参数s指向一串以字符串结束符0结尾的字符;函数puts把该字符串(不包括结束符0)写入到标准输出流stdout中,并自动输出换行符/n;函数fputs字符串s(不包括结束符0)写入文件流stream中,但不再输出换行符/n。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号