c语言中常用函数大全
(一)输入输出常用函数
1,printf
(1)有符号int
%[-][+][0][width][.precision][l][h] d
-:左对齐
+:正数前加‘+’
0:右对齐,acwidth .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]Type With:指定输入数据的宽度,遇空格、Tab、\n结束 *:抑制符scanf(“%2d%*2d%3d”,&num1,&num2) 输入9\n;num1==12,num2==567. 注意: (1)指定width时,读取相应width位,但按需赋值 Scanf(“%3c%3c”,&ch1,&ch2)输入a bc d efg ch1==a ch2==d (2)%c 输入单字符时“空格、转义字符”均是有效字符 (二)ascll字符/字符串/文件函数 1;字符非格式化输入函数 (1)int getchar(void) 接受字符,以回车结束,回显 (2)int getc(FILE*stream) 从stream中接受字符,以回车结束,回显stream=stdin时,(1)==(2)(3)int getche(void) 直接读取字符,回显conio.h (4)int getchar(void) 直接读取字符,不回显conio.h 注意: (1,2)对于回车键返回‘\n’(3,4)对于回车键返回‘\r’ 2;字符/串非格式化输出函数 (1)int putchar(int c) 正常返回字符代码值,出错返回EOF (2)int putc(int c,FILE*stream) 正常返回字符代码值,出错返回EOF stream==stdout(1)=(2) (3)int puts(char*stream) 自动回车换行 1;字符串的赋值 #include< string.h memory.h > Void *memset (void *s, char ch, unsigned n) 将以S为首地址的,一片连续的N个字节内存单元赋值为CH. Void *memcpy ( void *d, void*s, unsigned n) 将以S为首地址的一片连续的N个字节内存单元的值拷贝到以D为首地址的一片连续的内存单元中。(对于数据类型、大小相同的数组可以用此函数拷贝/部分拷贝) 2;#include (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)字符串的比较 1>2 返回正数 1=2 返回0 1<2 返回负数 比较规则:逐个比较字符的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,unsigned int count) 将2的前N个字符连接到1后面以\0结束; 3;动态分配内存include (1)void *calloc(unsigned n, unsigned size); 功能: 在内存的动态存储区中分配n个长度为size的连续空间,并且赋初值为0(malloc侧不是);函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。 (2) 原型: extern void *realloc(void *mem_address, unsigned int newsize) 语法: 指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。//新的大小一定要大于原来的大小不然的话会导致数据丢失! 头文件:#include <> 有些编译器需要#include 功能:先按照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: Int feof(FILE*filepointer)