浙大c语言8-5使用函数 c语言第八章函数

c语言中怎么调用自己定义的函数?在使用一个函数之前必须先对他进行声明:
//void B();声明B函数的存在 。void A(){B();//非法 , 程序执行到此时并不知道B函数的存在 。}void B(){}
或者
#include stdio.h
#include stdlib.h
#include math.h
int fa(int n)
{
int a;
for(a=2;a=sqrt(n*1.0),n%a!=0;a);
if(asqrt(n*1.0))
return(1);
else
return(0);
}
void main( )
{
【浙大c语言8-5使用函数 c语言第八章函数】int n,q;
scanf("%d",n);
扩展资料
#include stdio.h
#include stdlib.h
#include math.h
int fa(int n)
{
int a;
for(a=2;a=sqrt(n*1.0),n%a!=0;a);
if(asqrt(n*1.0))
return(1);
else
return(0);
}
void main( )
{
int n,q;
scanf("%d",n);
if(fa(n)==1)
printf("n");
else
printf("y");
system("pause");
exit(0);
}
参考资料:百度百科 - C语言函数
C语言五个常用函数编写一个程序,使用的函数不限,完成的功能也不限#include stdio.h
#include string.h
int main(void)
{
int num;
char from[10] = "NONONO";
char to[10];
char toget[20];
strcmp(to,from);
num = strlen(from);
strcan(toget,to);
memeset(to,0,sizeof(to));
printf("OK");
getchar();
return 0;
}
c常用的函数太多了 。。
c语言中用函数做参数怎么用数组元素就是下标变量浙大c语言8-5使用函数,它与普通变量并无区别 。因此它作为函数实参使用与普通变量是完全相同浙大c语言8-5使用函数的浙大c语言8-5使用函数,在发生函数调用时 , 把作为实参的数组元素的值传送给形参 , 实现单向的值传送 。【例5-4】说明浙大c语言8-5使用函数了这种情况 。
【例8-7】判别一个整数数组中各元素的值,若大于0 则输出该值,若小于等于0则输出0值 。编程如下浙大c语言8-5使用函数:#include stdio.hvoid nzp(int v){if(v0)printf("%d ",v);elseprintf("%d ",0);}int main(void){int a[5],i;printf("input 5 numbers\n");for(i=0;i5;i){scanf("%d",a[i]);nzp(a[i]);}return 0;}
本程序中首先定义一个无返回值函数nzp,并说明其形参v为整型变量 。在函数体中根据v值输出相应的结果 。在main函数中用一个for语句输入数组各元素,每输入一个就以该元素作实参调用一次nzp函数,即把a[i]的值传送给形参v,供nzp函数使用 。
数组名作为函数参数
用数组名作函数参数与用数组元素作实参有几点不同 。
1) 用数组元素作实参时 , 只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的 。因此,并不要求函数的形参也是下标变量 。换句话说,对数组元素的处理是按普通变量对待的 。用数组名作函数参数时,则要求形参和相对应的实参都必须是类型相同的数组,都必须有明确的数组说明 。当形参和实参二者不一致时,即会发生错误 。
2) 在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元 。在函数调用时发生的值传送是把实参变量的值赋予形参变量 。在用数组名作函数参数时,不是进行值的传送,即不是把实参数组的每一个元素的值都赋予形参数组的各个元素 。因为实际上形参数组并不存在,编译系统不为形参数组分配内存 。那么 , 数据的传送是如何实现的呢?在我们曾介绍过,数组名就是数组的首地址 。因此在数组名作函数参数时所进行的传送只是地址的传送 , 也就是说把实参数组的首地址赋予形参数组名 。形参数组名取得该首地址之后,也就等于有了实在的数组 。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间 。
上图说明了这种情形 。图中设a为实参数组,类型为整型 。a占有以2000为首地址的一块内存区 。b为形参数组名 。当发生函数调用时,进行地址传送,把实参数组a的首地址传送给形参数组名b,于是b也取得该地址2000 。于是a,b两数组共同占有以2000为首地址的一段连续内存单元 。从图中还可以看出a和b下标相同的元素实际上也占相同的两个内存单元(整型数组每个元素占二字节) 。例如a[0]和b[0]都占用2000和2001单元,当然a[0]等于b[0] 。类推则有a[i]等于b[i] 。
【例8-8】数组a中存放了一个学生5门课程的成绩,求平均成绩 。#include stdio.hfloat aver(float a[5]){int i;float av,s=a[0];for(i=1;i5;i)s=s a[i];av=s/5;return av;}int main(void){float sco[5],av;int i;printf("\ninput 5 scores:\n");for(i=0;i5;i)scanf("%f",sco[i]);av=aver(sco);printf("average score is %5.2f",av);return 0;}
本程序首先定义了一个实型函数aver,有一个形参为实型数组a , 长度为5 。在函数aver中 , 把各元素值相加求出平均值,返回给主函数 。主函数main 中首先完成数组sco的输入,然后以sco作为实参调用aver函数 , 函数返回值送av,最后输出av值 。从运行情况可以看出 , 程序实现了所要求的功能 。
3) 前面已经讨论过,在变量作函数参数时,所进行的值传送是单向的 。即只能从实参传向形参 , 不能从形参传回实参 。形参的初值和实参相同,而形参的值发生改变后,实参并不变化 , 两者的终值是不同的 。而当用数组名作函数参数时,情况则不同 。由于实际上形参和实参为同一数组,因此当形参数组发生变化时 , 实参数组也随之变化 。当然这种情况不能理解为发生了“双向”的值传递 。但从实际情况来看,调用函数之后实参数组的值将由于形参数组值的变化而变化 。为了说明这种情况,把【例5.4】改为【例5.6】的形式 。
【例8-9】题目同【例8.7】 。改用数组名作函数参数 。#include stdio.hvoid nzp(int a[5]){int i;printf("\nvalues of array a are:\n");for(i=0;i5;i){if(a[i]0) a[i]=0;printf("%d ",a[i]);}}int main(void){int b[5],i;printf("\ninput 5 numbers:\n");for(i=0;i5;i)scanf("%d",b[i]);printf("initial values of array b are:\n");for(i=0;i5;i)printf("%d ",b[i]);nzp(b);printf("\nlast values of array b are:\n");for(i=0;i5;i)printf("%d ",b[i]);return 0;}
本程序中函数nzp的形参为整数组a , 长度为5 。主函数中实参数组b也为整型,长度也为5 。在主函数中首先输入数组b的值,然后输出数组b的初始值 。然后以数组名b为实参调用nzp函数 。在nzp中,按要求把负值单元清0,并输出形参数组a的值 。返回主函数之后,再次输出数组b的值 。从运行结果可以看出 , 数组b的初值和终值是不同的,数组b的终值和数组a是相同的 。这说明实参形参为同一数组,它们的值同时得以改变 。
用数组名作为函数参数时还应注意以下几点:
①形参数组和实参数组的类型必须一致,否则将引起错误 。
②形参数组和实参数组的长度可以不相同 , 因为在调用时 , 只传送首地址而不检查形参数组的长度 。当形参数组的长度与实参数组不一致时,虽不至于出现语法错误(编译能通过),但程序执行结果将与实际不符,这是应予以注意的 。
【例8.10】如把例8.9修改如下:#include stdio.hvoid nzp(int a[8]){int i;printf("\nvalues of array aare:\n");for(i=0;i8;i){if(a[i]0)a[i]=0;printf("%d ",a[i]);}}int main(void){int b[5],i;printf("\ninput 5 numbers:\n");for(i=0;i5;i)scanf("%d",b[i]);printf("initial values of array b are:\n");for(i=0;i5;i)printf("%d ",b[i]);nzp(b);printf("\nlast values of array b are:\n");for(i=0;i5;i)printf("%d ",b[i]);return 0;}
本程序与【例8.9】程序比,nzp函数的形参数组长度改为8,函数体中,for语句的循环条件也改为i8 。因此 , 形参数组a和实参数组b的长度不一致 。编译能够通过 , 但从结果看,数组a的元素a[5]、a[6]、a[7]显然是无意义的 。
③在函数形参表中,允许不给出形参数组的长度 , 或用一个变量来表示数组元素的个数 。例如 , 可以写为:
void nzp(int a[])
或写为
void nzp( int a[], int n )
其中形参数组a没有给出长度,而由n值动态地表示数组的长度 。n的值由主调函数的实参进行传送 。由此 , 【例8-10】又可改为【例8-11】的形式 。
【例8-11】复制纯文本新窗口
#include stdio.hvoid nzp(int a[],int n){int i;printf("\nvalues of array a are:\n");for(i=0;in;i){if(a[i]0) a[i]=0;printf("%d ",a[i]);}}int main(void){int b[5],i;printf("\ninput 5 numbers:\n");for(i=0;i5;i)scanf("%d",b[i]);printf("initial values of array b are:\n");for(i=0;i5;i)printf("%d ",b[i]);nzp(b,5);printf("\nlast values of array b are:\n");for(i=0;i5;i)printf("%d ",b[i]);return 0;}
C语言如何调用函数C语言中 , 函数调用的一般形式为:
函数名(实际参数表)
对无参函数调用时则无实际参数表 。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式 。各实参之间用逗号分隔 。
#includestdio.h
int fun(int x, int y); // 函数声明,如果函数写在被调用处之前,可以不用声明
void main()
{
int a=1, b=2, c;
c = fun(a, b); // 函数的调用,调用自定义函数fun,其中a,b为实际参数,传递给被调用函数的输入值
}
// 自定义函数fun
int fun(int x, int y)// 函数首部
{// {}中的语言为函数体
return xy ? x : y;// 返回x和y中较大的一个数
}
扩展资料
C语言中不允许作嵌套的函数定义 。因此各函数之间是平行的,不存在上一级函数和下一级函数的问题 。但是C语言允许在一个函数的定义中出现对另一个函数的调用 。
这样就出现了函数的嵌套调用 。即在被调函数中又调用其它函数 。这与其它语言的子程序嵌套的情形是类似的 。其关系可表示如图 。
图表示了两层嵌套的情形 。其执行过程是:执行main函数中调用a函数的语句时,即转去执行a函数,在a函数中调用b 函数时,又转去执行b函数,b函数执行完毕返回a函数的断点继续执行 , a函数执行完毕返回main函数的断点继续执行 。
参考资料:函数调用_百度百科
c语言常用函数有哪些?主要掌握的要点是什么函数1 。absread()读磁盘绝对扇区函数原形:int absread(int drive,int num,int sectnum,void *buf)功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num个(最多64K个)扇区的内容,储存于buf所指的缓冲区中 。参数:drive=0对应A盘,drive=1对应B盘 。返回值:0:成功;-1:失败 。头文件:dos.h函数2 。abswrite()写磁盘绝对扇区函数原形:int abswrite(int drive,int nsects,int lsect,void *buffer)drive=0(A驱动器)、1(B驱动器)、nsects=要写的扇区数(最多64K个);lsect=起始逻辑扇区号;buffer=要写入数据的内存起始地址 。功能:将指定内容写入(调用DOS中断0x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结构、文件、FAT表和目录结构所在的扇区,也照常进行 。返回值:0:成功;-1:失败 。头文件:dos.h函数3 。atof()将字符串转换成浮点数的函数原形:double atof(const char *s)功能:把s所指向的字符串转换成double类型 。s格式为:符号 数字.数字 E符号 数字返回值:字符串的转换值 。头文件:math.h、stdlib.h函数4 。atoi()将字符串转换成整型数的函数原形:int atoi(const char *s)功能:把s所指向的字符串转换成int类型 。s格式为:符号 数字返回值:字符串的转换值 。若出错则返回0 。头文件:stdlib.h函数5 。atol()将字符串转换成长整型数的函数原形:long atol(const char *s)功能:把s所指向的字符串转换成long int类型 。s格式为:符号 数字返回值:字符串的转换值 。若出错则返回0 。头文件:stdlib.h函数6 。bcd()把一个数转换成对应的BCD码的函数原形:bcd bcd(int x)bcd bcd(double x)bcd bcd(double x,int decimals)注意:BCD码的精度可达17位 。参数decimals是可选的 , 用来指定转换后小数点后的位数 。头文件:bcd.h函数7 。bdos()原形∶int bdos(int fnum,unsigned dx,unsigned al)其中fnum是系统调用号;dx是传给寄存器DX的值;al是传给寄存器AL的值;功能∶DOS系统调用(INT21H)返回值∶AX中的值函数8 。biosdisk()调用BIOS磁盘驱动程序函数原形:char biosdisk(int cmd,int drive,int head,int track,int sector,int nsects,void *buffer)功能:使用中断0x13,直接调用BIOS进行磁盘操作参数:(1)cmd:2-数据以每扇区512字节的格式读入buffer , 起始扇区由head、track和sector定,扇区数由nsects定 。3-将buffer中的数据按每扇区512字节写入磁盘 。4-对扇区进行数据校验 。6-格式化一个磁盘并对化扇区设置化标志 。8-返回当前驱动器参数在buffer的前4个字节中 。10-长读,每扇区读入512字节加上额外的4个字节 。11-长写,每扇区写入512字节加上额外的4个字节 。(2)drive:0-第一个软驱;1-第二个软驱;0x80-第一个硬驱(3)head:磁头(4)track:磁道(5)sector:扇区(6)nsects:扇区数(7)buffer:数据缓冲区,定义为unsigned char buffer[];返回值:0x00-操作成功0x01-错误命令0x03-企图写具有写保护的磁盘0x07-驱动器参数设置错误0x10-磁盘读/CRC/ECC错误头文件:bios.h注:对于硬盘主引导记录扇区head=0,track=0,sector=1函数9 。biosprint()调用BIOS打印机I/O接口的函数原形:int biosprint(int cmd,int abyte,int port)功能:通过BIOS中断0x17在由参数port指定的打印机上完成各种打印机功能 。port=0(LPT1)=1(LPT2);cmd=0(打印字符abyte)1(初始化打印机端口)2(读打印机状态);abyte=0-255;返回值:打印机状态位0(设备超时);位3(I/O出错);位4(打印机已选择);位5(没纸);位6(打印机确认);位7(不忙)头文件:bios.h函数10 。calloc()分配内存函数原形:void *calloc(size_t nitems,size_t size)功能:在堆中分配一块内存,将该内存的内容全部清0 。返回值:返回指向新分配内存的指针 。空间不够则返回NULL 。头文件:stdlib.h、calloc.h函数11 。ceil()原形∶double ceil(double num)功能∶求不小于num的最小双精度整数头文件∶math.h函数12 。cgets()读字符串函数原形:char *cgets(char *str)功能:从控制台读入一个字符串,并将该字符串(和字符串长度)存入有str所指向的地址中 。注意:在调用cgets之前,必须将要读入的字符串最大长度存入str[0]中,返回时str[1]被设置为实际读入的字符数 。实际字符串内容从str[2]开始,以空字符(\0)结尾 。返回值:指向str[2]的指针 。头文件:conio.h函数13 。chdir()改变当前目录的函数原形:int chdir(const char *path)功能:把由path指定的目录改为当前目录 。path参数中可以指定驱动器号,如"a:\\ddd", 但只是改变该驱动器上的当前目录,对当前活动驱动器上的当前目录无影响 。返回值:0(成功);-1(失败)头文件:dir.h函数14 。_chmod()改变文件存取权限的函数原形:int _chmod(const char *path,int func[,int attrib])功能:读取(func=0时)或设置(func=1时)DOS文件属性 。attrib=FA_RDONLY 只读attrib=FA_HIDDEN 隐藏文件attrib=FA_SYSTEM 系统文件attrib=FA_LABLE 卷标attrib=FA_DIREC 目录attrib=FA_ARCH 档案 返回值:失败时返回-1 。成功时返回文件的属性字节,如果 返回值FA_RDONLY 不等于0,则文件是只读文件;......头文件:io.h、dos.h函数15 。chmod()改变文件存取权限的函数原形:int chmod(const char *path,int amode)功能:根据amode的值,设置由path所指文件的存取权限 。amode的值存取权限S_IWRITE允许写S_IREAD允许读(只读)S_IREAD|S_IWRITE可读可写 返回值:0(成功);-1(失败)头文件:io.h、sys\stat.h函数16 。clock()原形∶long clock(void)功能∶测得从程序开始到调用处处理机所用的时间头文件∶time.h函数17 。close()关闭文件函数原形:int close(int handle)功能:关闭由文件句柄所指向的文件,句柄是调用_creat、creat、creatnew、creattemp、dup、dup2、_open或open时得到的 。该函数并不在文件末尾写一个Ctrl-Z字符,如果想用该字符结束文件,必须显式地给出该字符 。返回值:0(成功);-1(失败)头文件:io.h函数18 。closegraph()关闭图形函数原形:void far closegraph(void)功能:释放图形系统分配的所有内存,将屏幕恢复到调用initgraph之前的模式 。头文件:graphics.h函数19 。cos()原形∶double cos(double arg)功能∶计算arg(弧度)的余弦值头文件∶math.h函数20 。ctrlbrk()设置ctrl-break处理程序的函数原形:void ctrlbrk(int(*handle)(void))功能:修改中断向量0x23,使用新的ctrl-break中断处理函数 。用法:ctrlbrk(函数名);先定义函数:int 函数名(void){...}头文件:dos.h函数21 。delay()暂停函数原形:void delay(unsigned milliseconds)功能:暂停当前所执行的程序milliseconds毫秒 。头文件:dos.h函数22 。disable()屏蔽中断的宏原形:void disble(void)功能:屏蔽中断,只允许从外部设备来的不可屏蔽中断(NMI) 。头文件:dos.h函数23 。enable()开硬件中断的宏原形:void enable(void)功能:开放中断,允许接受任何设备产生的中断 。头文件:dos.h函数24 。exec()加载并运行其它程序的函数族execl(),execle(),execlp(),execlpe(),execv(),execve(),execvp(),execvpe()原形∶ int execl(char *path,char *arg0,*arg1,...,*argn,NULL)int execle(char *path,char *arg0,*arg1,...,*argn,NULL,char **env)int execlp(char *path,char *arg0,*arg1,...,*argn,NULL)int execlpe(char *path,char *arg0,*arg1,...,*argn,NULL,char **env)int execv(char *path,char *argv[])int execve(char *path,char *argv[],char **env)int execvp(char *path,char *argv[])int execvpe(char *path,char *argv[],char **env)其中,path是调用的子程序的文件名,在exec后面的后缀具有某种功能:p表示函数能够在由DOS环境变量PATH的目录中搜索子进程文件 , 如果path中未指明文件所在目录,函数将首先在当前目录中找 , 然后在DOS环境变量指定的目录中找 。l表示参数指针(arg0,...,argn)按单独参数传送 。当预先知道要传送的参数个数时,通常用带后缀l的函数 。v表示参数指针(arg0,...,argn)按指针数组传送 。当要传送的参数可变时,使用带后缀v的函数 。e表示参数env可以传送到子进程 , 该函数可用来修改子进程的环境 。若无e后缀,子进程将继承父进程的环境 。注意:arg0 ... argn,或arg[0] ... arg[n]的总长度必需小于128字节 。当调用exec函数时,原先已经打开的文件在子进程中仍然是打开的 。功能:加载并运行其它程序,调用时必须有足够的内存空间用于加载和执行子程序,子程序将覆盖父程序 。头文件:process.h 函数25 。farcalloc()从远堆中分配内存的函数原形:void far *farcalloc(unsigned long nunits,unsigned long unitsz)功能:从远堆中为包含nunits个元素的数组分配内存,每一区unitsz字节长 。用法:fptr=farcalloc(数目,sizeof(char));先定义:char far *fptr;注意:所有可用RAM能被分配;大于64K的块能被分配;用远指针存取该块 。微模式不能用 。返回值:返回指向新分配块的指针,若内存不够,则返回NULL 。头文件:alloc.h函数26 。farfree()从远堆中释放一块已分配内存的函数原形:void farfree(void far *block)头文件:alloc.h函数27 。farmalloc()从远堆中分配内存的函数原形:void far *farmalloc(unsigned long nbytes)使用方式:fptr=farmalloc(字节数);先定义char far *fptr;功能:从远堆中分配长nbytes字节的内存 。注意:所有可用RAM能被分配;大于64K的块能被分配;用远指针存取该块 。微模式不能用 。返回值:返回指向新分配内存的指针,若内存不够,则返回NULL 。头文件:alloc.h函数28 。farrealloc()调整远堆中已分配块的函数原形:void far *farrealloc(void far *oldblock,unsigned long nbytes)返回值:返回调整后的新内存地址 。若不能重新分配,则返回NULL 。头文件:alloc.h函数29 。fclose()关闭一个流函数原形:int fclose(FILE *stream)使用方式:fclose(文件指针名);其中文件指针名=fopen();功能:关闭指定的流,关闭前清除所有与stream相联的缓冲区,释放系统分配的缓冲区 , 但由setbuf设置的缓冲区不能自动释放 。返回值:0(成功);EOF(失败)头文件:stdio.h函数30 。fcloseall()关闭打开的流的函数原形:int fcloseall(void)功能:关闭所有打开的流,由stdin、stdout、stdprn、stderr和stdaux设置的流除外 。返回值:关闭流的总数 。如果发现错误则返回EOF 。头文件:stdio.h 函数31 。feof()检查文件是否结束的函数原形∶int feof(FILE *fp)返回值∶文件结束返回非0值,否则返回0 。头文件∶stdio.h函数32 。fgets()从流中读取一字符串的函数原形:char *fgets(char s[],int n,FILE *stream)使用格式:fgets(字符串指针,字符个数,文件指针)功能:从输入流stream中读入字符存到s串中 。当读了n-1个字符或遇到换行符时,函数停止读过程 。fgets在s串尾保留换行字符 。读入的最后一个字符后面加一个空字符 。返回值:成功时返回字符串参数s,出错或遇到文件结束时,返回NULL 。头文件:stdio.h函数33 。findfirst()函数和findnext()函数调用方式:整形数=findfirst(文件名,结构变量名,属性常数组合(如0x26));其中定义struct ffblk 结构变量名;原形:int findfirst(path,buffer,attr)和int findnext(buffer)char *path;//要检索的文件名struct ffblk{char ff_reserved[21];char ff_attrib;//被检索的文件属性unsigned ff_ftime;//最后修改的时间//(0-4位:秒数/2;5-10位:分数;11-15位:小时数)unsigned ff_fdate;//最后修改的日期//(0-4位:日;5-8位:月;9-15位:年减1980)long ff_fsize;//文件大小char ff_name[13];//组名}*buffer;int attr;//要检索的文件属性功能:检索由path和attr指定的文件,把结果返回到buffer 。findfirst返回关于第一个指定文件的信息,findnext继续检索 。返回值:0(检索成功),-1(没有找到指定的文件)属性常数:FA_NORMAL(0x00)含意:Normal file, no attributesFA_RDONLY(0x01)含意:只读FA_HIDDEN(0x02)含意:隐含文件FA_SYSTEM(0x04)含意:系统文件FA_LABEL(0x08)含意:卷标FA_DIREC(0x10)含意:子目录FA_ARCH(0x20)含意:修改的文件Archive头文件:dir.h(dos.h)函数34 。floodfill()填充区域的函数原形:void far floodfill(int x,int y,int border)功能:在图形设备上用颜色border围起来的区域将用当前填充颜色填充 。(x,y)是待填充区域的起点,若起点在封闭区域内,则区域内被填充;若起点在封闭区域外,则区域外被填充 。头文件:graphics.h函数35 。floor()原形∶double floor(double num)功能∶求不大于num的最大双精度整数头文件∶math.h函数36 。fnmerge()建立文件路径函数原形:void fnmerge(char *path,const char *drive,const char *dir, const char *name,const char *ext)功能:合成drive:\dir\name.ext,放在path头文件:dir.h函数37 。fnsplit()分解完整的路径名函数原形:int fnsplit(char *path,const char *drive,const char *dir,const char *name,const char *ext)功能:把文件名路径path分成4个部分存放 。其中drive中有冒号;dir中有开始和结尾的反斜杠;ext包括开始圆点返回值:如果有扩展名,则 返回值EXTENSION!=0如果有文件名 , 则 返回值FILENAME!=0如果有目录名,则 返回值DIRECTORY!=0如果有驱动器号,则返回值DIRVE!=0头文件:dir.h 函数38 。fopen()打开一个流函数原形:FILE *fopen(const char *filename,const char *mode)功能:打开用filename指定的文件,并使其与一个流相联 。使用方式:文件指针名=fopen("文件名","处理方式")”处理方式”?。?"rt"打开一个文本文件 , 只能读 。"wt"生成一个文本文件,只能写 。若文件存在则被重写 。"at"打开一个文本文件 , 只能在文件尾部添加 。"rb"打开一个二进制文件,只能读 。"wb"生成一个二进制文件,只能写 。"ab"打开一个二进制文件,只能在文件尾部添加 。"rt "打开一个文本文件,可读可写 。"wt "生成一个文本文件,可读可写 。"at "打开一个文本文件,可读可添加 。"rb "打开一个二进制文件,可读可写 。"wb "生成一个二进制文件,可读可写 。"ab "打开一个二进制文件 , 可读可添加 。返回值:指明流的指针(成功时)或NULL(失败时)注:需先定义 FILE *文件指针名;"文件名"若用 argv[1]代替,则可使用命令行形式指定文件名函数39 。FP_OFF()获取远地址偏移量的宏原形:unsigned FP_OFF(void far *p)功能:取得和设置远指针*p的偏移量返回值:偏移量头文件:dos.h 函数40 。fprintf()传送输出到一个流中的函数原形:int fprintf(FILE *stream,const char *format[,argument,...])功能:①向文件指针指向的文件输出ASCⅡ代码②向显示器输出错误信息 使用形式:①fprintf(文件指针,"输出格式",输出项系列);②fprintf(stderr,"错误信息");使用实例:fprintf(stream,"%d %c %f",i,c,f);其中定义FILE *stream;int i; char c; float f;返回值:成功则返回输出的字节数 , 错误则返回EOF 。头文件:stdio.h函数41 。FP_SEG()获取远地址段值的宏原形:unsigned FP_SEG(void far *p)功能:取得和设置远指针*p段地址值返回值:段地址值头文件:dos.hfree()释放已分配内存的函数原形:void free(void *block)功能:释放由calloc、malloc、realloc函数调用所分配的内存 。头文件:stdlib.h、alloc.h函数42 。fscanf()格式化输入函数原形:int fscanf(FILE *stream,const char *format[,address,...])功能:从一个流中扫描输入字段,一次扫描一个字符,每个输入字段根据format所指格式指示符格式化后,把输入字段存在format后面由地址参数给出的位置上 。使用格式:fscanf(文件指针,"输入格式",输入项系列);使用实例:fscanf(fp,"%d",b);从fp指向的文件中读取十进制整数 (ASCⅡ形式)赋予变量b注:当文件指针是stdin时,与scanf功能完全相同头文件:stdio.h函数43 。fseek()移动文件指针函数原形:int fseek(FILE *stream,long offset,int whence)作用:强制一个文件的位置指针指向某个特定的位置(甚至超出文件的尾部) 。使用格式:fseek(*文件指针,偏移(长整型) , 起点)定义 FILE *文件指针名;"起点"取值:0或SEEK_SET(表示文件开头)1或SEEK_CUR(表示当前位置)2或SEEK_END(表示文件尾端)返回值:0表示成功,非0值表示失败头文件:stdio.h函数44 。fwrite()把参数写入流中的函数原形:size_t fwrite(const void *ptr,size_t size,size_t n,FILE *stream)功能:附加n个数据项(每个数据项长度为size个字节)到指定的输出文件后,数据从ptr处开始添加 。ptr是指向任意对象的指针 。返回值:调用成功时返回实际写的数据项数,出错时返回一短整形数值 。头文件:stdio.h例:fwrite(s,sizeof(s),1,stream);其中s是一结构变量 , stream=fopen();函数45 。gcvt()把双精度数转化成字符串的函数原形∶char*gcvt(value,ndigit,buf)其中∶double value是待转化数int ndigit是转化长度char *buf保存转化后的地址头文件∶stdlib.h函数46 。geninterrupt()执行中断函数原形:void geninterrupt(int n)调用方式:geninterrupt(软中断号)功能:产生一个8086软中断注:需先向寄存器传递入口信息(用伪变量)例如伪变量=要赋的值(入口信息);调用geninterrupt()函数后得接受出口信息例如变量名=伪变量伪变量∶Turbo C 允许使用伪变量直接访问相应的8086寄存器 。伪变量的类型有两种 。① unsigned int : _AX、 _BX、 _CX、 _DX、 _CS、 _DS、 _SS、 _ES、_SP、 _BP、 _DI、 _SI② unsigned char: _AL、 _AH、 _BL、 _BH、 _CL、 _CH、 _DL、 _DH函数47 。getc()从流中取字符的宏原形:int getc(FILE *stream)功能:返回输入流stream中一个字符,移动文件指针使之指向下一个字符 。使用格式:字符变量=getc(文件指针)(正常情况下读取到代码值,读到文件尾或出错时返回EOF)注:需定义 char 字符变量;FILE *文件指针;头文件:stdio.h函数48 。getch()从键盘无回显地读取一字符的函数功能:将键盘上输入的单个字符的值(ASCⅡ 码)立刻赋给字符型变量调用方式:字符形变量=getch()注:需先定义 char 字符形变量;头文件:conio.h函数49 。getchar()从stdin流中读取一个字符的函数功能:将键盘上输入的单个字符的值(ASCⅡ 码)回车后赋给字符型变量调用方式:字符型变量=getchar()注:需先定义 char 字符型变量;头文件:stdio.h函数50 。getcurdir()读取指定驱动器的当前目录的函数原形:int getcurdir(int drive,char directory)drive=0(缺省);1(A驱动器);...directory用来存放目录名,不包括驱动器名,不以反斜杠开始 。返回值:0(调用成功);1(出错)头文件:dir.h函数61 。getcwd()读取当前目录的函数原形:char *getcwd(char *buf,int buflen)功能:读取当前目录的完整路径名(包括驱动器名),最长为buflen个字节,存放在buf中 。如果buf为NULL,函数将分配一个buflen字节长的缓冲区,以后可将本函数的返回值作为free函数的参数来释放该缓冲区 。返回值:若buf非空 , 调用成功返回buf,出错返回NULL;若buf为NULL,返回指向已经分配的内存缓冲区地址 。头文件:dir.h函数62 。getdate()读取系统日期函数原形:void getdate(pdate)struct date{int da_year;int da_day;int da_mon;};struct date *pdate;头文件:dos.h函数63 。getdfree()读取磁盘空闲空间的函数原形:void getdfree(drive,dtable)unsigned char drive;驱动器号(0-当前;1-A;2-B;...)struct dfree{unsigned df_avail;//可使用的簇数unsigned df_total;//每个驱动器的簇数unsigned df_bsec;//每个扇区的字节数unsigned df_sclus;//每个簇的扇区数(出错时返回0xffff)}*dtable;功能:把由drive指定的关于驱动器的信息返回到dtable函数64 。getdisk()读取当前磁盘驱动器号函数原形:int getdisk(void)功能:取得当前驱动器号(0=A;1=B;....)头文件:dir.h函数65 。getenv()读取环境变量的当前值的函数原形:char *getenv(const char *name)用法:s=getenv("环境变量名");需先定义char *s;功能:返回一给定的环境变量值,环境变量名可大写或小写 。如果指定的变量在环境中未定义,则返回一空串 。头文件:stdlib.h函数66 。getimage()将指定区域的位图象存入内存的函数原形:void far getimage(int left,int top,int right,int bottom,void far *bitmap)功能:将图像(矩形区域)从屏幕拷贝到内存,*bitmap指向内存中存放图像的区域 。该区域的前两个字节用于存放矩形的高和宽 。头文件:graphics.h函数67 。getmaxx()返回屏幕上最大的X坐标值的函数原形:int far getmaxx(void)功能:返回当前图形驱动程序和图形模式下最大的X坐标值 。头文件:graphics.h函数68 。getmaxy()返回屏幕上最大的Y坐标值的函数原形:int far getmaxy(void)功能:返回当前图形驱动程序和图形模式下最大的Y坐标值 。头文件:graphics.h函数69 。getpixel()读取像素颜色的函数原形:unsigned far getpixel(int x,int y)头文件:graphics.h函数70 。getpsp()原形∶unsigned getpsp(void)功能∶使用DOS系统调用0x62,返回程序段前缀(PSP)的段地址头文件∶dos.h函数71 。gets()从标准输入流stdio中读取一字符串的函数功能:将键盘上输入的字符串立刻赋予字符串变量并显示出来调用方式:gets(字符串变量名)注:需定义 char *字符串变量名;函数72 。gettime()读取系统时间的函数原形:void gettime(ptime)struct time{unsigned char ti_min;unsigned char ti_hour;unsigned char ti_hund;//百分之一秒unsigned char ti_sec;};struct time *ptime;函数73 。getvect()读取中断向量函数原形:void interrupt(*getvect(int interruptno))功能:读入由interruptno(0-255之间)所指定的中断向量值,并把该中断向量值作为中断函数的远指针返回 。返回值:指定中断向量的当前4字节值 。头文件:dos.h使用实例:oldfunc=getvect(5);先定义void interrupt(*oldfunc)();用后恢复setvect(5,oldfunc);函数74 。getx()返回当前图形方式下位置的X坐标值的函数原形:int far getx(void);头文件:graphics.h函数75 。gety()返回当前图形方式下位置的Y坐标值的函数原形:int far gety(void);头文件:graphics.h函数76 。imagesize()返回保存图像缓冲区大小的函数原形:unsigned far imagesize(int left,int top,int right,int bottom)功能:确定保存图像所需的存储区大小 。返回值:返回存储区的大小(字节) , 若所需内存大于等于64K-1字节,则返回0xffff(-1) 。头文件:graphics.h函数77 。initgraph()显示模式控制函数(初始化图形系统函数)功能:把图形适配器设置为一种图形模式,将选择的图形驱动程序(在BGI文件中)装入到内存 。调用方式: void far initgraph(int far *driver,int far *mode,char far*path) 其中: *driver可以是数值(0-10),也可是符号值(DETECT、CGA、MCGA、EGA、EGA64、EGAMONO、RESERVED、HERCMONO、ATT400、VGA、 PC3270) 。*mode参数从图形系统为各种常用的图形适配器设置的图形模式中(CGAC0、...、IBM8514HI--见头文件graphics.h)选取 。常用的有:VGAMED或1
浙大c语言8-5使用函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言第八章函数、浙大c语言8-5使用函数的信息别忘了在本站进行查找喔 。

    推荐阅读