| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 2021-08-24 自学C语言《跨平台的C语言程序设计》(上海工程技术大学SUES校本) 第十二章 文件 总结+课后练习 -> 正文阅读 |
|
[C++知识库]2021-08-24 自学C语言《跨平台的C语言程序设计》(上海工程技术大学SUES校本) 第十二章 文件 总结+课后练习 |
头文件解释 stdlib?头文件即standard library标准库头文件。stdlib.h里面定义了五种类型、一些宏和通用工具函数。standard library标准库头文件的类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t;?宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等;?常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。 具体的内容可以打开编译器的include目录里面的stdlib.h头文件查看。 Cannot open file strike any key exit!翻译:不能打开文件任何窗口。 Return和exit(0),exit(1)的区别 exit(0):正常运行程序并退出程序; exit(1):非正常运行导致退出程序; return():返回函数,若在主函数中,则会退出函数并返回一值。 详细说: ??1. return返回函数值,是关键字;? exit 是一个函数。 ? 2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。 ? 4. return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。 ? 5. return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用;exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是?0 为正常退出,非0 为非正常退出。 ? 6. 非主函数中调用return和exit效果很明显,但是在main函数中调用return和exit的现象就很模糊,多数情况下现象都是一致的。 C语言检索文件只能在当前文件夹进行检索 1和l不混淆;两个等于号之间不能有空格 12.1.4 文件的打开与关闭 Fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式); 其中,“文件指针名”必须是被说名为FILE类型的指针变量;“文件名”是被打开文件的文件名;“使用文件方式”是指文件的类型和操作要求。 “文件名”是字符串常量或字符串数组。 例如:FILE *fp; fp=fopen("file_project","r"); 其意义是在当前目录下打开文件file_project,只允许进行“读”的操作,并使fp指向该文件。 又如: FILE *fp fp=fopen("c:\\file_project","rb"); 其意义是打开C驱动器磁盘的根目录下的文件file_project,这是一个二进制文件,只允许按二进制的方式进行读操作。两个反斜线“\\”中的第一个表示转义字符,第二个表示根目录。 使用文件内的方式共有12种,见表12.1 文件使用方式 意义 "rt" 只读打开一个文本文件,只允许读取数据 "wt" 只写打开或建立一个文本文件,只允许写数据 "at" 追加打开一个文本文件,并在文件末尾写数据 "rb" 只读打开二进制文件,只允许读取数据 "wb" 只写打开或建立一个二进制文件,只允许读取数据 "rt++" 读写打开一个二进制文件,并在文件末尾写数据 "wt++" 读写打开或建立一个文本文件,允许读写 "at++" 读写打开一个文本文件,允许读,或在文件末尾追加数据 "rb++" 读写打开一个二进制文件,允许读和写 "ab++" 读写打开一个二进制文件,允许读,或在文件末尾追加数据 一些英语单词和注释 read 读 write 写 append 追加 text 文本文件,可省略不写 binary 二进制文件 +:读和写 if((fp=fopen("c:\\file_project","rb"))==NULL)) {printf("eroe on open c:\\file_project!"); getch(); exit(1); } 2.文件关闭函数(fclose函数) 文件一旦使用完毕,需要采用关闭文件函数把文件关闭,以避免文件的数据丢失等错误。 fclose函数调用的一般形式是: fclose(文件指针); 例如: fclose(fp); 正常完成关闭文件操作时,fclose函数的返回值为0.如返回非零值则表示有错误发生。 12.2.1程序解析——读取工程文件 (1)字符读写函数:fgetc和fputc. (2)字符串读写函数:fgets和fputs. (3)数据块读写函数:freed和fwrite. (4)格式化读写函数:fscanf和fprintf. 使用以上函数都要求包括头文件stdio.h FILE *fp;//文件指针 很关键 没有定义文件指针读不出程序 小科普:二进制文件 第一讲(字符读写函数) 读字符函数:fgetc() 字符变量=fgetc(文件指针); eg.ch=fgetc(fp); 1.必须是以读或读写的方式打开 2.读取的字符结果也可以不向字符变量赋值 e.g.fgetc(fp); 3.文件内部有位置指针,用来指向文件的当前读写字节。文件打开时,该指针总是指向文件的第一个字节。使用fgetc函数后,该位置指针将向后移动一个字节。因此可连续多次使用fgetc函数,读取多个字符。应注意文件指针和文件内部的位置指针不是一回事。 写字符函数:fputc() 功能:把一个字符写入指定的文件中,调用的形式为 fputc(字符量,文件指针); 其中,待写入的字符量可以是字符常量或变量,例如: fputc('a',fp); 其意义是把字符a写入fp所指向的文件中。 1.被写入的文件可以用写,读写,追加方式打开,写或读写方式打开一个已经存在的文件时将清除原有的文件内容,写入字符从文件首开始。如需保留原有文件内容,希望写入的字符以文件末开始存放,必须以追加方式打开文件。被写入的文件若不存在,则创建该文件。 2.每写入一个字符,文件内部位置指针向后移动一个字节。 3.fputc函数有一个返回值,如写入成功则返回写入的字符,否则返回一个EOF,可用此来判断写入是否成功。 第二讲(字符串读写函数) 字符串读写函数fgets(从指定的文件中读一个字符串到字符数组中) 调用形式:fgets(字符数组名,n,文件指针); N为整数,不超过n-1个字符,在读入最后一个字符后加上串结束标志‘\0‘。 例12.5 字符串读写函数fputs(向指定的文件写入一个字符串) 调用形式:fputs(字符串,文件指针); 可以是字符串常量,也可以是字符数组名或指针变量。 例.?fputs("abcd",fp); 其意义是把字符串"abcd"写人fp所指的文件之中。 例12.6 第三讲(数据块读写函数) 数据块读函数fread 读数据块函数调用的一般形式为∶ fread(buffer,size,count,fp) fread()——从fp所指向文件的当前位置开始,一次读入size个字节,重复count次,并将读入的数据存放到从buffer开始的内存中;同时,将读写位置指针向前移动size* count个字节 数据块写函数fwrite 写数据块函数调用的一般形式为∶ fwrite(buffer,size,count,fp) fwrite()——从buffer开始,—次输出size个字节,重复count次,并将输出的数据存放到fp所指向的文件中;同时,将读写位置指针向前移动?size* count个字节 例12.7 第四讲(格式化读写函数) 格式化读写函数fscanf和fprintf fscanf函数、fprint函数与前面使用的scanf和printf函数的功能相似,都是格式化读写函数。两者的区别在于fscanf函数和fprint函数的读写对象不是键盘和显示器,而是磁盘文件 这两个函数的调用格式为∶ fscanf(文件指针,格式字符串,输入表列); fprintif(文件指针,格式字符串,输出表列); 例12.8 读?/?写函数的选用原则 读/写1个字符(或字节)数据时∶选用fgetc()和iputc()函数 读/写1个字符串时∶选用fgets()和fputs()函数读/写1个(或多个)不含格式的数据时∶选用fread()和fwrite()函数 读/写1个(或多个)含格式的数据时∶选用?fscanf()和fprintf()函数 12.3文件的随机读写 改变文件位置指针函数fseek() fseek函数的调用形式∶ fseekfp,offset,position);其中∶fp为文件型指针;position为起始点,指出以文件的什么位置为基准进行移动 例12.9 位置指针重返文件头函数rewind() rewind函数的调用形式∶ rewind(fp); 其中∶ fp为文件型指针 rewind函数的功能是∶使fp指定的文件的位置指针重新定位到文件的开始位置 例12.10 3.位置指针当前值函数ftell() 例12.11 4.文件的随机读写 在学生文件stu list中读出第二个学生的数据 FILE *fp; int i=1; s1=&stu; iffp=fopen("stu_list","rb"))==NULL){ printf("Cannot open file !"); exit(1);} rewind(fp); fseek(fp,i*sizeof((struct stu)),0); fread(s1,sizeof(struct stu),1,fp); printf("name\tnumber age addr\n"); printf("%s\t%5dt%5dt%sn",s1->name,s1->num,s1->age,s1->addr); 例12.12 12.4文件检测函数 C语言中常用的文件检测函数有以下几个。 12.4.1文件结束检测函数feof函数 feof函数调用格式: feof(文件指针); 功能:判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。 一般是读写。 12.4.2读写文件出错检测函数ferror函数 ferror函数调用格式: ferror(文件指针); 功能:检查文件在用各种输人输出丽数进行读写时是否出错。如ferror返回值为0表 示未出错,否则表示有错。 12.4.3文件出错标志和文件结束标志置0函数clearerr函数 clearerr函数调用格式: clearerr(文件指针); 功能:本函数用于清楚标志和文件结束标志。使它们为0值。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 6:08:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |