南理工 c语言 第十三章 文件

合集下载

C语言程序设计教学大纲

C语言程序设计教学大纲

《C语言程序设计》教学大纲(总11页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--《C语言程序设计》教学大纲课程名称:中文名称:C语言程序设计;英文名称:C Language Programming课程编码:161002学分:分总学时:72学时,其中,理论学时:52学时;上机学时:20学时。

适用专业:全校理工科各专业先修课程:计算机基础执笔人:审订人:一、课程的性质与任务《C语言程序设计》是为全校所有的理工科专业的学生开设的公共基础课,也是一门重要的必修课。

其目的是使学生掌握程序设计的基本方法,培养学生掌握利用计算机处理问题的思维方法与应用能力。

要求学生掌握程序的三种基本结构及结构化的程序设计方法,了解并掌握几种典型的算法,并且能够熟练地运用C语言编写各种应用程序,为进一步学习其它相关课程奠定基础。

二、教学内容与学时分配第一章程序设计基本概念 (3学时)本章重点:一、算法及特性;二、结构化程序设计方法。

难点:算法设计及其表示。

第一节程序和程序设计一、程序;二、程序设计。

第二节算法第三节结构化程序设计方法第四节 C语言程序的基本结构第二章数据类型、运算符和表达式 (5学时)本章重点:一、标识符的正确使用;二、各种基本数据类型的使用;三、算术运算符的优先级和结合性;四、表达式计算中的类型转换。

难点:一、各种类型数据在计算机内存中的存储形式;二、自增自减运算。

第一节 C语言的数据类型第二节常量与变量第三节整型数据第四节实型数据第五节字符型数据第六节算术运算符与算术表达式第七节赋值运算符与赋值表达式一、赋值运算符和赋值表达式;二、复合的赋值表达式;三、自加、自减运算符;四、赋值运算中的类型转换。

第八节逗号运算符与逗号表达式第三章顺序结构程序设计 (4学时)本章重点:一、printf函数;二、scanf函数。

难点:输入与输出时的格式控制。

第一节 C语句概述第二节赋值语句第三节数据的输入与输出一、printf函数;二、putchar函数;三、scanf函数;四、getchar函数第四节顺序结构程序举例第四章选择结构程序设计 (4学时)本章重点:一、逻辑值的表示、使用及其运算;二、关系运算符的运算规则及关系表达式;三、逻辑运算符的运算规则及逻辑表达式;四、if语句;五、switch语句的形式与执行过程。

c程序设计 第13章 文件 答案解析.

c程序设计 第13章 文件 答案解析.

第十三章例13.1 程序为:#include <stdio.h>#include <stdlib.h>void main(){FILE *fp;char ch,filename[10];scanf("%s",filename);if((fp=fopen(filename,"w"))==NULL){printf("cannot open file\n");exit(0);}ch=getchar();ch=getchar();while(ch!='#'){fputc(ch,fp);putchar(ch);ch=getchar();}putchar(10);fclose(fp);}例13.2 程序为:#include <stdio.h>#include <stdlib.h>void main(){FILE *in, *out;char ch,infile[10],outfile[10];printf("Enter the infile name:\n");scanf("%s",infile);printf("Enter the infile name:\n");scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL){printf("cannot open file\n");exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("cannot open file\n");exit(0);}while(!feof(in)) fputc(fgetc(in),out);fclose(in);fclose(out);}注:在该程序的运行中,每复制一次就会产生一个乱码置于最后,并依次叠加。

c语言Ch13 文件操作

c语言Ch13 文件操作
18
文件的读写
【例4】将一个整型数组存放到文件中,然后从文件中读取数 据到数组中并显示。
fp = fopen (“demo.dat", "rb"); #include <stdio.h> if (fp == NULL) //打开失败 #include <stdlib.h> { demo.dat int main ( ) ("can’t file: { 00 00 01 00 02printf 00 03 00 04open 00 05 00demo.dat 06 00 \n"); FILE *fp; exit (1); short i, a[10] = {0, 4, 5, 6, 3 4 } 7, 2 8, 9},b[10]; 5 6 01, 2, 3,1 fp = fopen ("demo.dat", "wb"); //从文件中读取10个整型数据到数组b 07 00 08 00 09 00 if (fp == NULL) fread (b, sizeof(short), 10, fp); { 16进制形式 fclose (fp); 8 demo.dat\n"); 9 printf ("can not 7 create file: printf("数组b:"); exit (1); for (i = 0; i < 10; i++) } printf ("%d ", b[i]); //将数组a的10个整型数写入到文件中 fwrite (a, sizeof(short), 10, fp); return 0; } 程序13-4 fclose (fp); //关闭文件

C语言基础 第13章

C语言基础 第13章

表13.2.1 mode 功 能
r w
打开一个已存在的文本文件, 打开一个已存在的文本文件,只能 读取(输入) 读取(输入)数据 打开一个文本文件,只能写入( 打开一个文本文件,只能写入(输 出)数据
续表 mode 功 能
a r+ w+ a+ rb wb ab rb+或 rb+或(r+b) wb+或 wb+或(w+b) ab+或 ab+或(a+b)
第13章 磁盘文件操作(I/O系统) 13章 磁盘文件操作(I/O系统 系统)
13.1 文件概述 13.2 打开文件和关闭文件 13.3 文件的读和写 13.4 文件的定位与文件的随机存取
本章介绍ANSI文件 系统 本章介绍ANSI文件I/O系统。包括文 文件I/O系统。 件的概念,文件的打开和关闭, 件的概念,文件的打开和关闭,数据的读 写等。 写等。
(1)字符文件读写函数fgetc()和fputc(); (2) 数据块文件读写函数 fread() 和 fwrite(); (3)格式文件读写函数fscanf()和fprintf(); (4)字符串文件读写函数fgets()和fputs()。
除此以外,为配合文件的读写操作, 除此以外,为配合文件的读写操作,还 提供有文件测试函数和文件随机定位函数 等 。 所有关于读写的系统函数均定义在头 文件“stdio.h”中 文件“stdio.h”中。 本节将详细介绍这些常用的文件读写 函数及其应用。 函数及其应用。
整个个程序由以下几个部分构成: 整个个程序由以下几个部分构成:
(1)首先定义一个文件指针fp; (2) 用写模式打开( 建立) 文件 test 并 用写模式打开 ( 建立 ) 检查是否确实打开; 检查是否确实打开; (3)将从键盘读入的字符串用fputc()函 数写入(输出)到文件tset; 数写入(输出) (4)关闭文件。 关闭文件。

kj第12章文件ppt课件全

kj第12章文件ppt课件全
以只写方式打开一个文本文件。若文件不存在,则建立该文件。 若文件已存在,则删除原文件内容,写入新内容。
以追加方式打开一个文本文件。只能向文件尾追加数据。文件必 须存在,否则打开失败。打开后,文件内部的位置指针指向文件 尾。
以只读方式打开一个二进制文件。文件必须存在,否则打开失败。 打开后,文件内部的位置指针指向文件首部的第一个字节。
以读/写方式打开或新建立一个二进制文件。若文件已存在,则新的写操作将覆盖 原来的数据。若文件不存在,则建立一个新文件。还可以在不关闭文件的情况下, 再读取文件内容。
以读和追加的方式打开一个二进制文件。允许读或追加。文件必须存在,否则打 开失败。打开后,文件内部的位置指针指向文件尾。可在文件尾追加数据,也可 将位置指针移到某个位置,读取数据。
第4页
12.1 文件概述
12.1.2 数据文件的存储形式
从文件的编码方式来看,文件可以分为ASCII码文件和 二进制文件两种。
ASCII码文件也称为文本文件,这种文件在磁盘中存储 时每个字符对应一个字节,存放的是该字符的ASCII码 值。
二进制文件是把内存中的数据按其在内存中的存储形式 原样输出到磁盘上存放。
图12.1中,00110001、00110010、00110011、 00110100分别是字符’1’、’2’、’3’、’4’的 ASCII码值的二进制形式。
第6页
存储内容用ASCII码形式输出时,其字节与字符一一对应,一 个字节代表一个字符,便于对字符进行逐个处理,也便于输出 字符,但一般占用的存储空间较多,而且要花费转换时间。
第15页
12.2 文件的打开与关闭
如果成功打开一个文件,则fopen() 函数将返回一个指向该文件的指针,否则 将返回空指针(NULL),由此可以判断 一个文件是否成功打开。

《C语言》章节列表

《C语言》章节列表

第1章程序设计和C语言1第2章算法——程序的灵魂16第3章最简单的C程序设计——顺序程序设计第4章选择结构程序设计85第5章循环结构程序设计114第6章利用数组处理批量数据1426.1怎样定义和引用一维数组1426.1.1怎样定义一维数组1436.1.2怎样引用一维数组元素1446.1.3一维数组的初始化1456.1.4一维数组程序举例1466.2怎样定义和引用二维数组1486.2.1怎样定义二维数组1496.2.2怎样引用二维数组的元素1506.2.3二维数组的初始化1516.2.4二维数组程序举例1526.3字符数组1546.3.1怎样定义字符数组1546.3.2字符数组的初始化1556.3.3怎样引用字符数组中的元素1556.3.4字符串和字符串结束标志1566.3.5字符数组的输入输出1596.3.6使用字符串处理函数1616.3.7字符数组应用举例165习题168第7章用函数实现模块化程序设计1707.1为什么要用函数1707.2怎样定义函数1727.2.1为什么要定义函数1727.2.2定义函数的方法1737.3调用函数1747.3.1函数调用的形式1747.3.2函数调用时的数据传递1757.3.3函数调用的过程1777.3.4函数的返回值1787.4对被调用函数的声明和函数原型1797.5函数的嵌套调用1827.6函数的递归调用1847.7数组作为函数参数1927.7.1数组元素作函数实参1937.7.2数组名作函数参数1947.7.3多维数组名作函数参数1977.8局部变量和全局变量1997.8.1局部变量1997.8.2全局变量2007.9变量的存储方式和生存期2047.9.1动态存储方式与静态存储方式2047.9.2局部变量的存储类别2057.9.3全局变量的存储类别2087.9.4存储类别小结2127.10关于变量的声明和定义2147.11内部函数和外部函数2157.11.1内部函数2157.11.2外部函数215习题218第8章善于利用指针2208.1指针是什么2208.2指针变量2228.2.1使用指针变量的例子2228.2.2怎样定义指针变量2238.2.3怎样引用指针变量2248.2.4指针变量作为函数参数2268.3通过指针引用数组2308.3.1数组元素的指针2308.3.2在引用数组元素时指针的运算2318.3.3通过指针引用数组元素2338.3.4用数组名作函数参数2378.3.5通过指针引用多维数组2458.4通过指针引用字符串2558.4.1字符串的引用方式 2558.4.2字符指针作函数参数2598.4.3使用字符指针变量和字符数组的比较263 8.5指向函数的指针2668.5.1什么是函数指针2668.5.2用函数指针变量调用函数2668.5.3怎样定义和使用指向函数的指针变量268 8.5.4用指向函数的指针作函数参数2708.6返回指针值的函数2748.7指针数组和多重指针2778.7.1什么是指针数组 2778.7.2指向指针数据的指针2808.7.3指针数组作main函数的形参2828.8动态内存分配与指向它的指针变量2858.8.1什么是内存的动态分配2858.8.2怎样建立内存的动态分配2858.8.3void指针类型 2878.9有关指针的小结288习题291第9章用户自己建立数据类型2939.1定义和使用结构体变量2939.1.1自己建立结构体类型2939.1.2定义结构体类型变量 2959.1.3结构体变量的初始化和引用2979.2使用结构体数组3009.2.1定义结构体数组3009.2.2结构体数组的应用举例3019.3结构体指针3039.3.1指向结构体变量的指针3039.3.2指向结构体数组的指针3049.3.3用结构体变量和结构体变量的指针作函数参数306 9.4用指针处理链表3099.4.1什么是链表 3099.4.2建立简单的静态链表3109.4.3建立动态链表3119.4.4输出链表3159.5共用体类型3179.5.1什么是共用体类型3179.5.2引用共用体变量的方式3189.5.3共用体类型数据的特点3199.6使用枚举类型3239.7用typedef声明新类型名326习题330第10章对文件的输入输出33110.1C文件的有关基本知识33110.1.1什么是文件33110.1.2文件名33210.1.3文件的分类33210.1.4文件缓冲区33310.1.5文件类型指针33310.2打开与关闭文件33510.2.1用fopen函数打开数据文件33510.2.2用fclose函数关闭数据文件33710.3顺序读写数据文件33810.3.1怎样向文件读写字符33810.3.2怎样向文件读写一个字符串34110.3.3用格式化的方式读写文件34410.3.4用二进制方式向文件读写一组数据34510.4随机读写数据文件34910.4.1文件位置标记及其定位34910.4.2随机读写 35210.5文件读写的出错检测353习题354第11章常见错误分析355附录370附录A在Visual C++ 6.0环境下运行C程序的方法370附录B常用字符与ASCII代码对照表377附录CC语言中的关键字378附录D运算符和结合性378附录EC语言常用语法提要380附录FC库函数384参考文献390第4章选择结构程序设计854.1选择结构和条件判断854.2用if语句实现选择结构874.2.1用if语句处理选择结构举例874.2.2if语句的一般形式 894.3关系运算符和关系表达式914.3.1关系运算符及其优先次序914.3.2关系表达式924.4逻辑运算符和逻辑表达式924.4.1逻辑运算符及其优先次序934.4.2逻辑表达式944.4.3逻辑型变量964.5条件运算符和条件表达式974.6选择结构的嵌套1004.7用switch语句实现多分支选择结构1024.8选择结构程序综合举例106习题112第5章循环结构程序设计1155.1为什么需要循环控制1155.2用while语句实现循环1165.3用do…while语句实现循环1185.4用for 语句实现循环1215.5循环的嵌套1255.6几种循环的比较1265.7改变循环执行的状态1265.7.1用break语句提前终止循环1275.7.2用continue语句提前结束本次循环1285.7.3break语句和continue语句的区别1295.8循环程序举例132习题141第6章利用数组处理批量数据1436.1怎样定义和引用一维数组1436.1.1怎样定义一维数组1446.1.2怎样引用一维数组元素1456.1.3一维数组的初始化1466.1.4一维数组程序举例1476.2怎样定义和引用二维数组1496.2.1怎样定义二维数组1506.2.2怎样引用二维数组的元素1516.2.3二维数组的初始化1526.2.4二维数组程序举例1536.3字符数组1556.3.1怎样定义字符数组1556.3.2字符数组的初始化1566.3.3怎样引用字符数组中的元素156 6.3.4字符串和字符串结束标志1576.3.5字符数组的输入输出1606.3.6使用字符串处理函数1626.3.7字符数组应用举例166习题169第7章用函数实现模块化程序设计171 7.1为什么要用函数1717.2怎样定义函数1737.2.1为什么要定义函数1737.2.2定义函数的方法1747.3调用函数1757.3.1函数调用的形式1757.3.2函数调用时的数据传递1767.3.3函数调用的过程1787.3.4函数的返回值1797.4对被调用函数的声明和函数原型181 7.5函数的嵌套调用1837.6函数的递归调用1857.7数组作为函数参数1937.7.1数组元素作函数实参1937.7.2数组名作函数参数1957.7.3多维数组名作函数参数1987.8局部变量和全局变量2007.8.1局部变量2007.8.2全局变量2017.9变量的存储方式和生存期2057.9.1动态存储方式与静态存储方式205 7.9.2局部变量的存储类别2067.9.3全局变量的存储类别2097.9.4存储类别小结2137.10关于变量的声明和定义2157.11内部函数和外部函数2167.11.1内部函数2167.11.2外部函数216习题219第8章善于利用指针2218.1指针是什么2218.2指针变量2238.2.1使用指针变量的例子2238.2.2怎样定义指针变量2248.2.3怎样引用指针变量2258.2.4指针变量作为函数参数2278.3通过指针引用数组2328.3.1数组元素的指针2328.3.2在引用数组元素时指针的运算2338.3.3通过指针引用数组元素2348.3.4用数组名作函数参数2398.3.5通过指针引用多维数组2478.4通过指针引用字符串2578.4.1字符串的引用方式 2578.4.2字符指针作函数参数2618.4.3使用字符指针变量和字符数组的比较265 8.5指向函数的指针2688.5.1什么是函数指针2688.5.2用函数指针变量调用函数2688.5.3怎样定义和使用指向函数的指针变量270 8.5.4用指向函数的指针作函数参数2728.6返回指针值的函数2768.7指针数组和多重指针2798.7.1什么是指针数组 2798.7.2指向指针数据的指针2828.7.3指针数组作main函数的形参2848.8动态内存分配与指向它的指针变量2878.8.1什么是内存的动态分配2878.8.2怎样建立内存的动态分配2878.8.3void指针类型 2898.9有关指针的小结290习题293第9章用户自己建立数据类型2959.1定义和使用结构体变量2959.1.1自己建立结构体类型2959.1.2定义结构体类型变量 2979.1.3结构体变量的初始化和引用2999.2使用结构体数组3029.2.1定义结构体数组3029.2.2结构体数组的应用举例3049.3结构体指针3059.3.1指向结构体变量的指针3059.3.2指向结构体数组的指针3069.3.3用结构体变量和结构体变量的指针作函数参数3089.4用指针处理链表3119.4.1什么是链表 3119.4.2建立简单的静态链表3129.4.3建立动态链表3139.4.4输出链表3179.5共用体类型3199.5.1什么是共用体类型3199.5.2引用共用体变量的方式3209.5.3共用体类型数据的特点3219.6使用枚举类型3259.7用typedef声明新类型名328习题332第10章对文件的输入输出33310.1C文件的有关基本知识33310.1.1什么是文件33310.1.2文件名33410.1.3文件的分类33410.1.4文件缓冲区33510.1.5文件类型指针33510.2打开与关闭文件33710.2.1用fopen函数打开数据文件33710.2.2用fclose函数关闭数据文件33910.3顺序读写数据文件34010.3.1怎样向文件读写字符34010.3.2怎样向文件读写一个字符串34310.3.3用格式化的方式读写文件34610.3.4用二进制方式向文件读写一组数据34710.4随机读写数据文件35110.4.1文件位置标记及其定位35110.4.2随机读写 35410.5文件读写的出错检测355习题356第11章常见错误分析374附录390附录A在Visual C++ 6.0环境下运行C程序的方法390 附录CC语言中的关键字398附录D运算符和结合性398附录EC语言常用语法提要400附录FC库函数404参考文献410。

2022年南京理工大学公共课《C语言》科目期末试卷A(有答案)

2022年南京理工大学公共课《C语言》科目期末试卷A(有答案)一、填空题1、请读程序段:int a=-1;a=a|0377;printf("%d,%o\n",a,a);以上程序段的输出结果是_______。

2、结构化程序由________、________ 、________ 3种基本结构组成。

3、C语言源程序的基本单位是________4、若有定义语句:ints=6;则表达式s%2+(s+1)%2的值为_______5、若a、b和c均是int型变量,则执行表达式a=(b=4)+(c=2)后a的值为_______,b的值为_______,c的值为_______。

6、以下程序的运行结果是_______。

#include <stdio.h>int main(){char s[]="ab\'cdefg\",*p=s+1;printf("%c”,*(p++));printf("%s",p+2);return(0);}7、鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。

请填空。

for(x=0;x<=30;x++){y=30一x;if(_______)printf("%d,%d\n",x,y);}8、设有如下结构体说明:struct ST{int a;float b;struct ST*c;doublex[3];}st1;请填空,完成以下对数组s的定义,使其每个元素均为上述结构体类型。

_______9、若有以下定义和语句,为使变量c1得到字符’A',变量c2得到字符’B’,正确的输入形式是_______。

char cl,c2;scanf("%4c%4c",&cl,8&c2);10、下面程序段的运行结果是_______。

char ch[]="600";int a,s=0;for(a=0;ch[a]>= '0'&&ch[a]<='9';a++)s=10*s+ch[a]-'o';printf("%d",s);二、选择题11、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )A.7B.8C.6D.212、下列4组选项中,不是C语言关键字的选项是。

昆明理工大学C语言程序设计课后习题答案

昆明理工大学C语言程序设计课后习题答案第1章认识C语言(一)、是非题1.程序是指挥计算机进行各种信息处理任务的一组指令序列。

A.对B.错2.机器语言与硬件平台相关,但汇编语言和硬件平台无关。

A.对B.错3.编译型高级语言明显优于解释型高级语言。

A.对B.错4.C语言把高级语言的基本结构和低级语言的实用性紧密结合起来,不仅适合编写应用软件,而且适于编写系统软件。

A.对B.错5.面向对象的程序设计方法明显优于面向过程的程序设计方法。

A.对B.错6.计算机算法要有一个明确的起点和确定的步骤序列。

A.对B.错7.main函数是C程序的入口,由计算机系统负责调用。

A.对B.错8.在C语言中,同一行上可以写一条或多条语句,但一条语句不能写在多行上。

A.对B.错9.在C语言中,扩展名为.h的文件称为头文件,常用于组织C标准函数库中的函数。

A.对B.错10.注释语句会增加编译结果的复杂性,因此要尽量减少注释语句的数量。

A.对B.错11.声明变量的含义是通知编译系统为变量分配合适大小的存储空间。

A.对B.错12.C语言不允许使用关键字作为变量的名称,但可以使用保留字为变量命名。

A.对B.错13.符号常量提高了程序的可读性,但降低了程序维护的方便性。

A.对B.错14.变量声明把一个具体的标识符名称和计算机内存中的一个特殊的位置联系起来,同时确定了该位置存储的信息类型。

A.对B.错15. C语言允许在同一条语句中定义多个相同类型的变量,其间用分号进行分隔。

A.对B.错16.在ISO/ANSI 1999规定中,允许将变量声明放在程序中的任何位置。

A.对B.错17.不同类型的数据在内存中所占存储单元的大小不同,内部存储方式不同,取值范围不同,甚至能够参与的运算种类也不相同。

A.对B.错18.有符号和无符号整数的区别仅在于对数据最高位的解释不同。

若最高位解释为数据位,则为signed类型;若最高位解释为符号位,则为unsigned类型。

C-13(文件)


使用文件方式
函数原型: FILE *fopen(char *name,char *mode) char *filename=“test.dat” fp= fopen(filename,”r”); 功能:按指定方式打开文件 要打开的文件名 含义 用方式 返值:正常打开,为指向文件结构体的指针;打 开失败,为NULL 读) 为输入打开一个文本/二进制文件
§例 从键盘输入一些字符,存到磁盘文 “mydata.txt”中,直到输入“#”为止
void main() { FILE *fp; char c; fp=fopen("E:\\C程序\\mydata.txt","a"); if(fp==NULL) { printf("cannot open the file!\n"); exit(0); } else printf("open!"); while((c=getchar())!='#') { fputc(c,fp); } fclose(fp); }
数据文件的改动不引起程序的改动,---程序与数 据分离 不同程序可以访问同一数据文件中的数据,---数 据共享 能长期保存程序运行的中间数据或结果数据
§文件的分类
按存储介质
普通文件:磁盘文件、磁带文件 设备文件:键盘、显示器、打印机等
按文件内容
源程序、目标文件、可执行文件、数据文件
if(fp==NULL) 标准输入------键盘 stdin { printf(“File open error!\n”); 标准输出------显示器 stdout exit(0); 标准出错输出-----显示器 stderr }
test.dat”,”r”); FILE打开文件fopen *fp;

南京理工大学 C++课程设计 扑克牌游戏(多文件)

紫金学院C++课程设计南京理工大学紫金学院C++课程设计报告课程:C++课程设计学院:计算机学院班级:计算机大类四班学号:**********名:**选题名称:扑克牌游戏起止时间:2018.5.22~2018.6.1指导教师:**2018年5月1 问题描述在提供的源程序基础上,写一个程序,可以进行洗牌等操作.2 基本要求1)增加大小王.2)删去一张指定扑克牌后,进行余牌显示.3)创建一副扑克牌,显示一副扑克牌,洗牌,依次分发给四人并显示.3 需求分析输入形式与范围是按照提示语句输入相应的数字或是(Y)否(N)的英文字母输出形式即为提示语句所说明的内容该程序基本任务是完成扑克洗牌,显示玩家手牌,按花色或牌面整理手牌(排序) 测试数据为54张扑克牌面值以及花色,无需手动设置正确的输入将使得程序按说明运行,错误输入默认直接退出程序4 概要设计分为8个部分,也是八个文件头文件两个:all.h 包含主程序所需的所有头文件.class.h 包含所有的类,并卷入all.h 其余cpp文件,共6个,说明如下:main函数主调函数deck 包含deck类的函数perdeck 包含perdeck类的函数playdeck 包含playdeck类的函数playingcard 包含playingcard类的函数main函数调用的函数顾名思义5 详细设计All.h#pragma once#include<iostream>#include<string.h>//编译器是VS2017#include<time.h>#include<stdlib.h>#include<stdio.h>#include<conio.h>Class.h#pragma once#include"all.h"using namespace std;class PerDeck;class PlayingCard{int nValue;//扑克牌实际面值char achFace[3];//扑克牌字符串A,2,......10,J,Q,K char chSuit;//扑克牌花色public:friend class PerDeck;PlayingCard();//将对象清零void ShowCard();//显示面值花色void CardMake(int);//给一张扑克牌赋值(面值,花色) };class Deck{private:PlayingCard m_cardarray[54];int nLastDelt;public:friend class PerDeck;Deck();void MakeDeck();//将52张牌清零(没有大,小王)void DealOne();//删除开头一张牌void ShowDeck();//依次逐张显示这副牌void DeckShuff(int);//用于洗牌,参数是洗牌次数void RemoveCard();//清零删除掉的那张牌};class PerDeck{private:PlayingCard myCard[20];int nNum;public:PerDeck() {}void MakePerDeck(Deck &, int);void Show();void SortFace();void SortSuit();int Delete(int n);};class PlayDeck{private:PerDeck myDeck[4];PlayDeck() {}void PlayCard(Deck &);void Show();int DeleteOne(int row, int column);int DeleteAll(int, int, int ,int);void SortDeckFace(int);void SortDeckSuit(int);void s(int);};void ProgramInit();//初始化,并输出信息void CenterText(char ShellText[80]);//居中显示int GetNumber();//键入整数型char GetKey();//键入字符串型void DeckMakeDiver();//主要算法(生成扑克牌,洗牌,删除等) int GetRandInt(int min, int max);//在min到max间选随机值void ProgClose();//暂停,供用户查看中间运行结果main函数.cpp#include"class.h"using namespace std;int main(void){srand((unsigned)time(NULL));int nCardNum = 0;ProgramInit();DeckMakeDiver();ProgClose();return 1;}Playdeck.cpp#include"class.h"#include<iostream>using namespace std;void PlayDeck::PlayCard(Deck &k){int a, b, c, d;char g[29] = { "依次输入四位玩家手里的牌数:" };CenterText(g);cout << endl;cin >> a >> b >> c >> d;if (a + b + c + d > 54)char g[] = { "超过牌的张数,退出游戏。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文 件 的 打 开
使用文件方式 ─ 指出对要打开的文件进行何 种操作,如上例中的 "r"
休息
12
前一页 下一页
§13.3 文件的打开和关闭

使用文件方式
Turbo C 中共提供了12种使用文件方式。
文 件 的 打 开
说明:
用只读方式(r 方式)打开文件时,这个文 件必须已经存在。 用只写或读写方式打开文件时,如文件不存 在则系统会新建一个,如已存在同名文件, 则将覆盖原先的内容。 用追加方式打开的文件则不删除原先的内容 而是把新内容添加到原文件的结尾或者创建 一个新文件。
休息
14
前一页 下一页
§13.3 文件的打开和关闭
文件用完后要使用 fclose 函数关闭文件 关闭的作用

文 件 的 关 闭
将文件缓冲区中的数据写入磁盘,并切断文件指针与 文件信息区的联系,以防止错误。

调用方式:
fclose ( 文件指针 ) 例: fclose( fp )

fclose 的返回值:
C语言程序设计
第十三章 文件
§13.1 C文件概述
“文件”是计算机技术领域中经常使用 的一个概念。 所谓文件是指存储在外部介质上的数 据的集合。 这些数据可以是字符:如C源程序文 件;可以是指令:如C系统文件;也 可以是一般的数据——用于输入或输 出的数据。

休息
2
文 件 概 念
前一页 下一页
速度较慢,多用于一般输入输出
前一页 下一页
休息
16
§13.4 文件的读写

格 式 化 读 写 函 数
例TC13.4-3.C 对结构体数组 stu 按第一个 成员 num 从小到大排序 #include "stdio.h" struct student { long int num; char name[ 20 ]; float score[ 3 ]; }stu[ 40 ];
休息
17
前一页 下一页
格 式 化 读 写 函 数
main( ) { void sort( struct student [ ], int ); void print( struct student *, int ); FILE *fp; int i, j, n; float y; char c, filename[ 12 ]; printf( "input file name:" ); gets( filename ); // 输入文件名 if ( ( fp = fopen( filename, "r" ) ) == NULL ) // 只 读方式 { printf( "cannot open this file\n" ); exit( 0 ); } 前一页 下一页 休息
使用规则:
文本文件:存放需要输出的结果或建立输入数据文件 二进制文件:存放中间结果或要作为下一个程序的输入
数据的计算结果。
休息
前一页 下一页
6
§13.2 文件类型指针
打开文件后系统在内存为文件建立文 件信息区, 用于存放该文件的有关信息 Turbo C 在头文件 stdio.h 中定义文件 信息区数据类型FILE: 通常用定义一个指向 FILE型的指针, 来实现对文件的各种操作。
休息
字 符 读 写 函 数
前一页 下一页
§13.4 文件的读写

输入字符串:
fgets( str, n, fp ) 说明:从 fp 文件中输入 n-1 个字符存放到 字符数组 str中,如果数据不到 n-1 个但遇 到 "\n" 也结束读入并在最后加一个 '\0' 。 fputs( str, fp ) 说明:把 str 的内容写入 fp 文件

说明:
fopen 是FILE 型指针函数, 返回文件信息 区中结构体变量的起始地址 文件名可以是字符数组名, 或直接写入有效 的文件名(包括路径)。
例: fp = fopen ( " d:\\tc\\ex9_1.c ", "r" ); 注意:这里路径名中的反斜杠应为两个,否则系 统会把斜杠后面的 t 认为是转义字符 \t
休息
13
前一页 下一页
§13.3 文件的打开和关闭

指针值的检测
打开文件时会由于各种原因导致不能打开
如:磁盘空间已满或用 r 方式打开不存在的文件等
文 件 的 打 开
文件不能打开时fopen 函数返回空指针值 NULL 打开文件时要同时检测打开是否成功 常用检查方法:
if ( (fp = fopen( "file.c", "r" ) ) == NULL ) { printf ( "cannot open this file!\n" ); exit ( 0 ); }
休息
前一页 下一页
格 式 化 读 写 函 数
void print( struct student *p, int n ) { FILE *fp; int i,j; if( ( fp = fopen( "out.txt", "w" ) ) == NULL ) { printf( "cannot open output file\n" ); exit( 0 ); } fprintf( fp, " NO. Name score \n" ); for ( i = 0; i < n; i++ ) { fprintf( fp, "%5ld %10s ", (p+i)->num, (p+i)->name ); for ( j = 0; j < 3; j++ ) fprintf( fp, "%5.1f", ( p+i ) -> score[ j ] ); fprintf( fp, "\n" ); } }
休息
字 符 读 写 函 数
前一页 下一页

例TC13.4-1A.C 从文件输入字符并显示在屏幕上
#include "stdio.h" void main( ) { FILE *fp; char c, filename[ 12 ]; printf( "input file name:" ); gets( f( filename, "r" ) ) == NULL ) // 只读方式 { printf( "cannot open this file\n" ); exit( 0 ); } while ( ( c = fgetc( fp ) ) != EOF ) putchar( c ); fclose( fp ); }
前一页 下一页
EOF EOF 是 stdio.h 中定义的符号常量,值为 -1
休息
22

例TC13.4-1.C 从键盘输入字符并存入指定文件
#include "stdio.h" void main( ) { FILE *fp; char c, filename[12]; printf( "input file name:" ); gets( filename ); // 输入文件名 if ( ( fp = fopen( filename, "w" ) ) == NULL ) // 只写方式 { printf( "cannot open this file\n" ); exit( 0 ); } while ( ( c = getchar( ) ) != '#' ) fputc( c, fp ); fclose( fp ); }
前一页 下一页
休息
§13.4 文件的读写

用于字符输入输出文件的函数调用形式:
fgetc ( fp )- 从 fp 所指文件中读入一个字符 fputc ( ch,fp )-把字符变量 ch 的值写入 fp 所指 的文件中
字 符 读 返回值 写 fgetc 返回读入的字符,文件结束符时返回 EOF 函 fputc 调用成功返回输出的字符,否则返回 数
前一页 下一页
休息
5
§13.1 C文件概述
二 进 制 文 件 和 文 本 文 件

两种文件主要有以下几点不同:
存储空间不同
例:整数 10000
ASCII 文件:是字符串,用5个字节存放 二进制文件:是整型数据,用2个字节存放
输入输出处理不同
二进制文件:数据就按内存形式原样输出,传送数据
速度快,但不能在显示器上查看内容。 文本文件:进行 ASCII 码与字符间转换 再进行输入输 出,传递速度较慢。但可在显示器上查看。
fscanf( fp, "%d", &n ); for ( i = 0; i < n; i++ ) { for( j = 0; j < 3; j++ ) 格 fscanf( fp, "%f", &stu[i].score[j] ); 式 化 fscanf( fp,"%ld%s", &stu[i].num, stu[i].name ); 读} 写 sort( stu, n ); 函 print( stu, n ); 数 fclose( fp ); }
关闭成功返回0, 否则返回非 0整数值。
注意:打开的文件在使用完后一定要关闭,否则
可能会丢失数据
前一页 下一页
休息
相关文档
最新文档