#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、文件操作函数(简略)
文件访问
fopen
freopen
fflush
fclose
二进制输入/输出
fread
fwrite
非格式化输入/输出
fgetc/getc
fputc/putc
ungetc
fgets
fputs
格式化输入/输出
scanf/fscanf/sscanf
printf/fprintf/sprintf
perror
文件定位
ftell
fseek
fgetpos
fsetpos
rewind
错误处理
feof
ferror
文件操作
remove
rename
tmpfile
#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);将当前日历转换为机器日历