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)
不常⽤:float几个字节多少位
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中(包括'\0'),返回dest
char * strncpy (char *dest, const char *src,n);
将src中的前n个字符复制到dest中,返回dest,不够n个则补‘\0'
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语⾔中常⽤的⼏个头⽂件及库函数,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论