第13章 C语言文件
2011年计算机等级二级C语言章节习题及答案(13)
2011年计算机等级二级C语言章节习题及答案(13)2011年计算机等级二级C语言章节习题及答案(13)第13章文件一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。
)13.1 fseek函数的正确调用形式是A)fseek(文件指针,起始点,位移量)B)fseek(文件指针,位移量,起始点)C)fseek(位移量,起始点,文件指针)D)fseek(起始点,位移量,文件指针)正确答案: B13.2 若fp是指向某文件的指针,且已读到文件末尾,则函数feof (f p)的返回值是A)EOFB)-1C)1D)NULL正确答案: C13.3 fscanf函数的正确调用形式是A)fscanf(fp,格式字符串,输出表列);B)fscanf(格式字符串,输出表列,fp);C)fscanf(格式字符串,文件指针,输出表列);D)fscanf(文件指针,格式字符串,输入表列);正确答案: D13.4 下列关于C语言数据文件的叙述中正确的是A)文件由ASCII码字符序列组成,C语言只能读写文本文件B)文件由二进制数据序列组成,C语言只能读写二进制文件C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件正确答案: D13.5 函数fseek(pf, OL,SEEK_END)中的SEEK_END代表的起始点是A)文件开始B)文件末尾C)文件当前位置D)以上都不对正确答案: B13.6 C语言中,能识别处理的文件为A)文本文件和数据块文件B)文本文件和二进制文件C)流文件和文本文件D)数据文件和二进制文件正确答案: B13.7 若调用fputc函数输出字符成功,则其返回值是A)EOFB)1C)0D)输出的字符正确答案: D13.8 已知函数的调用形式:fread(buf,size,count,fp),参数buf 的含义是A)一个整型变量,代表要读入的数据项总数B)一个文件指针,指向要读的文件C)一个指针,指向要读入数据的存放地址D)一个存储区,存放要读的数据项正确答案: C13.9 当顺利执行了文件关闭操作时,fclose函数的返回值是A)-1B)TRUEC)0D)1正确答案: C13.10 如果需要打开一个已经存在的非空文件“Demo”进行修改下面正确的选项是A)fp=fopen("Demo","r");B)fp=fopen("Demo","ab+");C)fp=fopen("Demo","w+");D)fp=fopen("Demo","r+");正确答案: D13.11 若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是A)fopen("A:\user\abc.txt","r")B)fopen("A:\\user\\abc.txt","rt+")C)fopen("A:\user\abc.txt","rb")D)fopen("A:\user\abc.txt","w")正确答案: B13.12 fwrite函数的一般调用形式是A)fwrite(buffer,count,size,fp);B)fwrite(fp,size,count,buffer);C)fwrite(fp,count,size,buffer);D)fwrite(buffer,size,count,fp);正确答案: D13.13 C语言中,文件组成的基本单位为A)记录B)数据行C)数据块D)字符序列正确答案: D13.14 C 语言中,系统的标准输入文件是指A)键盘B)显示器C)软盘D)硬盘正确答案: A13.15 有以下程序#includemain(){ FILE *fp; int i=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n); printf("%d %d\n",k,n);fclose(fp);}程序运行后的输出结果是A)20 30B)20 50C)30 50D)30 20正确答案: A13.16 阅读以下程序及对程序功能的描述,其中正确的描述是#includemain(){ FILE *in,*out;char ch,infile[10],outfile[10];printf("Enter the infile name:\n");scanf("%s",infile);printf("Enter the outfile name:\n");scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL){ printf("cannot open infile\n");exit(0);}if((out=fopen(outfile,"w"))==NULL){ printf("cannot open outfile\n");exit(0);}while(! feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}A)程序完成将磁盘文件的信息在屏幕上显示的功能B)程序完成将两个磁盘文件合二为一的功能C)程序完成将一个磁盘文件复制到另一个磁盘文件中D)程序完成将两个磁盘文件合并并在屏幕上输出正确答案: C13.17 下面的程序执行后,文件test中的内容是#includevoid fun(char *fname,char *st){ FILE *myf; int i;myf=fopen(fname,"w" );for(i=0;ifclose(myf);}main(){ fun("test","new world"); fun("test","hello,");} A)hello, B)new worldhello,C)new worldD)hello, rld正确答案: A13.18 假定当前盘符下有两个文本文件,如下文件名a1.txt a2.txt内容123# 321#则下面程序段执行后的结果为#include "stdio.h"void fc(FILE *p){ char c;while((c=fgetc(p))!=′#′)putchar(C);}main(){ FILE *fp;fp=fopen("a1.txt","r");fc(fp);fclose(fp);fp=fopen("a2.txt","r");fc(fp);fclose(fp);putchar(′\n′);}A)123321B)123C)321D)以上答案都不正确正确答案: A13.19 阅读下面程序,程序实现的功能是(a123.txt在当前盘符下已经存在)#include "stdio.h"void main(){ FILE *fp;int a[10],*p=a;fp=fopen("a123.txt","w");while(strlen(gets(p))>0 ){ fputs(a,fp);fputs("\n",fp);}fclose(fp);}A)从键盘输入若干行字符,按行号倒序写入文本文件a123.txt 中B)从键盘输入若干行字符,取前2行写入文本文件a123.txt中C)从键盘输入若干行字符,第一行写入文本文件a123.txt中D)从键盘输入若干行字符,依次写入文本文件a123.txt中正确答案: D13.20 阅读下面程序,此程序的功能为#include "stdio.h"main(int argc,char *argv[]){ FILE *p1,*p2;int c;p1=fopen(argv[1],"r");p2=fopen(argv[2],"a");c=fseek(p2,0L,2);while((c=fgetc(p1))!=EOF)fputc(c,p2);fclose(p1);fclose(p2);}A)实现将p1打开的文件中的内容复制到p2打开的文件B)实现将p2打开的文件中的内容复制到p1打开的文件C)实现将p1打开的文件中的内容追加到p2打开的文件内容之后D)实现将p2打开的文件中的内容追加到p1打开的文件内容之后正确答案: C二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
C语言基础知识答案
29 C 30 B 31 A 32 A 33 B 34 B 35 A 36 D 37 B 38 B
二填空题
10 72k *k3*x t4int * *t5(1)s=p+3;(2)s=s-2(3)66(4)*(s+1)(5)4
16 A 17 D 18 B 19 C C 27 D 28 B
29 D 30 A 31 C 32 A 33 D 34 D 35 B 36A 37 D 38 C 39 C 40C 41C
42B 43A
二填空题
1IJKLEFGHABCD23394752661371 3 6879(double*)
第一章C语言基础知识
一选择题
1 B 2 DBD 3 BE 4 A 5 B 6 C 7 B 8 C 9 D 10 BDD 11 D 12 D 13 C
14 AC 15 A 16 CC 17 D 18 A 19 AAA 20 D 21 D 22 BDDBB 23 A 24 D
25 D 26 A 27 C 28 A 29 B 30 CG 31C 32 DDBA 33 C 34 D 35 D 36 D
16 D 17 D 18 B 19 D 20 B 21 C22 A 23 A 24 A 25 C 26 A 27 B 28 D 29B
30 B 31D
二填空题
12223435 2410 4516 6 struct STRU 7 ex 8 sizeof(struct node)
9 b->day, (*b).day 10 3,3 11 struct link *next 12 struct node * 13 struct STRU*
STC单片机C语言程序设计 第13章 STC单片机C语言指针
通用指针
13-2目录下,在Keil μVision5集成开发环境下打开该设计。
进入调试器模式,查看Disassembly窗口内的反汇编代码,代码 中加入了注释,帮助读者进行分析。
代码清单13-1(2) Disassembly窗口内的反汇编代码清单
2: {
--未指定存储区域的通用指针
3: int a=50,*p1; 750800 MOV 0x08,#0x00
注:换句话,我们可以这样理解,在内存中开辟3个字节,用于表示指针这个数 据类型,这个空间保存的内容,等于p1,也等于变量a的地址,因此p1=&a。
--未指定存储区域的通用指针
6: p1=&a; C:0x0018 750A00 MOV C:0x001B 750B00 MOV C:0x001E 750C08 MOV
STC单片机C语言指针
主 讲:何宾 Email:hebin@
2016.03
C51编译器中指针的分类
Cx51编译器支持使用字符“*”声明变量指针。C51编译器可 以执行在标准C中所提供的所有操作。但是,由于8051独一无二的
结构以及特点,C51编译器提供两种不同类型的指针,即:通用指
0x0002。这是因为在程序代码中,设置将P2设置为指向数组b的
首地址,并且数组b的第一个数据元素的值为1。形式化表示为: (p2)=1=b[0]=*p2
--未指定存储区域的通用指针
换句话可以这样说,p2的内容就通过指针*p2表示。
注:由于指针*p2为int类型的,所以p2的内容为int型(2个字节的数据内容)。
通用指针
--未指定存储区域的通用指针
读者可以进入到本书所提供资料的stc_program_example\例 子13-3目录下,在Keil μVision5集成开发环境下打开该设计,并进 入调试器模式,按F5运行程序。在UART #1窗口界面中,给出输出 信息的格式。下面对该程序进行详细的分析
第13章 动态链接库
第15页,共31页。
第13章 动态链接库
MFC中的DLLa、Non-MFC DLL:指的是不用MFC的类库结构,直接用C语言写的DLL,其输出的函数一 般用的是标准C接口,并能被非MFC的应用程序所调用。
第16页,共31页。
第13章 动态链接库
VC6支持自动生成的Win32 DLL和MFC AppWizard DLL,其中自动生成的Win32 DLL共包括三种DLL 工程。从菜单项,选择对话框中的Projects选项卡,图13.1
承类的对象指针。Extension DLL使用MFC的动态连接版本所创建的,并且它只被用MFC类库所编写的应用程 序所调用。
第20页,共31页。
第13章 动态链接库
第21页,共31页。
第13章 动态链接库
系统运行一个调用DLL的程序时,将在以下位置查找
该DLL: 1.包含EXE文件的目录 2.进程的当前工作目录
束进程或者线程,不会调用DLLMain。
第7页,共31页。
第13章 动态链接库
MFC AppWizard 生成的Regular DLL在后面的章节会有介绍,这里只讨论它的入/出口点问题。 每个Regular DLL都有MFC AppWizard 自动生成的CWinApp派生类的对象,与其它MFC应用程序一
DLL或API函数,Declare语句是Windows所必需的,这一点很重要。并且在32位版的VB中动态链接库中的函数
对条件是很敏感的。
第23页,共31页。
第13章 动态链接库
DLL的调试有很多中方法,但都需要把DLL工程生成的后缀名为.dll的文件放在执行它的应用程序可以
找到的目录中。这可以有很多中方法,手工也行的。
C语言上机实验
实验一(第1章实验)实验目的:1.掌握运行C语言程序的全过程。
2.熟悉编译环境。
3.初步熟悉C语言程序的语法规定。
4.了解简单函数的使用方法。
实验内容:1.编程且上机运行:求3个整数的和。
2.编程且上机运行:求2个数的和、差、积和商。
3.编程且上机运行:输入3个数,求最大值。
4.编程且上机运行:输入圆的半径,求圆的面积和周长。
5.在屏幕上输出:“hello world!”实验结果:实验二(第3章实验)1.实验目的:理解C语言的类型系统。
实验内容:写程序测试数据-2在类型char,int,unsigned int,long int,unsigned long int 中存储情况。
实验过程:实验结果:参见各种类型的存储实现描述。
2.实验目的:了解混合类型计算中类型的转换规则。
实验内容:写程序测试多种类型数据一起运算时类型的转换及表达式结果的类型。
注意unsigned int和int数据运算时类型转换的方向。
实验过程:/** 类型转换问题* 试问下面两个表达式等价吗?*/#include <stdio.h>#include <stdlib.h>int main() {unsigned int ui,uj;ui = 1;uj = 2;if (ui < uj)printf("\n%u < %u is true !\n", ui, uj);elseprintf("\n%u < %u is false !\n", ui, uj);if (ui - uj < 0)printf("\n%u - %u <0 is true !\n", ui, uj);elseprintf("\n%u - %u <0 is false !\n", ui, uj);system("pause");return 0;}实验结果:参见类型转换规则。
全国计算机等级考试二级教程:C语言程序设计(2013年版)
《全国计算机等级考试二级教程:C语言程序设计(2013年版)》根据教育部考试中心制订的《全国计算机等级考试二级C语言程序设计考试大纲(2013年版)》的要求而编写,是教育部考试中心组织编写的计算机等级考试系列教程之一。
《全国计算机等级考试二级教程:C语言程序设计(2013年版)》主要内容包括:C语言的各种数据类型和运算符,各种表达式,语句结构,函数及库函数,地址和指针,数组,字符串,变量的作用域及存储类,结构体及共用体,文件等。
《全国计算机等级考试二级教程——C语言程序设计(2013年版)》内容精练,结构合理,便于自学,对读者可能遇到的难点做了十分系统、清楚和详细的阐述,极大地减轻了读者学习C语言的困难,是应试人员考前必备的教材,也可作为普通高等学校的教材。
目录第1章程序设计基本概念1.1 程序和程序设计1.1.1 C程序1.1.2 程序设计1.2 算法1.3 结构化程序设计和模块化结构1.3.1 结构化程序1.3.2 模块化结构习题第2章 C程序设计的初步知识2.1 简单C语言程序的构成和格式2.2 标识符、常量和变量2.2.1 标识符2.2.2 常量2.2.3 符号常量2.2.4 变量2.3 整型数据2.3.1 整型常量2.3.2 整型变量2.3.3 整型数据的分类2.3.4 整数在内存中的存储形式2.4 实型数据2.4.1 实型常量2.4.2 实型变量2.5 算术表达式2.5.1 基本的算术运算符2.5.2 运算符的优先级、结合性和算术表达式2.5.3 强制类型转换表达式2.6 赋值表达式2.6 赋值运算符和赋值表达式2.6.2 复合赋值表达式2 6.3 赋值运算中的类型转换2.7 自加、自减运算符和逗号运算符2.7.1 自加运算符“++”和自减运算符2.7.2 逗号运算符和逗号表达式习题第3章顺序结构3.1 赋值语句3.2 数据输出3.2.1 printf函数的一般调用形式3.2.2 printf函数中常用的格式说明3.2.3 使用printf函数时的注意事项3.3 数据输入3.3.1 scanf函数的一般调用形式3.3.2 scanf函数中常用的格式说明3.3.3 通过scanf函数从键盘输入数据3.4 复合语句和空语句3.4.1 复合语句3.4.2 空语句3.5 程序举例习题第4章选择结构4.1 关系运算和逻辑运算4.1.1 C语言的逻辑值4.1.2 关系运算符和关系表达式4.1.3 逻辑运算符和逻辑表达式4.2 if语句和用if语句构成的选择结构4 2.1 “语句4 2.2 嵌套的if语句4.3 条件表达式构成的选择结构4.4 swilch语句以及用swltch语句和break语句构成的选择结构4.4.1 switch语句4.4.2 switch语句的执行过程4.4.3 在switch语句体中使用break语句4.5 语句标号和goto语句4.5.1 语句标号4.5.2 goto语句习题第5章循环结构5.1 while语句和用while语句构成的循环结构5.1.1 while循环的一般形式5.1.2 while循环的执行过程5.2 do-while语句和用do -while语句构成的循环结构5.2.1 do-while语句构成的循环结构5.2.2 do-while循环的执行过程5.3 for语句和用for语句构成的循环结构5.3.1 for语句构成的循环结构5.3.2 for循环的执行过程5.3.3 有关for语句的说明5.4 循环结构的嵌套5.5 break和continue语句在循环体中的作用5.5.1 break语句5.5.2 continue语句5.6 程序举例习题第6章字符型数据6.1 字符型常量6.1.1 字符常量6.1.2 转义字符常量6.1.3 字符串常量6.1.4 可对字符量进行的运算6.2 字符变量6.3 字符的输入和输出6.3.1 调用printf和scanf函数输出和输入字符6.3.2 调用putchar和getchar函数输出和输入字符6.4 程序举例习题第7章函数7.1 库函数7.2 函数的定义和返回值7.2.1 函数定义的语法7.2.2 函数的返回值7.3 函数的调用7.3.1 函数的两种调用方式7.3.2 函数调用时的语法要求7.4 函数的说明7.4.1 函数说明的形式7.4.2 函数说明的位置7.5 调用函数和被调用函数之间的数据传递7.6 程序举例习题第8章地址和指针8.1 变量的地址和指针8.2 指针变量的定义和指针变量的基类型8.3 给指针变量赋值8.3.1 给指针变量赋地址值8.3.2 给指针变量赋“空”值8.4 对指针变量的操作8.4.1 通过指针来引用一个存储单元8.4.2 移动指针8.4.3 指针比较8.5 函数之间地址值的传递8.5.1 形参为指针变量时实参和形参之间的数据传递8.5.2 通过传送地址值在被调用函数中直接改变调用函数中的变量的值8.5.3 函数返回地址值第9章数组第10章字符串第11章对函数的进一步讨论第12章 C语言中用户标识符的作用域和存储类第13章编译预处理和动态存储分配第14章结构体、共用体和用户定义类型第15章位运算第16章文件第17章考试指导附录1 C语言的关键字附录2 双目算术运算中两边运算量类型转换规律附录3 运算符的优先级和结合性附录4 常用字符与ASCII代码对照表附录5 库函数附录6 全国计算机等级考试二级C语言程序设计考试大纲(2013年版)附录7 全国计算机等级考试二级C语言程序设计样卷及参考答案。
第13章 图形处理
• 画弧函数
void far arc(int x,int y,int stangle,int endangle,int radius); 函数功能:以(x,y)为圆心, radius为半径,从stangle开始到 endangle结束,以画笔颜色画一圆弧。 上一页
– 填充模式和颜色函数
void far setfillstyle(int pattern,int color); 函数功能:用color颜色和pattern模式对图形进行填充;其中 color是在当前图形模式下有效的颜色值。
首页 上一页
– 获取填充模式和颜色函数
void far fillsettings(struct fillsettingstype far *fillinfo) 函数功能:得到当前的填充模式和颜色存放在fillinfo所指示 变量中。
上一页
• 颜色控制函数
– 设置前景颜色函数
void far setcolor(int color); 函数功能:设置当前画笔颜色为color所代表的颜色。
首页 上一页
– 屏幕坐标系
屏幕坐标系采用的是笛卡儿坐标系的一个象限:定义屏幕的 左上角为坐标原点,x轴向右延伸,y轴向下延伸,其中x、y都是 大于等于0的整数值。如下图所示:
将笛卡儿坐标系转换为屏幕坐标系:设图形上一点的笛卡儿 坐标为(X,Y),那么它对应的屏幕坐标为: (X+屏幕宽度的一半,屏幕高度的一半-Y) 上一页
• 屏幕和视口管理函数
– 清屏函数
void far clearevice(void); 函数功能:清除屏幕,并将当前画笔位置重新设置为(0,0)。 – 设置当前图形窗口函数 void far setviewport(int x1,int y2,int x2,int y2,int clip); 函数功能:开辟一个新的图形窗口,窗口的左上角是 (x1,y1),右下角是(x2,y2)。Clip的值为非0时,超出窗口的 部分被自动切除,clip的值为0时,不剪切。
c语言从入门到精通__第13章
13.1.1 文件类型
例如,对于整数12345,在文本文件中存放时,数字“1”,“2”, “3”,“4”,“5”都以字符的形式各占一个字节,每个字节中存 放的是这些字符的ASCII值,所以要占用5个字节的存储空间;而 在二进制文件中存放时,因为是整型数据所以系统分配两个字节 的存储空间,也就是说,整数12345在二进制文件中占用两个字 节。其存放形式如下图: 在文本文件中存储形式:
13.1.2 C如何操作文件——文件指针
在C语言中所有对文件的操作都通过文件指针完成。 我们在前面已经学习过变量的指针,变量的指针指 向该变量的存储空间;但文件的指针不是指向一段 内存空间,而是指向描述有关这个文件的相关信息 的一个文件信息结构体,该结构体定义在stdio.h 头文件中,当然,用户也无需了解有关此结构体的 细节,只要知道如何使用文件指针就可以了,和普 通指针一样,文件指针在使用之前,也必须先进行 声明。
fclose(fp); /*fp是指向要关闭的文件的文件指针*/
13.2.2 文件的关闭——fclose()函数
技 巧:因为保持一个文件的打开状态需要 占用内存空间,所以对文件的操作一般应该 遵循“晚打开,早关闭”的原则,避免无谓 的浪费。
13.2.3 文件结束检测——feof()函数
feof()函数用于检测文件是否结束,既适用 于二进制文件,也适用于文本文件。其一般 使用格式如下:
第13章
文件
文件概述 文件的打开和关闭 文件的顺序读写 文件的随机读写 综合应用——文件操作 跟我上机
第13章
文件
文件概述 文件的打开和关闭 文件的顺序读写 文件的随机读写 综合应用——文件操作概述 文件的打开和关闭 文件的顺序读写 文件的随机读写 综合应用——文件操作 跟我上机
13 文件
2、fseek函数和随机读写 对流式文件可以进行顺序读写,也可以进行随机读写。关键在于 控制文件的位置指针,如果位置指针是按字节位置顺序移动的,就 是顺序读写。如果可以将位置指针按需要移动到任意位置,就可以 实现随机读写。所谓随机读写,是指读写完上一个字符(字节)后, 并不一定要读写其后续的字符(字节),而可以读写文件中任意所 需的字符(字节)。 用fseek函数可以实现改变文件的位置指针。 fseek函数的调用形式为 fseek(文件类型指针,位移量,起始点) “起始点”用0、1或2代替,0代表“文件开始”,1为“当前位 置”, 2为“文件末尾”。 ANSIC标准指定以下的名字: 起始点 名字 用数字代表 文件开始 SEEK_SET 0 文件当前位置 SEEK_CUR 1 文件末尾 SEEK_END 2
说明: 1、打开文件的方式,必须与文件的属性兼容。例如,不能以 "w" 和 "a" 方式打开具有“只读”属性的文件。但可以以任何方式打开 “隐藏”属性文件。 2、 DOS/Windows 中,无“只写”文件属性,一个文件可写,同时意 味着可读。 3、用带 "r" 的方式( "r"、"rb"、"r+"、"rb+")打开文件时,若文 件不存在,则返回NULL指针。一般用以下方式检查是否成功打开: FILE *fp; if ((fp=fopen("file1", "r")) = =NULL ) { printf("cannot open this file\n"); exit(0); } exit(0)是程序返回操作系统。
#ifndef _SIZE_T #define _SIZE_T typedef unsigned size_t; #endif #ifndef NULL #if defined(__TINY__) || defined(__SMALL__) || defined(__MEDIUM__) # define NULL 0 # else # define NULL 0L # endif #endif
13、北工大C语言程序设计内部教学课件。(宋凯老师授课)cha6-point-090701-02x介绍
第六章数据的组织结构---指针类型一、指针类型的概念二、指针与一维数组运算三、动态空间分配四、指针与字符串处理五、指针应用一、指针类型的概念F指针类型是C语言提供的一种特殊的数据类型。
指针类型变量中存放的不是待操作的数据,而是那些待操作数据的存储地址。
F借助它可以灵活地组织具有复杂关系的数据,简化操作过程,提高运行效率。
什么是地址?F地址是用来表示数据在内存中存放位置的一种标识F计算机内存是以字节为单位的一片连续的存储空间,每个字节都有一个编号,这个编号就称为内存地址。
内存地址的特点:Æ地址是连续的;Æ通常用二进制表示。
为直观起见,在高级语言中,可以用十进制表示。
变量与地址的关系每个变量在内存中都占有一定字节数的存储单元。
int a, b; float x;......1012 1013 1015 1016 1201 1202 1203 1204变量的地址是指该变量所占存储单元的首字节地址。
可以使用运算符&获取变量的地址: &a、&b、&x。
变量的内容是指在内存的存储单元中存放的数据。
指针型变量什么是指针变量保存内存单元地址的变量为内存中的数据提供了又一种访问手段指针变量的定义<数据类型> *<指针型变量名>;int*p;声明p 用于保存整型数据的地址double *q;声明q 用于保存双精度数据的地址 变量p, q本身各占用4个字节(地址需用的空间)指针变量本身的数据长度是由系统决定的。
指针型变量的引用指针部分的引用格式:<指针型变量>指针所指变量部分的引用格式:*<指针型变量>例如:*intptr= 30;例如:scanf(“%d”, intptr);printf(“%d”, *intptr);指针变量示意图10121012 1013ptr 20021012 1013ptr 2002ptrint a ;int *ptr ;操作方式aa=123123a直接操作aptr *ptr=123123aptr间接操作ptr= &a间接访问提供了另一种访问内存数据的手段不同指针类型操作示意图:intdata1 = 12 , *ptr1;float data2 = 56.8, *ptr2;1256.810001002200120031000 •1002 •ptr1ptr2ptr1=&data1ptr2=&data2data1data2指针变量的特性有2点:(1)变量的值为地址值;(2)变量的类型为该指针所指向的实体的类型。
C13 VC++2010程序测试与调试
语 言 第 13 章 VC ++ 2 0 1 0 程 序 测 试 与 调 试
C语言程序设计
第13章
VC++2010程序测试与调试
Copyright@ Henan Polytechnic University
C C
语 言 第 13 章 VC ++ 2 0 1 0 程 序 测 试 与 调 试
第13章 VC++ 2010程序测试与调试
语 言 第 13 章 VC ++ 2 0 来自 0 程 序 测 试 与 调 试
Copyright@ Henan Polytechnic University
C C
基本调试操作
设置断点与删除断点
按【Alt+F9】组合键,或选择 调试工具栏最右侧的窗口 按 钮的下拉菜单断点命令,或单 击下面输出窗口的“断点”选 项,都可以打开断点窗口。 在断点窗口右单击断点行,可 以为断点设定更多的信息,如 条件、命中次数、命中条件等。
Copyright@ Henan Polytechnic University
C C
语 言 第 13 章 VC ++ 2 0 1 0 程 序 测 试 与 调 试
常用调试命令功能表
调试工具栏如下图所示,其中停止调试按钮和跳出按钮 在开始调试之前是灰色的,不可用。常用调试命令按钮功 能如下表所示。
按 启动调试 钮 快捷键 Ctrl+F5 F5 功 能
本章要点
黑盒测试和白盒测试
C语言程序常见错误及分类 VC++
2010的基本调试操作
在源程序中添加调试代码
本章难点
为断点设定条件等信息 通过调试找到语义错误
第13章.编程语言接口
Page 17
13.4.1 存取子程序 — 存取子程序例 存取子程序— 存取子程序例1
例1:获取模块端口列表 : 写一个用户自定义系统任务$get_ports,用于寻找模块中的所有input, output和inout端口的完整层次名称,并且计算input,output和inout端口的 数目。这个用户自定义系统任务在Verilog中以$get_ports (“<hierarchical _ module_name>”)的形式调用。文件get_ports.c中描述了实现任务 $get_ports $get_ports的用户自定义C子程序get_ports,如下例。 C get_ports
Page 7
13.2.2 PLI任务的调用 任务的调用
一旦用户自定义任务被连接到Verilog仿真器中,它就能像任何其他Verilog 系统任务那样,通过关键字$hello_verilog来调用。文件hello.v中定义了一 个名为hello_top的Verilog模块,该模块调用了用户自定义任务 $hello_verilog,如下所示:
Page 4
13.1 PLI的使用 的使用
由于PLI允许用户自己定义实用工具来存取(读、写或修改)表示设计的内部数据结 构,因此它具有强大的能力,可以对Verilog语言的功能进行扩展。PLI具有很多种 用途,如下所示: 1. PLI可用于定义其他系统任务和函数。典型的例子有监控任务、激励任务、调试 任务和复杂操作等,这些任务和操作难以用标准的Verilog结构实现。 2. 一些应用软件,比如翻译器和延迟计算工具,可以用PLI编写。 3. PLI可用于提取设计信息,比如层次、互连、扇出及特定类型逻辑元件的数目等。 4. PLI可用于编写专用或自定义的输出显示子程序。波形观察器可用它生成波形、 逻辑互连、源代码浏览器和层次信息。 5. 为仿真提供激励的子程序也可以用PLI编写。激励可以自动生成或者从其他形式 的激励转换而来。 6. 普通的基于Verilog的应用软件可以用PLI子程序编写。这种软件可以与任何 Verilog仿真器一起工作,因为PLI接口提供了统一的存取方式。
精品-清华大学C语言课件 第13章01 结构体指针
【例13.2】 使用指向运算符引用结构体对象成员。 在本实例中,定义结构体变量但不为其进行初始化操作,使用指针指向结构体变量并为其成员进行赋值操作。
#include<stdio.h> #include<string.h>
struct Student/*学生结构*/ { char cName[20];/*姓名*/ int iNumber;/*学号*/ char cSex[3];/*性别*/ int iGrade;/*年级*/ }student;/*定义变量*/
pStruct ->成员名;
这种方法使用的是指向运算符,例如使用指向运算符引用一个变量的成员:
pStruct->iNumber=12061212;
假如student为结构体变量,pStruct为指向结构体变量的指针,可以看出以下三种形式的效果是等价的:
student.成员名 (*pStruct).成员名 pStruct->成员名
Display(student.fScore[0]);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
含
义
为输入打开一个文本文件 为输出打开一个文本文件 向文本文件尾添加数据 为输入打开一个二进制文件 为输出打开一个二进制文件 向二进制文件尾添加数据 为读写打开一个文本文件
“w+” (读写)
第13章 文 件
13.2
C 程 序 设 计
文件类型指针
有了结构体FILE类型之后,可以用它来定义若干个FILE类型的变量,以便
存放若干个文件的信息。例如,可以定义以下FILE类型的数组: FILE f[5]; 定义了一个结构体数组f,它有5个元素,可以用来存放5个文件的信息。 可以定义文件型指针变量。如: FILE *fp; fp是一个指向FILE类型结构体的指针变量。可以使fp指向某一个文件的结 构体变量,从而通过该结构体变量中的文件信息能够访问该文件。也就是 说,通过文件指针变量能够找到与它相关的文件。如果有n个文件,一般 应设n个指针变量(指向FILE类型结构体的指针变量),使它们分别指向n个 文件(确切地说指向存放该文件信息的结构体变量),以实现对文件的访问。
第13章 文 件
13.4
C 程 序 设 计
13.4.1
文件的读写
fputc函数和fgetc函数(putc函数和getc函数)
3.
fputc和fgetc函数使用举例
例13.2 将一个磁盘文件中的信息复制到另一个磁盘文件中。
#include <stdio.h> main( ) { FILE*in,*out; char ch,infile[10],outfile[10]; printf("Enter the infile name:\n"); scanf("%s",infile); printf("Enter the outfile name:\n"); scanf("%s",outfile); if((in=fopen(infile,"r"))==NULL) { printf("cannot open infile\n"); exit(0); } if((out=fopen(outfile,"w"))==NULL) { printf("cannot open outfile\n"); exit(0); } while(!feof(in)) fputc(fgetc(in),out); fclose(in); fclose(out); }
它表示要打开名字为a1的文件,使用文件方式为“读入” (r代表read,即 读入),fopen函数带回指向a1文件的指针并赋给fp,这样fp就和文件a1相 联系了,或者说,fp指向a1文件。可以看出,在打开一个文件时,通知给 编译系统以下3个信息: ①需要打开的文件名,也就是准备访问的文件的名字。 ②使用文件的方式(“读”还是“写”等)。 ③让哪一个指针变量指向被打开的文件。
“a+” (读写) “rb+” (读写) “wb+” (读写) “ab+” (读写)
为读写建立一个新的文本文件
为读写打开一个文本文件 为读写打开一个二进制文件 为读写建立一个新的二进制文件 为读写打开一个二进制文件
第13章 文 件
13.3
C 程 序 设 计
文件的打开与关闭
13.3.2 文件的关闭(fclose函数) 在使用完一个文件后应该关闭它,以防止它再被误用。“关闭”就是使文 件指针变量不指向该文件,也就是文件指针变量与文件“脱钩”,此后不能 再通过该指针对原来与其相联系的文件进行读写操作。除非再次打开,使该 指针变量重新指向该文件。 用fclose函数关闭文件。fclose函数调用的一般形式为 fclose(文件指针); 例如: fclose(fp); 前面我们曾把打开文件(用fopen函数)时所带回的指针赋给了fp,今通过fp 把该文件关闭。即fp不再指向该文件。 应该养成在程序终止之前关闭所有文件的习惯,如果不关闭文件将会丢失 数据。因为,如前所述,在向文件写数据时,是先将数据输到缓冲区,待缓 冲区充满后才正式输出给文件。如果当数据未充满缓冲区而程序结束运行, 就会将缓冲区中的数据丢失。用fclose函数关闭文件,可以避免这个问题, 它先把缓冲区中的数据输出到磁盘文件,然后才释放文件指针变量。 fclose函数也带回一个值,当顺利地执行了关闭操作,则返回值为0;否则 返回EOF(-1)。
第13章 文 件
13.4
C 程 序 设 计
13.4.1 2. fgetc函数
文件的读写
fputc函数和fgetc函数(putc函数和getc函数)
从指定的文件读入一个字符,该文件必须是以读或读写方式打开的。 fgetc函数的调用形式为 ch=fgetc(fp); fp为文件型指针变量,ch为字符变量。fgetc函数带回一个字符,赋给ch。 如果在执行fgetc函数读字符时遇到文件结束符,函数返回一个文件结束标志EOF(-1)。 如果想从一个磁盘文件顺序读入字符并在屏幕上显示出来,可以: ch=fgetc(fp); while(ch!=EOF) { putchar(ch); ch=fgetc(fp); } ANSI C提供一个feof函数来判断文件是否真的结束。feof(fp)用来测试fp所指向的文件当前状 态是否“文件结束”。如果是文件结束,函数feof(fp)的值为1(真),否则为0(假)。 如果想顺序读入一个二进制文件中的数据,可以用 while(!feof(fp)) { c=fgetc(fp); … } 这种方法也适用于文本文件。
第13章 文 件
13.3
13.3.1
文件的打开与关闭
打开文件时,位置指针移到文件 末尾。
文件的打开(fopen函数)
C 程 序 设 计
fopen函数的调用方式通常为 FILE*fp; fp=fopen(文件名,使用文件方式); 表13-1 使用文件方式如 文件使用方式 表13-1所示 “r”(只读)
第13章 文 件
13.3
C 程 序 设 计
13.3.1
文件的打开与关闭
和其他高级语言一样,对文件读写之前应该“打开”该文件,在使用结束之 后应关闭该文件。 文件的打开(fopen函数) )函数来实现打开文件。 ANSI C规定了标准输入输出函数库,用fopen( fopen函数的调用方式通常为 FILE*fp; fp=fopen(文件名,使用文件方式); 例如: fp=fopen("a1","r");
在C语言中,没有输入输出语句,对文件的读写都是用库函数来实现的。 ANSI规定了标准输入输出函数,用它们对文件进行读写。 本章只介绍ANSI C规定的文件系统以及对它的读写。
第13章 文 件
13.2
C 程 序 设 计
文件类型指针
缓冲文件系统中,关键的概念是“文件指针”。每个被使用的文件
都在内存中开辟一个区,用来存放文件的有关信息(如文件的名字、 文件状态及文件当前位置等)。这些信息是保存在一个结构体变量 中的。该结构体类型是由系统定义的,取名为FILE。Turbo C在 stdio.h文件中有以下的文件类型声明:
介质上数据的集合。一批数据是以文件的形式存放在外部介质(如磁盘)上 的。操作系统是以文件为单位对数据进行管理的,也就是说,如果想找存 在外部介质上的数据,必须先按文件名找到所指定的文件,然后再从该文 件中读取数据。要向外部介质上存储数据也必须先建立一个文件(以文件 名标识),才能向它输出数据。 以前各章中所用到的输入和输出,都是以终端为对象的,即从终端键盘输入 数据,运行结果输出到终端上。从操作系统的角度看,每一个与主机相联的输 入输出设备都看作是一个文件。例如,终端键盘是输入文件,显示屏和打印机 是输出文件。 在程序运行时,常常需要将一些数据(运行的最终结果或中间数据)输出到磁 盘上存放起来,以后需要时再从磁盘中输入到计 件
13.4
C 程 序 设 计
13.4.1 1. fputc函数
文件的读写
文件打开之后,就可以对它进行读写了。常用的读写函数如下所述。 fputc函数和fgetc函数(putc函数和getc函数)
把一个字符写到磁盘文件上去。其一般调用形式为 fputc(ch,fp); 其中ch是要输出的字符,它可以是一个字符常量,也可以是一个字符 变量。fp是文件指针变量。 fputc(ch,fp)函数的作用是将字符(ch的值)输出到fp所指向的文件中去。 fputc函数也带回一个值:如果输出成功则返回值就是输出的字符;如果 输出失败,则返回一个EOF(-1)。 EOF是在stdio.h文件中定义的符号常量,值为-1。
第13章
文
件
13.1 13.2 13.3 13.4 13.5 13.6 13.7
C文件概述 文件类型指针 文件的打开与关闭 文件的读写 文件的定位 出错的检测 文件输入输出小结
第13章 文 件
13.1
C 程 序 设 计
C文件概述
文件(file)是程序设计中一个重要的概念。所谓“文件”一般指存储在外部
第13章 文 件
13.1
C 程 序 设 计
C文件概述
C语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)的数
据顺序组成。根据数据的组织形式,可分为ASCII文件和二进制文件。 ASCII文件又称文本(text)文件,它的每一个字节放一个ASCII代码,代表 一个字符。 二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上 存放。 如果有一个整数10000,在内存中占2个字节,如果按ASCII码形式输出, 则占5个字节,而按二进制形式输出,在磁盘上只占2个字节,见图13-1。 用ASCII码形式输出与字符一一对应,一个字节代表一个字符,一个字节 代表一个字符,因而便于对字符进行逐个处理,也便于输出字符。但一般 占存储空间较多,而且要花费转换时间(二进制形式与ASCII码间的转换)。 用二进制形式输出数值,可以节省外存空间和转换时间,但一个字节并不 对应一个字符,不能直接输出字符形式。一般中间结果数据需要暂时保存 在外存上以后又需要输入到内存的,常用二进制文件保存。