C语言常用头文件及库函数

来源:互联网 发布:意大利签证 知乎 编辑:程序博客网 时间:2024/04/28 23:24

#include < stdio.h >

*注释:定义输入/输出函数

1、输入函数

  • int getchar()//从标准输入设备读入一个字符
  • int scanf(char*format[,argument…])//从标准输入设备读入格式化后的数据
  • char gets(char*string)//从标准输入设备读入一个字符串

2、输出函数

  • int printf(char*format[,argument…])//向标准输出设备输出格式化字符串
  • int putchar()//向标准输出设备写出一个字符
  • int puts(char*string)//向标准输出设备输出一个字符串
  • int sprintf(char*string,char*format[,…])//把格式化的数据写入某个字符串缓冲区

3、文件操作函数(简略)

文件访问fopenfreopenfflushfclose二进制输入/输出freadfwrite非格式化输入/输出fgetc/getcfputc/putcungetcfgetsfputs格式化输入/输出scanf/fscanf/sscanfprintf/fprintf/sprintfperror文件定位ftellfseekfgetposfsetposrewind错误处理feofferror文件操作removerenametmpfile

#include < stdlib.h >

*注释:定义杂项函数及内存分配函数

1、字符串转换函数

  • int atoi (const char*); //将字符串转换为int型
  • double atof (const char*);
  • long atol (const char*);
  • double strtod (const char*, char**);
  • long strtol (const char*, char**, int);
  • unsigned long strtoul (const char*, char**, int);
    例如:int num = atoi(str);

2、随机数函数

*注释:
  rand函数不是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()。而使用同种子相同的数调用 rand()会导致相同的随机数序列被生成。
  关于time_t time(0):time_t被定义为长整型,它返回从1970年1月1日零时零分零秒到目前为止所经过的时间,单位为秒。
  RAND_MAX[1] 是 C 语言标准库 < stdlib.h > 中定义的一个宏,(C11)标准中未规定 RAND_MAX 的具体数值。但该标准规定了RAND_MAX 的值应至少为32767。

  • void srand (unsigned int); 置随机数发生器(种子)
  • int rand (void); 返回下一个伪随机数
    例如:srand((int)time(NULL));//用时间做种子
      rand() % 101; //产生0-100的随机数
    1+(int)(10.0*rand()/(RAND_MAX+1.0));//生成1-10的数

3、内存分配函数

注释:void *malloc( size_t size );

  • void* calloc (size_t, size_t); 分配内存, 并清零
  • void* malloc (size_t); 分配内存
  • void* realloc (void*, size_t); 重新分配内存, 返回新指针
  • void free (void*); 释放内存
    例如:int bob[100];
    bob=(int)malloc(sizeof(bob));

4、终端命令

  • void abort (void);//终止程序的执行
  • void exit (int);//终止程序的执行
  • int atexit (void (*)(void));//终止程序的执行
  • int system (const char*);//执行命令字符串command 进行系统调用
  • char* getenv (const char*);

5、 查找与排序

  • void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*)); //折半查找法
  • void qsort (const void*, size_t, size_t,
     int ()(const void, const void*));//快速排序
     例如:int comp(const void*a,const void*b)
         {return (int)a-(int)b;}
       qsort(array,length,sizeof(int),comp);

6、 整数运算

  • int abs (int);//int型绝对值函数
  • long labs (long);
  • div_t div (int, int);
  • ldiv_t ldiv (long, long);

#include < math.h >      

注释:定义数学函数

  • double hypot (double x,double y);已知直角三角形两个直角边长度,求斜边
  • double ldexp(double x,int exponent);计算x*(2的exponent次幂)
  • double poly(double x,int degree,double coeffs []);计算多项式
  • double fmod (double,double); 返回两参数相除的余数
  • int abs(int i); 求整型的绝对值
  • double fabs (double);求实型的绝对值
  • double cabs(struct complex znum);求复数的绝对值
  • double ceil (double); 取上整,返回不比x小的最小整数
  • double floor (double); 取下整,返回不比x大的最大整数,即高斯函数
  • double log10 (double);以10为底的对数
  • double pow(double x,double y);计算x的y次幂
  • float powf(float x,float y); 功能与pow一致,只是输入与输出皆为单精度浮点数
  • double exp (double);求取自然数e的幂
  • double sqrt (double);开平方
  • double sin(double);三角函数/反三角函数
    例如:double mod = fmod(12,3.5);//求余数
       double three = hypot(3,4);//求斜边

