百度首页 | 百度空间
 
查看文章
 
《The C Programing Language》读书笔记——基本语法10
2008-05-09 14:04

第七章 输入和输出(二)
文件存取(
file access

一个程序除了可以从标准输入文件读取数据和向标准输出文件写入数据,或通过重定向实现文件读写外,还可以对那些没有和程序连接(
connect
)起来的文件进行读写。
打开文件:

FILE *fp;
FILE *fopen(char *filename, char *mode);
fp = fopen(name, mode);

在对一个文件读写前,必须先打开该文件,库函数fopen可以实现这一功能,它建立文件指针(file pointer)和文件名之间的连接,返回该文件指针。mode说明使用文件的方式,如r-读,w-写(原文件内容将被丢弃),a-添加(在原文件末尾追加),b-二进制方式。
当向一个不存在的文件中写入或追加数据时,该文件将被创建。
当试图读一个不存在的文件或没有足够权限时,将产生错误,
fopen
返回NULL
读写文件:

int getc(FILE *fp)
依次返回fp所指文件中的字符,文件结束或出错时返回EOF
int putc(int c, FILE *fp)
fp所指文件输入字符c,返回该字符,出错时返回EOF
标准输入,标准输出和标准错误文件的文件指针分别为
stdin
stdoutstderr,它们定义在stdio.h中。
对格式化输入或输出文件,可以使用:

int fscanf(FILE *fp, char *format, arg1, ...)
int fprintf(FILE *fp, char *format, arg1, ...)

关闭文件:
int fclose(FILE *fp)
fclose
断开文件指针和文件名之间的连接,释放文件指针(一些操作系统限定一个程序同时打开文件的数目,因此当文件指针不再使用时最好将其释放)。当关闭一个输出文件时,fclose将缓冲区中的内容写到该输出文件中。当程序结束时,将自动调用fclose,关闭每个被打开的文件。
错误处理

stderr:标准错误文件,默认将错误信息输出到标准输出。
exit():中止运行的程序,参数为0表示程序正常执行,非0表示出现异常。exit调用fclose关闭每个打开的输出文件,并将缓冲区输出。main函数中的return exp;语句与exit(exp)是等价的。
int ferror(FILE *fp)
fp所指数据流出现错误时,ferror返回一个非0值。
int feof(FILE *fp)
fp所指文件结束时,feof返回一个非0值。
整行输入输出:

char *fgets(char *line, int maxline, FILE *fp)
fp所指文件中读取一行(包括'\n'),保存在字符数组line中,最多读入maxline-1个字符,
并在结尾添加
'\0'
。通常fgets返回line,当读到文件结尾或产生错误时返回NULL
int fputs(char *line, FILE *fp)
将数组line写入fp所指文件,通常fputs返回非负值,当写到文件结尾或产生错误时返回EOF
库函数
gets
putsfgetsfputs类似,只是文件指针为stdinstdout,另外gets删除末尾的'\n'puts却添加'\n'
int ungetc(int c, FILE *fp)
将字符c放回fp所指文件中,返回c,错误时返回EOF

命令执行:
system(char *s)
执行s中包含的命令,然后恢复当前正在执行的程序。不同的操作系统包含不同的命令集,命令执行结束后返回一个整数状态,Unix中,返回状态为exit的返回值。
存储管理(storage management
申请存储空间:
void *malloc(size_t n)
返回一个指向n个字节的未初始化空间的指针,申请失败返回NULL
void *calloc(size_t n, size_t size)
返回一个指向有n个元素的数组的指针,每个元素大小为size,申请失败返回NULL,数组初始化为0
存储空间申请返回的指针必须被转换为合适的类型。
释放存储空间:
free(void *p)
释放指针p所指存储空间(存储空间是由malloccalloc申请的)。

类别:c/c++ | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu