不完全统计,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中(包括'\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语言中常用的几个头文件及库函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍C语言中static的作用及C语言中使用静态函数有何好处,包括了C语言中static的作用及C语言中使用静态函数有何好处的使用技巧和注意事项,需要的朋友参考一下 想了解Java中static关键字的作用和用法详细介绍,请点击此处了解详情。 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条,分别是: 一是隐藏功能,对于static修饰的函数和全局变量而言 二是
主要内容:标识符,关键字,注释,表达式(Expression)和语句(Statement)这一节主要讲解C语言中的几个基本概念。 标识符 定义变量时,我们使用了诸如 a、abc、mn123 这样的名字,它们都是程序员自己起的,一般能够表达出变量的作用,这叫做 标识符(Identifier)。 标识符就是程序员自己起的名字,除了变量名,后面还会讲到函数名、宏名、结构体名等,它们都是标识符。不过,名字也不能随便起,要遵守规范;C语言规定,标识符只能由字母(A~Z, a~z)、数字(0~9)
在 Go 语言开篇中我们已经知道,Go 语言与 C 语言之间有着千丝万缕的关系,甚至被称之为 21 世纪的C语言。 所以在 Go 与 C 语言互操作方面,Go 更是提供了强大的支持。尤其是在 Go 中使用 C,你甚至可以直接在 Go 源文件中编写 C 代码,这是其他语言所无法望其项背的。 格式: 在 import "C" 之前通过单行注释或者通过多行注释编写C语言代码 在 import "C" 之
本文向大家介绍C语言中操作utmp文件的相关函数用法,包括了C语言中操作utmp文件的相关函数用法的使用技巧和注意事项,需要的朋友参考一下 C语言getutent()函数:从utmp文件中取得账号登录数据 头文件: 定义函数: 函数说明:getutent()用来从utmp 文件(/var/run/utmp)中读取一项登录数据, 该数据以utmp 结构返回. 第一次调用时会取得第一位用户数据, 之后
1. 函数的定义 程序是由一个个函数组成的。我们之前虽然没有正式介绍函数,但是我们早已经开始使用函数了。因为离开了函数,我们的程序没有办法正常的工作。只不过我们使用的是 C 语言内置的标准函数库。 那么函数是什么? 函数是由一组语句组成完成至少一个特定任务的语句的集合。在 C 语言中,我们必须要包含一个函数,就是我们最开始介绍的 mian 函数。 2. 为什么需要函数? 函数帮助我们可以减少代码的
本文向大家介绍浅谈头文件algorithm中的常用函数,包括了浅谈头文件algorithm中的常用函数的使用技巧和注意事项,需要的朋友参考一下 一、非修改性序列操作(12个) 循环 对序列中的每个元素执行某操作 for_each() 查找 在序列中找出某个值的第一次出现的位置 find() 在序列中找出符合某谓词的第一个元素
问题内容: 您好Go Lang和C#专家, 美好的一天。我想问你们是否有人尝试过Go程序调用C#DLL函数(类库类型)? 我进行了一些初步研究,并看到了以下文章: 但是这些都是从C Win32实现中创建的DLL。我尝试搜索加载到Go程序中的C#DLL,所有这些都会告诉您在Go程序上调用它之前,您需要具有C ++ / C(Win32)包装器。 另外,上面的链接将告诉您Go认为我认为是“ C”声明(类
在 Go 代码中通过 //export Go函数名称 导出Go的函数名称 在 C 代码中通过 extern 返回值类型 Go函数名称(形参列表); 声明 Go 中导出的函数名称 注意://export Go 函数名称 和 extern 返回值类型 Go函数名称(形参列表); 不能在同一个文件中 package main import "C" import "fmt" // 导出Go函数声