1 / 23

文件应用

第十八章. 文件应用. 回顾. 流和文件 文本流和二进制流 文本文件和二进制文件的打开和关闭 字符的读写 字符串的读写 二进制数据的读写 测试函数. 目标. 解释文件指针 讨论当前活动指针 解释文件级操作函数 盘符操作 目录操作. 当前活动指针. FILE 结构提供了一个指针,用以跟踪发生 I/O 操作的位置 每当从流中读取或写入一个字符,当前活动指针(即 curp )就会向前移动 当前活动指针的当前位置可以借助 ftell() 函数来获得,函数原型:. long int ftell(FILE *fp);. 文件指针.

steve
Download Presentation

文件应用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第十八章 文件应用

  2. 回顾 • 流和文件 • 文本流和二进制流 • 文本文件和二进制文件的打开和关闭 • 字符的读写 • 字符串的读写 • 二进制数据的读写 • 测试函数

  3. 目标 • 解释文件指针 • 讨论当前活动指针 • 解释文件级操作函数 • 盘符操作 • 目录操作

  4. 当前活动指针 • FILE 结构提供了一个指针,用以跟踪发生 I/O 操作的位置 • 每当从流中读取或写入一个字符,当前活动指针(即 curp)就会向前移动 • 当前活动指针的当前位置可以借助 ftell() 函数来获得,函数原型: long int ftell(FILE *fp); 文件指针 • 返回值:成功时返回文件指针位置,否则返回-1L

  5. rewind()函数 • 功能说明:将文件位置指示器置于文件开头相当于reset(重置)文件指针 • 函数原型: void rewind(FILE * fp) ; 需重定位的文件指针 • 返回值:无

  6. 设置当前位置2-1 • 功能说明:通过指定相对于开始位置、当前位置或流的末尾位置的字节数来重定位 curp,这取决于 fseek() 函数中指定的位置 • 函数原型: int fseek (FILE *fp, long int offset, int origin); 需设置的文件指针 偏移量 搜索的起始位置 • 返回值:无

  7. 设置当前位置2-2 • origin 表示搜索的起始位置,有以下几个值: • #define SEEK_CUR 1 • #define SEEK_END 2 • #define SEEK_SET 0

  8. #include <stdio.h> int main(){ long filesize=0; FILE *fpIn = NULL; FILE *fpOut = NULL; fpIn = fopen( "L19.exe","rb" ); if (fpIn == NULL){ puts("File Open Fail!"); return 0; } fseek(fpIn,0,2); filesize=ftell(fpIn); printf("file size : %ld",filesize); rewind(fpIn); fclose(fpIn); return 0; } /*对该段代码进行扩展,实现文件切割*/ 求文件大小示例

  9. 判断文件是否存在 • 功能说明:确定文件的访问权限 • 函数原型: int access(const char *filename,int amode); 需重判断的文件名 amode为0时,判断文件是否存在,为2时测试文件是否可写 • 头文件:io.h • 返回值:测试文件存在时,文件存在返回0,否则返回-1;测试文件是否可写时,可写返回0,否则返回-1

  10. 删除文件 • 功能说明:该函数用于删除指定文件,实际调用的是unlink函数 • 函数原型: int remove(const char *filename); 需重删除的文件名 • 返回值:成功删除返回0,否则返回-1

  11. 重命名文件 • 功能说明:为文件进行重新命名 • 函数原型: int rename(const char *oldname,const char *newname); 原文件名 新文件名 • 参数:两个参数都是字符串(可以包含路径,可以是绝对路径或者是相对路径)。 • 返回值:重命名成功返回0,否则返回-1

  12. 文件操作示例 #include <stdio.h> #include <io.h> int main(){ if (access("temp.txt",0) == 0){ int result = rename("temp.txt","abc.txt"); if (result == 0){ puts("File Rename Success!"); } } else{ puts("File Not Exists!"); } return 0; }

  13. 清除流 • 功能说明:fflush() 函数根据文件类型清除缓冲区 • 如果打开文件进行读操作,该函数将清空文件的输入缓冲区;而打开文件进行写操作时;该函数将文件的输出缓冲区写入文件中 • fflush() 函数的参数为空值,则清除所有被打开用于输出的文件 • 函数原型: int fflush(FILE *fp); 需清除的文件指针 • 返回值:成功时返回0,否则一旦出错返回EOF

  14. 标准流 • 每当 C 程序在 DOS 下开始执行时,操作系统将自动打开 5 个专门的流 • 标准输入流 (stdin) • 标准输出流 (stdout) • 标准错误流 (stderr) • 标准打印流 (stdprn) • 标准辅助流 (stdaux)

  15. 盘符和目录操作 • ANSI标准中没有定义盘符与目录操作函数,必顺通过开发商提供的库函数或当前系统API函数来操作盘符与目录 • VC6.0中定义了一套对盘符与目录操作函数,放在direct.h里 • 也可以利用system()函数,参数跟上DOS的命令

  16. _getdrive()函数 • 功能说明:获取当前的盘符编号(1为A盘,2为B盘,以此类推) • 函数原型: int _getdrive( void ); • 参数:无 • 返回值:返回当前盘符编号

  17. _chdrive()函数 • 功能说明:改变当前工作盘符 • 函数原型: int _chdrive( int drive ); 新的盘符编号 • 返回值:改变成功返回0,失败返回-1

  18. 列举所有盘符示例 #include <stdio.h> #include <direct.h> int main( void ){ int drive, curdrive; curdrive = _getdrive(); /* 先将原来工作盘符保存*/ printf( "Available drives are:\n" ); for( drive = 1; drive <= 26; drive++ ) { /* 如果盘符存在,则可改变当前的工作盘符*/ if( !_chdrive( drive ) ) printf( "%c:\n", drive + 'A' - 1 ); } _chdrive( curdrive ); /* 恢复原来的工作盘符*/ }

  19. _mkdir()函数 • 功能说明:创建一个新的目录 • 函数原型: int _mkdir( const char *dirname ); 新的目录名 • 参数:新的目录名可以是绝对路径也可以是相对路径 • 返回值:创建成功返回0,失败返回-1

  20. _rmdir()函数 • 功能说明:删除指定的空目录(不能将一个非空目录删除) • 函数原型: int _rmdir( const char *dirname ); 要删除的目录名 • 返回值:删除成功返回0,失败返回-1

  21. _chdir()函数 • 功能说明:改变当前的工作目录 • 函数原型: int _chdir( const char *dirname ); 新的工作目录名 • 返回值:改变成功返回0,失败返回-1

  22. _getdcwd()函数 • 功能说明:获取指定盘符的当前工作目录 • 函数原型: char *_getdcwd( int drive, char *buffer, int maxlen ); 盘符编号 接收当前工作目录名的缓冲区 最大的路径名长度通常取_MAX_PATH • 返回值:成功时返回缓冲区首地址,失败返回NULL值

  23. 总结 • 文件指针 • 当前活动指针 • 文件级操作函数 • 盘符操作 • 目录操作

More Related