#include < string.h >

注释:字符串处理函数

  • void *memset(void *s, int ch, size_t n);
    将s中前n个字节(typedef unsigned int size_t)用ch替换并返回s。
    memset作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法.
  • extern char strcpy(char dest, const char *src);字符串拷贝到dest
  • char * strncpy(char *dest, char *src,size_t num);
    复制src中的内容(字符,数字、汉字….)到dest,复制多少由num的值决定,返回指向dest的指针。如果遇到null字符(’\0’),且还没有到num个字符时,就用(num - n)(n是遇到null字符前已经有的非null字符个数)个null字符附加到destination。
  • extern char *strcat(char *dest,char *src);
    把src所指字符串添加到dest结尾处(覆盖dest结尾处的’\0’)并添加’\0’。src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。
  • extern char *strncat(char *dest,char *src,int n);
    把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的’\0’)并添加’\0’。src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。
  • extern int strcmp(const char s1,const char s2);
    比较字符串s1和s2。
    当s1< s2时,返回值<0
    当s1==s2时,返回值=0
    当s1>s2时,返回值>0
    即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。
  • int strncmp(char *str1, char *str2, int maxlen);
    此函数功能即比较字符串str1和str2的前maxlen个字符。
    如果前maxlen字节完全相等,返回值就=0;
    在前maxlen字节比较过程中,如果出现str1[n]与str2[n]不等,则返回(str1[n]-str2[n])。
  • extern char *strchr(const char *s,char c);
    查找字符串s中首次出现字符c的位置,返回首次出现c的位置的指针,如果s中不存在c则返回NULL。
  • extern unsigned int strlen(char *s);
    计算字符串s的(unsigned int型)长度,不包括’\0’在内.返回s的长度,不包括结束符NULL。

#include < ctype.h >

注释:字符分类函数

int isalpha(char ch);是字母返回非0(在vs2015中为2,否则返回 0.int isdigit(char ch);是否是数字,数字返回非零int isgraph(int ch);是否是可显示的字符,空格除外,是返回非零int islower(int ch);小写字母int isupper(int ch);大写字母int tolower(int ch);将ch字符转换为小写字母int toupper(int ch);将ch字符转换为大写字母int isalnum(int ch);是否是数字int isspace(int ch);检查ch是否是空格符和跳格符(控制字符)或换行符int isxdigit(int ch);

#include < time.h >

注释:时间函数

struct tm {
  int tm_sec; /* 秒 – 取值区间为[0,59] */
  int tm_min; /* 分 - 取值区间为[0,59] */
  int tm_hour; /* 时 - 取值区间为[0,23] */
  int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */
  int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
  int tm_year; /* 年份,其值等于实际年份减去1900 */
  int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
  int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
  int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
  };

  • struct tm * localtime(const time_t *timer)返回一个以tm结构表达的机器时间
  • time_t time(time_t *tp);返回系统当前日历时间
  • char* asctime(struct tm * ptr)返回的时间字符串格式为:星期,月,日,小时:分:秒,年
  • char *ctime(const time_t *time)返回字符串格式:星期,月,日,小时:分:秒,年
  • double difftime(time_t time2, time_t time1)得到两次机器时间差,单位为秒
  • time(time_t *tp);
    例如:time_t t;
    t = time(NULL);//默认1970-1-1
    struct tm *p;
    time(&t);//得到当前系统日历,不写则为默认1970年
    p = localtime(&t);将当前日历转换为机器日历
1 0