C语言常用函数综述,个人分享,不足之处望提出宝贵意见。。。
gets()字符串输入函数:gets(字符数组)
例如:char str[20]; gets ( str);
若从键盘输入:Hello World!
则将字符串“Hello World!”送到字符数组str中。
puts( )字符串输出函数:puts(字符数组)
例如:char str[]={“China/nBeijing”};
puts(str);
输出:China
Beijing
strlen()求字符串长度函数:strlen(字符数组)
例如:char str[80]={“ab/n//012////””} ;
printf(“%d”,strlen(str)) ;
输出:10
char str[80]={“ab/n/0y/012////””} ;
printf(“%d”,strlen(str)) ;
输出:3
strcmp( )字符串比较函数:strcmp(字符串1,字符串2)
若设n=strcmp(字符串1,字符串2);
n>0; 串1>串2
则:n= n=0; 串1=串2
n<0; 串1<串2
strcat( )字符串连接函数 :strcat(字符数组1,字符串2)
把字符串2连接到字符串1的后面,连接后的字符串放在字符
数组1中。
说明:⑴字符数组1必须足够大以便能够容纳字符串2。
⑵连接时只在新串最后保留一个‘/0’。
strcpy( )字符串复制函数 :strcpy(字符数组1,字符串2 )
其中,字符串2可以是字符串常量或字符数组。
功能:将字符串2复制到字符数组1中
(其后自动加一个‘/0’)。
goto 语句:goto 语句为无条件转向语句,其作用为:使程序的执行无条件地转移到指定处。
一般形式:goto 语句标号;
如: √ goto label_1; ╳ goto 123;
执行过程:执行语句时,程序转移到以标号
为前缀的语句处继续执行。
说明:⑴ C语言允许在任何语句前加一个语句标号,作为goto语句的目标。
给语句加标号的形式:语句标号:语句
⑵ goto语句是一种非结构化语句,结构化程序设计方法不提倡使用goto语句,
因为滥用goto语句将使程序流程无规律,可读性差。但也不是绝对禁止使用,
只有在能够大大提高程序效率时才使用。
注:不要从循环体外跳到循环体内!
[例]使用goto语句实现求解1~100累计和的程序可以如下:
main()
{ int n=1, sum=0;
loop: sum += n; n++;
if (n<=100) goto loop;
printf(“sum=%d/n”, sum);
}
其中“loop:”为语句标号(格式:标号: 语句行),其命名遵循标识符命名规则。
goto语句格式:goto 标号,功能为:使系统转向标号所在的语句行执行。
if (表达式)
语句;
if(表达式)
语句1;
else
语句2;
switch语句直接处理多分支选择
switch语句的一般形式
switch(表达式)
{ case 常量表达式1:语句组;break;
case 常量表达式2:语句组;break;
......
case 常量表达式n:语句组;break;
[default:语句组;[break; ]]
}
while (表达式) 语句
一般格式为:while(表达式) 循环体
do
语句
while(表达式);
do-while循环又称直到型循环,它的一般格式为:
do { 循环体; }
while(表达式);
while与do-while的主要区别:
while语句进入循环体之前,测试循环条件,表达式必须为真,
否则while循环不进入循环体,即循环体可能一次也不执行。
而do-while语句不管开始的时候测试循环条件是真是假,循环体都要执行一次,
因为循环体是先于测试条件执行的。
for(表达式1 ;表达式2 ;表达式3) 语句
3个表达式都可以省略. 如:for(;;)语句
相当于:while(1)语句
即不设初值,不判断条件(认为表达式2的值为真值),循环变量不增值,无终止的进行循环体
break 语句 一般形式:break ;
功能:结束当前的一层循环。
解释:break 语句一般用在循环体的条件语句中,其作用是当某个条件成立时用
break语句退出循环,不再继续执行其余的几次循环。
注意:在嵌套循环中使用break语句,它只影响包含它的最内层循环,
即程序仅跳出包围该break的那层循环。
continue语句 一般形式:continue ;
功能:结束循环体,进入下一个循环周期。
解释:一旦执行了continue语句,程序就跳过循环体中位于该语句后的所有语句,
提前结束本次循环周期并开始下一个循环周期.
break语句和continue语句的注意点:
break语句是结束整个循环过程,不再判断执行循环的条件是否成立;
而continue语句只结束本次循环,并不终止整个循环的执行。
指针变量的定义 一般形式:类型标识符 *变量名 ;
例如: int *ptr1, *ptr2;
用指针法引用数组元素:
假如: int a[10], *p, i ; p=a;
则: *(p+i)、*(a+i)、a[i]、p[i] 等价,
都代表数组a的第i+1个元素。
字符指针变量定义的一般形式: char *指针变量名;
字符指针变量定义时可以赋初值。例如:char *strp=“Hello!”;
而char s[10]; s=“hello!”; ╳
char *ps; ps=“hello!”; √
void *malloc(unsigned size);
功能:分配size字节的存储区。
函数调用例: char *p; p=(char *)malloc(60);
malloc(size)函数
函数原型: void *malloc(unsigned size)
功能:在内存的动态存储区的自由内存部分中分配一个长度为size字节的连续内存区域。
返回值:如果执行成功,它的返回值是该内存区域首字节的指针;
如果执行不成功,它的返回值是0,即NULL。
calloc(n,size)函数
函数的原型:void *calloc(unsigned n,unsigned size)
功能:在内存的动态存储区的自由存储部分中分配n个长度为size字节的连续内存区域。
返回值:如果执行成功,它的返回值为连续内存区域首字节的指针;
如果执行不成功,它的返回值是0,即NULL。
free(ptr)函数
函数原型为:void free(void *ptr)
功能:释放由ptr指向的内存,被释放的内存还回给系统,并成为自由内存 。
ptr是指针或指针变量,它的值通常是由malloc或calloc函数调用时返回的值。
struct 结构名{
成员1的说明;
成员2的说明;
……
成员n的说明;
} ;
引用结构体成员的三种形式:
结构体变量名.成员名
(*p).成员名
p- >成员名
单链表结点的类型定义:
struct 结构名
{
数据成员列表;
struct 结构名 *指针名;
};
结构体中struct 结构名 *指针名;
表示成员指针所指对象的类型就是自身结点类型。
共用体:使几个不同的变量共占同一段内存的结构,称为“共用体”类型的结构。
“共用体”类型变量的定义形式为:
union 共用体名
{成员表列
}变量表列;
例如:union data
{int i;
char ch;
float f;}a,b,c;
注意:只能引用共用体变量中的成员,不能引用共用体变量本身。
结构体类型变量所占内存长度是各成员占的内存长度之和。
共用体类型变量所占内存长度等于最长的成员的长度。
不带参数的宏:#define 宏名 宏体
带参数的宏: #define 宏名(参数名1,参数名2,······参数名n) 宏体
typedef类型声明
typedef说明一种新的数据类型名,其一般形式为:
typedef 类型名1 类型名2;
其中,关键字typedef用于给已有类型重新定义新类型名,类型名1为系统提供的标准类型名
或是已定义过的其他类型名;类型名2为用户自定义的新类型名。
它往往可以简化程序中变量的类型定义。例如:
typedef int WORD;
定义WORD等价于数据类型int,此后,就可用WORD对变量进行类型说明,如:
WORD a,b,c,*pa;
从表面上看,typedef与#define的使用方式十分相似,但两者本质上是不同。
例如:
typedef int COUNT
#define COUNT int
typedef定义的是一种新的数据类型,类型名为COUNT,它是系统标准类型(int)的别名,
在预编译时,编译器会将COUNT与int作为同一个类型来处理。
#define定义的是一个宏,宏名为COUNT,在预编译时,编译器将进行宏替换,
把字符串COUNT替换为字符串int。
FILE 类型的指针变量定义:FILE *指针变量名;
例如:FILE *fp;
含义:fp是一个指向FILE类型结构体的指针变量。
fopen()文件的打开函数
调用方式:FILE *fp ;
fp= fopen(文件名,文件的使用方式);
例∶ FILE *fp;
fp=fopen("stu.dat","r");
fclose(文件指针) 文件的关闭函数
例如: FILE *fp;
fp=fopen(“output.dat”,“r+”);
…… /* 进行读写操作 */
fclose(fp);
注意:fopen函数和fclose函数总是成对出现的。无fclose函数时会导致部分数据丢失
函数名 含义 用法
abs 求整数的绝对值 int abs(int i);
cos 求余弦函数 double cos(double x);
exp 求指数函数 double exp(double x);
labs 取长整型绝对值 long lasb(long n);
log 求对数函数 long double(x)
pow 指数函数(x的y次方)double pow(double x,double y);
sin 求正弦值 double sin(double x);
sqrt 计算平方根 double sqrt(double x);
tan 求正切值 double tan(double x);
itoa 把整型转换为字符型 char *itoa(int value,char *string,int radix);
tolower 把字符转换为小写字母int tolower(int c);
toupper 把字符转换为大写字母int toupper(int c);
rand 随机发生器 void rand(void);
gettime 取得当前系统时间 void gettime(struct time timep);
C语言常用函数综述,个人分享,不足之处望提出宝贵意见。。。