C语言中常用的几个头文件及库函数
不完全统计,C语言标准库中的头文件有15个之多,所以我主要介绍常用的这四个头文件stdio.h,string.h,math.h,stdlib.h,以后用到其他的再做补充。下面上干货: 1.<stdio.h>:定义了输入输出函数、类型以及宏,函数几乎占了标准库的1/3。 (1)文件访问。 FILE *fopen(“filename”,“mode”): 以mode模式打开地址为'filename'的文件,并返回文件指针。 访问模式主要是“r”:只读; “w” :只写,并删除已有内容; “a”:追加,在末尾追加; “r+”, “w+”:读写; “a+”追加,上述结尾加“b”:二进制文件操作。 注意:其中r是打开文件,而w会创建(如果文件不存在); w会覆盖原有内容,a则是在原有文件末尾追加。 int fclose(FILE *f): 释放缓冲区数据,关闭流。 下面两个没太用过: FILE *freopen(“filename”,“mode”,FILE * f): 以mode模式打开地址为'filename'的文件,并将该文件与流f2关联。 int fflush(FILE *f): 将已写到缓冲区但未写入文件中的所有数据写入文件中。 (2)二进制输入/输出 fread(*ptr,size,n,FILE* f): 从f中读取n个长度为size的对象,并放入ptr指向的数组中。 fwrite(*ptr,size,n,FILE* f): 从ptr指向数组中读取n个长度为size的对象,并写入f中。 注意:要注意write与read的对象,读和写都是针对文件流f的。 (3)非格式化输入/输出 int fgetc/getc(FILE *f): 返回流f的下一个字符,到达文件末尾/发生错误,则返回EOF。 int fputc/putc(int c, FILE *f) 将字符c输入到流f中。 int fgets(char * s,int n,FILE *f): 将f中下n-1个字符读入到数组s中。遇到换行符,则终止。 int fputs(const char * s,FILE *f): 将字符串s输出到流中。 int unget(int c, FILE *f) 将c写回到f中。 (4)格式化输入/输出 按一定格式转输出。 scanf/fscanf/sscanf printf/fprintf/sprintf 注意:不加f/s,则是格式字符串标准输入/出函数,输入/出到终端/屏幕;printf(const char *format,...) 加s,输入/出到字符串中。sprintf(char *s,const char *format,...) 加f,输入/出到文件流中。 fprintf(FILE *f,const char *format,...) (5)文件定位 long ftell(FILE *f): 返回当前指针位置。错误时返回-1L。 int fseek(FILE *f,long offset,int origin): 将当前流f指针位置设置到:origin后offset个字符处。origin有:SEEK_SET:文件起始位置;SEEK_CUR指针当前位置,SEEK_END:文件结束位置。 void rewind(FILE *f) 指针返回文件开始位置,相当于:fseek(f,0L,SEEK_SET) 不常用: int fgetpos(FILE *f,*p) 将指针当前位置记录到*p中,以供fsetpos函数使用。 int fsetpos(FILE *f,const *p) 指针位置指向*p。 (6)错误处理与文件操作 int feof(FILE *f) 指示文件结束,一直返回0,结束时返回非0值。 int ferror(FILE *f) 如果设置了与f相关的错误指示符,则返回一个非0值。 int remove(char *filename) 删除指定位置的文件。 int rename(const char *oldname,const char *newname) 改文件名,否则返回非0值。 FILE *tmpfile(void) 建立临时文件,‘wb+'模式,在被关闭或程序正常结束时自动删除 2.<string.h> 分成两组,一组str开头,一组mem开头(该组函数在<memory.h>中也有定义,不是所有编译器都有) (1)str char * strcpy (char *dest,const char *src); 将字符串src复制到字符串dest中(包括' '),返回dest char * strncpy (char *dest,const char *src,n); 将src中的前n个字符复制到dest中,返回dest,不够n个则补‘ ' char * strcat (char *dest,const char *src); char * strncat (char *dest,const char *src,n); src连接到dest后;src 中前n个字符连接到dest后。 int strcmp (const char *s1,const char *s2); int strncmp (const char *s1,const char *s2,n); 比较s1与s2,s1<s2则返回负数,否则返回0;比较前n个字符 char * strchr (const char *s,int c); char * strrchr (const char *s,int c); 返回字符串s中第一次出现字符c的位置指针;返回字符串s中最后一次出现字符c的位置指针(c会转换成char) 不常见 size_t strcspn (const char *s1,const char *s2); char * strdup (const char *s); char * strerror(int errnum); (2)mem void *memcpy(void *s, const void *ct,n) 将字符串ct中的前n个字符拷贝到s中,并返回s。 void *memmove(s,ct,n)同上一函数,只是在对象重叠时仍能正确执行。 void *memset(void *s,int c, n) 将s中的前n个字符替换成c,并返回s。 int memcmp(cs,ct,n) 将cs前n个字符与ct进行比较,cs<ct,返回负数;否则返回0 void *memchr(cs,c,n) 返回指向c在cs中第一次出现的位置指针。 3.<math.h>一些数学函数 求绝对值 int abs (int x); long labs (long x); float fabs (float x): 所有返回值均为double,三角函数角度用弧度表示,x,y均为double double acos (x); double asin (x); double atan (x); double atan2 (y,x): arctan(y/x) double tan (x); double tanh (x): 双曲正切 double sin (x); double sinh (x); double cos (x); double cosh (x); double pow (x,y);//注意返回值类型为双精度型 double sqrt (x); double ceil (x): 不小于x的最小整型数(向上取整) double floor (x): 不大于x的最大整型数(向下取整) double exp (x); double fabs (x); double log (x): ln(x) double log10 (x); double fmod (x,y): x/y的余数 double ldexp (x,n): x*2^n double modf (x,double *ip): 将x分成整数与小数两部分,返回小数部分,整数部分放在*ip中 double frexp (x,int *exp); 将x分成(0.5,1)之间的一个真分数和一个2的幂数,返回真分数,幂数放在exp中 4.<stdlib.h>数值转换、内存分配等问题。 int rand(void) 产生一个0~32767之间的随机整数。 指针名=(数据类型 *)calloc(n,size) 分配n个长度为size的连续空间,并且将所有元素置零,返回首地址。 指针名=(数据类型 *)malloc(n*size) 分配n*size个字节的内存,并返回首地址。 指针名p1=(数据类型 *)realloc(要改变内存大小的指针名p2,新的大小n) 分配长度为n字节的空间,将p2值赋值到该内存中,返回首地址到p1.(改变p1指向地址的内存大小) void free(*p) 释放p指向的内存(p为malloc,realloc,calloc所开辟的内存) void abort (void) 使程序非正常终止。 void exit(int status) 使程序正常终止。 总结 以上所述是小编给大家介绍的C语言中常用的几个头文件及库函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |