您好,欢迎访问三七文档
C语言语法参考大全(常用函数03)--------------------------------------------------------------------------------函数名:malloc功能:内存分配函数用法:void*malloc(unsignedsize);程序例:#include#include#include#includeintmain(void){char*str;/*allocatememoryforstring*//*Thiswillgenerateanerrorwhencompiling*//*withC++,usethenewoperatorinstead.*/if((str=malloc(10))==NULL){printf(Notenoughmemorytoallocatebuffer);exit(1);/*terminateprogramifoutofmemory*/}/*copyHellointostring*/strcpy(str,Hello);/*displaystring*/printf(Stringis%s,str);/*freememory*/free(str);return0;}printf函数其功能是向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。(1)printf函数的一般形式为:printf(格式控制字符串,变量1,变量2,…);格式控制字符串与scanf中的相同。printf函数的第二个及以后的各个参数(若有的话)是变量的名字,而不是变量的地址,因此与scanf的相应参数有所不同。数组名可直接出现在printf的变量位置上,作为printf的参量,是合法的。与scanf函数一样,printf中的格式说明也是针对不同类型的数据用不同的格式说明。(2)printf函数中的格式说明:①d格式说明。用来输出十进制整数,有下列几种用法:?%d,按整数型数据的实际长度输出,如printf("%d",123456);输出:123456?%md,m为指定的输出字段的宽度,如果实际数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。例:printf("%4d,%4d,%4d",a,b,c);若a=123,b=12345,c=578,则输出为:?123,12345,?578?%ld,输出长整型数据。如:longa=135970;printf("%ld",a);输出:135970。如果用%d输出,就会发生错误,对long型数据,应当用%ld格式输出。对长整型数据也可以指定字段宽度,如将上面的printf函数中的"%ld"改为"%8ld",则输出为:??1359708列一个int型数据既可以用%d也可用%ld格式输出。如:inta=123;printf("%ld",123);输出:123②o格式符,以八进制数形式输出整数,由于是将内存单元中各位的值(0或1)按八进制的形式输出,因此输出的数据不带符号,即将符号位也作为八进制数的一部分一起输出。例如,-1在内存中的存放形式(以补码存放)为:1111111111111111,所以有:inta=-1;printf("%d,%o",a,a);这段小程序的输出为:-1,177777。可见,%o格式说明的输出是将内存中的0、1串按从右到左3位一组的八进制数输出的,不带负号。对于长八进制数可用“%lo”的格式输出。同样也可以指定输出的宽度,如:printf("%9o",a)的输出数据为:???177777。③x格式符,以十六进制数形式输出整数,与o格式类似,也可不输出负号。因此有:inta=-1;printf("%d,%o,%x",a,a,a);的输出结果为:-1,177777,ffff可见,%x格式说明的输出是将内存中的0、1串按从右到左4位一组的十六进制数输出的。也可以用“%lx”输出长整数,及用“%mx”,如“%12x”输出指定字段宽的整数。④u格式符,用来输出无符号型(unsigned型)数据,以十进制形式输出。一个无符号型(unsigned型)数据也可以用“%d”格式输出,一个有符号型(int型)数据也可以用“%u”格式输出。具体的输出值按相互赋值的规则处理。无符号型(unsigned型)数据也可以用“%o”或“%x”格式输出。例2.10main(){unsignedinta=65535;intb=-2;printf("a=%d,%o,%x,%u",a,a,a,a);printf("b=%d,%o,%x,%u",b,b,b,b);}运行结果为:a=-1,177777,ffff,65535b=-2,177776,fffe,65534注意:上例中65535在内存中的表示(16位)为:1111111111111111;⑤c格式说明。?%c格式,用来输出一个字符。例:charch=a;printf("%c",ch);输出字符a。一个整数,只要它的值在0~255之间,就可以用字符形式输出。在输出前,将该整数转换成相应的ASCII码字符。反之,一个字符数据也可以用整数形式输出。例2.11main(){charc1=a;inti=97;printf("%c,%d",c1,c1);printf("%c,%d",i,i);}输出结果为:a,97a,97?%mc格式用于指定输出字符宽度,如果有:printf("%3c",c1);则输出:??a,即c变量输出占3列,前两列补空格。⑥s格式说明。s格式用来输出一个字符串。有以下几种用法:?%s,例如:printf("%s","CHINA");输出:CHINA。?%ms,输出的字符串占m列,如果字符串本身长度大于m,则突破m限制,将字符串全部输出。若串小于m,则左边补空格。例如:printf("%7s","CHINA");输出:??CHINAprintf("%3s","CHINA");则突破输出宽度输出:CHINA?%-ms,如果小于m列,则在m列范围内,字符串向左靠,右边补空格。例:printf("%-7s","CHINA");输出:CHINA??printf("%-3s","CHINA");突破输出宽度输出:CHINA???%m.ns,输出占m列,但只取字符串中左边n个字符输出。这n个字符输出在m列的右侧,左补空格。例:printf("%7.3s","CHINA");输出:????CHI。?%-m.ns,其中m和n所表示的意义同④,但n个字符输出在m列范围内的左侧,右补空格。如果nm,则m自动取n的值,以保证n个字符自动正常输出。例:printf("%-2.3s","CHINA");输出:CHI⑦f格式说明。f格式用来输出带小数点的单、双精度实数。有下列几种用法:?%f不指定字段宽度,由系统自动输出相应常量或变量的全部整数部分及6位小数。应注意,单精度实数输出时,有效数字位数一般为7位。而双精度实数输出时,有效数字位数一般为十六位,有6位小数位。例2.12main(){floatx,y;doubleu,v;x=111111.111;y=222222.222;u=1111111111111.111111111;v=2222222222222.222222222;printf("%f",x+y);printf("%f",u+v);}运行结果为:333333.3281253333333333333.333010可以看出,输出结果中前一个只有前7位数字是有效数字,而后一个则前16位数字是有效数字。其他位均无意义。?%m.nf指定输出的数值共占m位,其中有n位小数。若数值长度小于m,则左端补空格。若数值长度大于m,则按实际数值输出,小数位保留n位。例:printf("%7.3f",23.456);输出:’23.456printf("%7.3",1123.456);输出:1123.456?%-m.nf与%m.nf基本相同,只是使输出数值向左端靠,右端补空格。例:printf("%-10.3f",1111.1111);输出:1111.111??⑧e格式符。以指数形式输出实数。可用以下形式:?%e不指定输出数据所占的宽度和数字部分小数位数,由系统自动指定给出6位小数,指定部分占5列(如e+003),其中:“e”占一位,指数的符号占一位,指数占三位。数值按标准化指数形式输出(即小数点前必须有且仅有一位非零数字)。例如:printf("%e",1234.56);输出:1.234560e+003。也就是说,用%e格式输出的实数共占13列字符宽度。8列5列?%m.ne和%-m.ne,其中n指尾数部分的小数位数。m为整个数值输出所至少占有的宽度。当未指定n时,自动使n=6,整个数据占13列输出,可能会突破m的限制,而按实际长度输出。例:printf("%12.4e",1234.56);输出:1.2346e+003(四舍五入)⑨g格式说明。用来输出实数,它根据实数大小,自动选f格式或e格式(选择占宽度较小的一种输出),且不输出无意义的零。例如,若a=123.456,则printf("%f%e%g",a,a,a);输出如下:123.4560001.234560e+002123.456用%f格式输出占10列。用%e格式输出占13列,用%g格式时,自动从上面两种格式中选择较短者(今为%f格式为短),故占10列,且按%f格式用小数点形式输出,最后三个小数位“0”为无意义的0,不输出。%g格式用的较少。puts函数函数名:puts功能:送一字符串到流中用法:intputs(char*string);程序例:#includeintmain(void){charstring[]=Thisisanexampleoutputstring;puts(string);return0;}函数名:rectangle功能:画一个矩形用法:voidfarrectangle(intleft,inttop,intright,intbottom);程序例:#include#include#include#includeintmain(void){/*requestautodetection*/intgdriver=DETECT,gmode,errorcode;intleft,top,right,bottom;/*initializegraphicsandlocalvariables*/initgraph(&gdriver,&gmode,);/*readresultofinitialization*/errorcode=graphresult();if(errorcode!=grOk)/*anerroroccurred*/{printf(Graphicserror:%s,grapherrormsg(errorcode));printf(Pressanykeytohalt:);getch();exit(1);/*terminatewithanerrorcode*/}left=getmaxx()/2-50;top=getmaxy()/2-50;right=getmaxx()/2+50;bottom=getmaxy()/2+50;/*drawarectangle*/rectangle(left,top,right,bottom);/*cleanup*/getch();closegraph();return0;}函数名:rewind功能:将文件指针重新指向一个流的开头用法:intrewind(FILE*stream);程序例:#include#includeintmain(void){FILE*fp;char*fname=TXXXXXX,*newname,first;newname=mktemp(fname);fp=fopen(newname,w+);fprintf(fp,abcdefghijklmnopqrstuvwxyz);rewind(fp);fscanf(fp,%c,&first);printf(Thefirstcharact
本文标题:C语言语法参考大全
链接地址:https://www.777doc.com/doc-4864510 .html