常用头文件及函数

C语言编译器安装的时候还附带了很多标准函数库。当程序使用库中函数的时候,需要在程序开头声明程序调用的库。格式为:

#include<... .h>

常用头文件:

stdio.h 数据输入/输出   stdlib.h 不知道该属于什么类别的常用函数

string.h 和字符串有关的函数   math.h 各类数学函数

time.h 极少用但会用到的和时间有关的函数

ctype.h 字符类型和映射 

如果让我给一个建议的话,就是在某个程序里把所有能想到的头文件都写上,以后每次用到就复制粘贴。

 

常用的输入输出函数:

输入:

int getchar() 读入一个字符,读到文件尾的时候返回一个EOF。

int putchar(int c) 输出一个字符,函数出错时返回EOF。

char *gets(cahr *buf) 读入一行字符,读到文件尾或者出错时返回NULL,否则返回存储区buf。

char *fgets(char *buf, int n, FILE *fp) 从指定文件中读入一行不超过n-1个字符的字符串,并将其保存在bug所指向的存储区。读到文件尾或者出错时返回NULL,否则返回存储区buf。

puts() 输出一行字符,并将字符末尾的''替换成' '。

由于指针没有提到过,详细描述下getchar()和gets()。

假如在屏幕上输入:tuilixiehui。

程序为:

string ch;

ch=getchar(); 那么ch的值为t。

如果程序为:

ch=gets(); 那么ch的值为tuilixiehui。

 

scanf()中常用的数据类型说明符:

%d 有符号十进制整数  %o 无符号八进制整数

%u 无符号十进制整数  %x 无符号十六进制整数

%f 有符号浮点数(float)     %lf 有符号浮点数(doubt)

%s 字符串

 

printf()中常用的数据类型说明符:

%c 单个字符           %d 有符号十进制整数

%o 无符号八进制整数   %u 无符号十进制整数

%x 无符号十六进制整数 %s 字符串

%e 有符号浮点数的科学表示法  %f 有符号浮点数的常规表示法

%g 有符号浮点数,按照f或e格式输出

printf()还可以规定数字的宽度,小数的位数:

printf(“%5.2f”,a); 这表示a的长度为5个字符,保留两位小数。如果a本身数字部分加上小数点不够五个字符,会补上前导空格。

其他常用格式标志:

-:数据在字段宽度内左对齐,默认右对齐   

+:在有符号的数据类型前加符号,负数加前导负号,正数加前导正号。注意要写成%+d的样子,写成+%d显然错误。

0:数据在字段宽度内加前导0  

#:对类型符o、x、X,加前缀0、0x、0X。对类型符e、E、f、g、G强制输出小数点。

 

字符类型判断函数:

在C语言编译器中,每个可输入的字符都对应一个编号(汉字和全角符号除外),称为ASCII编码。相同“类型”,比如数字,小写字母,大写字母的ASCII码是连续的。利用这一点我们可以判断一个字符所属的类型。比如一个判断字符是否属于数字的函数可以这样定义:

bool isnumber(char a)
{
if (a>=’0’ && a<=’9’) return 1;
return 0;
}

之前说过,字符之间进行比较的时候,比较的是二者的ASCII码。

同理可以设计函数判断一个字符是不是大小写字母。

 

字符串处理常用函数:

strcat(s1,s2) 把s2连接到s1后  

strncat(s1,s2,n) 把s2的前n个字符连接到s1后

strcmp(s1,s2) 比较s1和s2。s1<s2结果为-1,相等为0,s1>s2结果为1.

strncmp(s1,s2,n) 比较s1和s2的前n字符

strcpy(s1,s2)  将s2复制到s1中,如果s1比s2长,超出的部分不变。  

strncpy(s1,s2,n) 将s2的前n位复制到s1中  

strchr(s,c) 在s中查找c第一次出现的位置

strrchr(s,c) 在s中查找c最后一次出现的位置

strstr(s1,s2) 查找s1中s1第一次出现的位置

strrstr(s1,s2) 查找s1中s2最后一次出现的位置

strlen(s) 返回字符串的长度,长度中不包括终止符''。

其他常用函数(n为整型,x为浮点型):

abs(n) 绝对值  rand() 生成伪随机数

atof(s) 把字符串转换为double类型的数    srand(unsigned int s) 设置随机数种子

atoi(s) 把字符串转换为int类型的数        exit() 终止程序执行

sqrt(x) x的平方根  

asin(x) 反正弦  sin(x)

acos(x) cos(x)

log(x) x的自然对数

tan(x) log10(x) x的常用对数

atan(x) exp(x) e^x

atan2(x,y) fabs(double x) x的绝对值

void *bsearch(void *key, void *base, size_t num, side_t width, int (*f)(void *e1, void *e2)); 以二分查找方式在排序数组base中查找元素key

qsort() 以快速排序的方式对数组进行排序,具体用法见qsort()函数的使用方法那篇博文。

各类取整函数:

只要整数/小于某个数的最大整数:强制类型转换或floor();

ceil():返回大于某个数的最小整数。

四舍五入:floor(x+0.5);

注意,floor和ceil的返回值都是double类型。

一个简单的向上取整的方法:

ans=floor(x-1/y)+1;

原文地址:https://www.cnblogs.com/Shymuel/p/8449695.html