您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > C语言中常用函数大全
(一)输入输出常用函数1,printf(1)有符号int%[-][+][0][width][.precision][l][h]d-:左对齐+:正数前加‘+’0:右对齐,acwidthwidth,左补零.precision:至少输出位数。若实际的位数.precision,按实际输出,否者左边补零(2)无符号int%[-][#][0][width][.precision][l][h]u|o|x|X#:”%o%x/X”输出0,0x,0X.precision:同上,TC/BC包含0x/X,VC下不包含(3)实数输出%[-][+][#][0][width][.precision][l][L]f|e|E|g|G#:必须输出小数点.precision:小数位数(四舍五入)(4)字符和字符串的输出%[-][0][width]c%[-][0][width][.precision]s.precision:S的前precision位2,scanf%[*][width][l][h]TypeWith:指定输入数据的宽度,遇空格、Tab、\n结束*:抑制符scanf(“%2d%*2d%3d”,&num1,&num2)输入123456789\n;num1==12,num2==567.注意:(1)指定width时,读取相应width位,但按需赋值Scanf(“%3c%3c”,&ch1,&ch2)输入abcdefgch1==ach2==d(2)%c输入单字符时“空格、转义字符”均是有效字符(二)ascll字符/字符串/文件函数1;字符非格式化输入函数(1)intgetchar(void)接受字符,以回车结束,回显(2)intgetc(FILE*stream)从stream中接受字符,以回车结束,回显stream=stdin时,(1)==(2)(3)intgetche(void)直接读取字符,回显conio.h(4)intgetchar(void)直接读取字符,不回显conio.h注意:(1,2)对于回车键返回‘\n’(3,4)对于回车键返回‘\r’2;字符/串非格式化输出函数(1)intputchar(intc)正常返回字符代码值,出错返回EOF(2)intputc(intc,FILE*stream)正常返回字符代码值,出错返回EOFstream==stdout(1)=(2)(3)intputs(char*stream)自动回车换行1;字符串的赋值#includestring.hmemory.hVoid*memset(void*s,charch,unsignedn)将以S为首地址的,一片连续的N个字节内存单元赋值为CH.Void*memcpy(void*d,void*s,unsignedn)将以S为首地址的一片连续的N个字节内存单元的值拷贝到以D为首地址的一片连续的内存单元中。(对于数据类型、大小相同的数组可以用此函数拷贝/部分拷贝)2;#includestring.h(1)strlen(求字符串长度)求字符串长度,从给定的字符串的起始地址开始,到第一个’\0’为止(不包含’\0’)。转义字符\ddd、\xhh;看做一个字符。(2)字符串的复制Strcpy(字符数组1,字符串2);将字符串2,复制到字符数组1中(包含\0);1要足够大。1:必须为字符数组变量2字符数组变量或字符串常量strncpy(字符数组1,字符串2,长度n)将2中的前N个字符复制到1中,并在末尾加\0;n=strlen(2)时,其等价strcpy。(4)字符串的比较12返回正数1=2返回012返回负数比较规则:逐个比较字符的ASCII码值,直到遇到不同的字符或‘\0’。Strcmp(字符串1,字符串2)Stricmp/Strcmpi(字符串1,字符串2)“不区分大小写”Strncmp(字符串1,字符串2,长度n)将字符串1前N个字符与字符串2前N个字符进行比较(n足够大时等价strcmp)Strincmp(字符串1,字符串2,长度n)(5)字符串的连接Strcat(字符串1,字符串2)将2连接到1后面(包含\0);1要足够大。Strncat(字符串1,字符串2,unsignedintcount)将2的前N个字符连接到1后面以\0结束;3;动态分配内存includestdlib.h/malloc.h(1)void*calloc(unsignedn,unsignedsize);功能:在内存的动态存储区中分配n个长度为size的连续空间,并且赋初值为0(malloc侧不是);函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。(2)原型:externvoid*realloc(void*mem_address,unsignedintnewsize)语法:指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。//新的大小一定要大于原来的大小不然的话会导致数据丢失!头文件:#includestdlib.h有些编译器需要#includealloc.h,在TC2.0中可以使用alloc.h头文件功能:先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域,同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。返回值:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。注意:这里原始内存中的数据还是保持不变的。当内存不再使用时,应使用free()函数将内存块释放。(三)文件函数mode:r:打开已存在文件,准备从文件中读取数据,不能写入r+:可读可写w:创建一个新文件,准备写入;如文件已存在,此文件将被空文件覆盖w+:增加“读取”操作a:打开已存在文件,准备在文件尾部追加数据,不能读取。如文件不存在,侧创建此文件,准备写入。a+:增加“读取”t:打开一个文本文件(缺省值)b:打开一个二进制文件一:文件的打开与关闭1:打开文件FILE*fopen(char*filename,char*mode)Filename:是字符串,表示打开的文件名,文件名前可以带路径。Mode:也是字符串,表示打开文件的方式。功能----按指定方式打开文件。返回值----如果文件打开成功,返回“文件结构体指针”,否者返回NULL(如:文件不存在或则写文件时不能创建)。Fopen(“A:\\user\\asd.txt”,”r+”);2:关闭文件Int*fclose(FILE*filename)正常关闭返回0;否者返回非0。3:Intfeof(FILE*filepointer)功能----在执行文件操作时,遇到文件尾,返回1;否则返回0;Eg.!feof(fp1)表示源文件(用于输入)未结束,循环继续。此函数适用于ASCII码文件盒二进制文件。EOF是文本文件结束的标志。在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,普通字符的ASCⅡ代码的范围是32到127(十进制),EOF的16进制代码为0x1A(十进制为26),因此可以用EOF作为文件结束标志。当把数据以二进制形式存放到文件中时,就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志。为解决这一个问题,ASCIC提供一个feof函数,用来判断文件是否结束。feof函数既可用以判断二进制文件又可用以判断文本文件。“C”语言的“feof()”函数和数据库中“eof()”函数的运作是完全不同的。数据库中“eof()”函数读取当前指针的位置,“C”语言的“feof()”函数返回的是最后一次“读操作的内容”。多年来把“位置和内容”相混,从而造成了对这一概念的似是而非。那么,位置和内容到底有何不同呢?举个简单的例子,比如有人说“你走到火车的最后一节车箱”这就是位置。而如果说“请你一直向后走,摸到铁轨结束”这就是内容。也就是说用内容来判断会“多走一节”。这就是完全依赖于“while(!feof(FP)){...}”进行文件复制时,目标文档总会比源文档“多出一些”的原因。二:文件的读写1:字符读写函数fgetc和fputc(1):intfgetc(FILE*filepointer)功能----从文件指针filepointer指向的文件中,读入一个‘字节(字符)’,同时将读写位置指针向前移动一个字节。返回值-----如果读取正常,返回读到的的字节值;如果读到文件尾或出错;侧返回EOF。fgetc函数返回的值是int类型,如果强制的赋值给char类型,会导致当读出的数据为0xff时,误认为是EOF(-),导致程序出错。(2):Intfputc(intc,FILE*filepointer)功能-----将字符c输出到文件指针filepointer所指的文件中去;同时将读写位置指针向前移动一个字节。返回值------成功、返回字符数据c;否者返回EOF。2:字符串读写函数fgets和fputs(1):Char*fgets(char*s,intn,FILE*filrpointer)Cahr*s可以是“字符数组名”也可是“字符串”(别的类似的函数也是如此)功能---从文件指针filepointer指向的文件中,读取长度最大为n-1的字节串,并在字符串的末尾加上结束标志‘\0’;然后将字符串放在s中,同时读写位置指针向前移动,实际读写的字串长度(=n-1)个字节。“当从文件中读取第n-1个字符后或读取数据过程中遇到‘\n’(“\n也会存入字符串”)后,函数返回。”一次s中存放的字符串的长度不一定正好是‘n-1’。返回值----如成功,返回读取字串的指针;如果读到文尾或出错,返回NULL。(2):Intfputs(char*S,FILE*filepointer)功能---将存放在s中的字串,写到文件指针filepointer指向的文件中,同时将读写位置指针向前移动,字符串长度个字节。“注意:fputs函数不会将字符串结尾符‘\0’写入文件,也不会自动向文件写入自动换行符,如需写入一行文本,s字串中必须包含‘\n’。”返回值----成功,返回“最后写入文件的字符”;否则返回EOF。3:数据块读取函数fread和fwrite(1):Unsignedfread(void*ptr,unsignedsize,unsignedn,FILE*filepointer)功能--从filepointer所指向的的文件中读取n个数据项,每个数据项的大小事size个字节,并把这些数据存入ptr所指的内存中。且位置指针向前移动n*size个字节,如sizeof(int)。返回值-操作成功,返回读取数据项的个数(不是字节的个数);出错或到文尾,返回0。(2)Unsignedfwrite(void*ptr,unsignedsize,unsignedn,FILE*filepointer)功能--将ptr所指向的的内存中存放的n个大小为size的数据项写入filepointer所指向的文件中,实际要写入数据项的字节数是n*size。同时,将读写位置指针向前移动n*size个字节。返回值--操作成功,返回:实际写入的数据项的个数;出错,返回0注意:--fread和fwrite一般用于二进制文件的输入和输出。如强制输入输出到文本文件,即使打开文件也是乱码或与内容不符。4:格式化读写函数fscanf和fprintf此两函数和scanf和printf函数的区别是:fcanf/fprintf的操作对象是“指定文件”;而scanf/printf函数的操作对象是“stdin和stdout”(1):Intfscanf(FILE*filepointer,constchar*format[,address,…]);功能--从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。///*fscanf遇到\t会跳过,遇到\n会结束.并让位置指针移到下行,所以此处的\t可以略去*/返回值---如果操
本文标题:C语言中常用函数大全
链接地址:https://www.777doc.com/doc-6495992 .html