C - Language | Function


函数类型

空类型:函数执行后不产生函数值

主函数(main)

主函数main又称入口函数,因为C语言程序总是从main()开始执行,不管main()所在的位置是在开头、中间、亦或是结尾

字符输入函数(getchar) | stdio.h

" getchar() "函数用来从输入设备输入一个字符,该函数的定义为有符号基本整型

" getchar() "函数只能接收一个字符

" getchar() "函数可以接收有符号字符型、有符号基本整型或是转义字符

//属于" 标准输入输出(stdio.h) "库

gChar=getchar();

使用" getchar() "函数进行输入时,会用换行键(回车)进行确认,换行符(确认行为)也算是字符,如果不进行获取,那么下一次使用" getchar() "函数时,取到的则是换行符

gchar=getchar();
getchar();
putchar(getchar());

字符输出函数(putchar) | stdio.h

" putchar() "函数用来向显示设备输出一个字符,该函数的定义为有符号基本整形

" putchar() "函数可以输出一个字符型变量或是一个基本整型变量,亦或是一个常量,甚至是一个转义字符

char a='A';
int b=9;
putchar(a);
putchar(b);
putchar('k');
difine PC '%';
putchar(PC);
putchar(getchar());					/*" putchar() "函数还可以和" getchar() "函数配合,得到输入后,直接打印输出*/
putchar('\n');					/*向显示设备输出换行符*/

格式化输入函数(scanf) | stdio.h

" scanf() "函数为C语言基本函数,用来提供格式化输入

" scanf() "函数的一格式为:scanf(格式控制,地址列表)

格式控制

格式控制是用双引号" " "括起来的字符串,也称" 转换控制字符串 ",包括两种字符," 格式字符 "、" 普通字符 "

格式字符是用来进行格式说明的,其作用是将输出的数据转换为指定的格式输出,格式字符是以" % "字符开头的

普通字符是要按原样输出的字符,包括引号内的逗号、空格和换行符

格式化控制符

格式化控制符的作用是让计算机按" 格式化控制符 "的功能去转换输入设备输入的数据,把他们编程计算机内部的数据

" 格式控制符 "的格式是" % "后加上特定的字符

i			用来输入有符号的十进制整数
d			用来输入有符号的十进制整数
u			用来输入无符号的十进制整数
o			用来输入无符号的八进制整数
x			用来输入无符号的十六进制整数
c			用来输入单个字符
s			用来输入字符串
f			用来输入浮点型(科学记数法或者指数形式)
e			用来输入浮点型(科学记数法或者指数形式)
g			用来输入浮点型(科学记数法或者指数形式)
l			用于输入长整型数据(可相互配合,用于" %ld "、" %lo "、" %lx "、" %lu ",以及double型数据" %if "或" %le ")
h			用于输入短整型数据(可相互配合,用于" %hd "、" %ho "、" %hx ")
n			指定输入的数据所占的宽度(整数)
*			表示指定输入项在读入后不赋给相应的变量

如果在" 格式控制 "字符串中,除了格式化控制符还有其它字符,那么在输入数据时应在对应位置上输入与这些字符相同的字符

scanf("%s:(%ld,%il)",&inString,&inNum1,&inNum2);			/*输入时则应该:number:(5,9) -> Enter*/

//空格在C语言中算作字符

地址列表

地址列表是由" , "分开的若干" 地址项 "组成的,每一个地址项都是一个变量的地址(指针)

运算符" & "是取地址的操作

&a,&b,&c					/*取出" a "、" b "、" c "三个目标的地址,相当于是指定了" a "、" b "、" c "三个目标*/

格式化输出函数(printf) | stdio.h

" printf "全拼为" print format ",为C语言基本函数,用于将各种不同的数据类型转换为" 格式化字符串 ",并打印到标准输出流进行输出(输出若干任意类型字符)

" printf() "函数的参数由" 格式控制 "和" 输出列表 "组成

printf(格式控制,输出列表)
printf(普通字符 格式化占位符 普通字符,输出列表)
printf(普通字符 格式化占位符 普通字符 格式化占位符 普通字符,输出列表,输出列表)

//属于" 标准输入输出(stdio.h) "库

格式控制

格式控制是用双引号" " "括起来的字符串,也称" 转换控制字符串 ",包括两种字符," 格式字符 "、" 普通字符 "

格式字符是用来进行格式说明的,其作用是将输出的数据转换为指定的格式输出,格式字符是以" % "字符开头的

普通字符是要按原样输出的字符,包括引号内的逗号、空格和换行符

格式化占位符

格式化占位符以" % "开头,后加上特定功能字符,用于指定输出的参数值如何格式化

格式化占位符语法:

%[flags][width][.precision][length]spcifier

spcifier

转换字符,必选

c			char			字符,单引号包裹的字符
d			int				有符号十进制整数
i			int				有符号十进制整数
e			double			以指数形式输出单、双精度浮点数
E			double			以指数形式输出单、双精度浮点数
f			double			以小数形式输出单、双精度浮点数
g			double			以%f或%e中较短的输出宽度输出单、双精度浮点数(指数显示小写e)
G			double			以%f或%e中较短的输出宽度输出单、双精度浮点数(指数显示大写e)
o			unsigned int	 无符号八进制(无前导0)
s			char *			字符串,双引号包裹的字符
u			int				无符号十进制
x			unsigned int	 无符号十六进制(无前导0x)
X			unsigned int	 无符号十六进制(无前导0x)
p			void *			指针值
n			int *			存储" %n "位置起之前的,在双引号中已写字符的个数
%			不进行参数转换		%自身,若想输出%字符,需要用%来转义%,而不是转义符\

//如果" % "后面不是转换字符,则其行为没有定义

//除了" X "、" E "、" G "外,其他格式字符必须用小写字母

flags

标志,可选

-			指定被转换的参数在其字段内左对齐
+			指定在输出的数前面加上正负号
空格		   如果第一个字符不是正负号,则在其前面加上一个空格
0			对于数值转换,当输出长度小于字段宽度时,添加前导0进行填充
#			指定另一种输出形式:
			1. 如果转换字符为 o,则第一个数字为 0
			2. 如果转换字符为 x 或 X,则指定在输出的非 0 值前加 0x 或 0X
			3. 对于转换字符为 e、E、f、g 或 G 的情况,指定输出总是包含一个小数点。另外,对于转换字符为 g 或 G,还指定输出值尾部无意义的 0 将被保留

width

宽度,可选

是一个数值,用于指定最小字段的宽度。转换后的参数输出宽度至少要达到这个数值。如果参数的字符数小于该数值,则在参数左边(如果 flags 设置为 -,要求左对齐的话则在右边)填充一些字符。填充字符通常为空格,但是如果 flags 设置为 0,则填充字符为数字 0

.precision

精度,可选

通过" . "分隔字段的宽度和精度。对于字符串,它指定打印的字符的最大个数。对于整数,它指定打印的数字位数(必要时可加填充位0以达到宽度要求)。对于转换字符位" e "、" E "或" f ",它指定打印的小数点后的数字位数。对于转换字符为" g "或" G ",它指定打印的有效数字位数

length

长度修饰符,可选

h			将相应的参数按 signed char 或 unsigned char 类型输出
hh			将相应的参数按 short 或 unsigned short 类型输出
l			将相应的参数按 long 或 unsigned long 类型输出
ll			将相应的参数按 long long 或 unsigned long long 类型输出
L			将相应的参数按 long double 类型输出

//输出长整型变量时,应该在" %d "格式前加上长度修饰符" l "

输出列表

输出列表是要进行输出的数据,可以是" 变量 "或" 一般字符 "

" printf() "可直接打印一般字符串,但如果要打印变量,一定要配合" 格式化占位符 "。" 格式化占位符 "与" 输出列表 "的配合就像键值对,每一个需要打印的变量,都需要与之相对应的" 格式化占位符 "

返回值

函数调用成功,返回实际打印的字符个数

函数调用失败,返回一个负数值

知识点总结

知识点总结 | printf() 2021-4-29
格式化占位符
格式化字符串
spcifier
length
precision
width
flag
char
int
double
unsigned
void
signed
前导0
前导0x
%d
%i
%c
%f
%u
%p
%n
%%

#字符串输出函数(puts) | stdio.h

把字符串输出到标准输出设备,将" \0 "转换为回车换行(用来输出字符串,自动换行)

" puts "函数只能输出字符串,不能输出数值或进行格式变换,并且在最后自动输出一个换行符

" puts "函数支持" 字符串数组 "、" 字符串指针 "、" 字符串 "形式的参数

" puts "函数不像" printf "函数那样支持" 字符串 "+" 数组标识符 "的格式(puts(我不支持这样输出:str);)

puts();
puts("biboli");					/*可以将字符串直接写入" puts "函数中*/
char string[]={'b','i','b','\0','o','l','i','\0',};
puts(string);					/*" puts "函数输出时,遇到" \0 "将会停止输出,并在结尾自动换行(\0后面的内容不再输出)*/

#字符串输入函数(gets) | stdio.h

" gets "函数的参数是形式参数

gets(a);					/*变量a获得了通过设备输入的函数,并将换行符转换为终止字符" \0 "*/

通过声明字符数组不赋初值,配合" gets "函数获取字符串,并用" puts "函数输出

char string[30];
gets(string);
puts(string);					/*通过" gets "函数获取输入字符串,并输出*/

#字符串复制函数(strcpy) | stdio.h

" strcpy "函数将复制特定长度的字符串到一个字符串中

strcpy(目的字符数组标识符,源字符数组标识符);
char string[]={'i','m','k','i','n','g','\0'};
char string9[]={'b','i','b','o','l','i','\0'};
strcpy(string,string9);

" 目的字符数组 "应有足够的长度,否则不能装入所复制的字符串(目的字符数组不能比源字符数组短)

" 目的字符数组 "只能是" 数组标识符 ",但" 源字符数组 "可以是" 数组标识符 ",也可以直接是" 常量字符串 "

char string[];
strcpy(string,"biboli");					/*使用" strcpy "函数直接将字符串赋值给数组*/

#字符串连接函数(strcat) | stdio.h

" strcat "函数用来将一个字符串拼接在另一个字符串的末尾,使其组成一个新的字符串

strcat(目的字符数组标识符,源字符数组标识符);

" strcat "函数的具体功能是将" 源字符数组 "中的字符串拼接到" 目的字符数组 "中字符串的后面,同时删除" 目的字符数组 "的结束标志" \0 "

目的字符数组比拥有足够的长度,否则将无法拼接完整,导致产生错误

char string1[7]={"bib"};
char string2[]={"oli"};
strcat(string1,string2);

#字符串比较函数(strcmp) | stdio.h

" strcmp "函数用来将一个字符串与另一个字符串从首字母开始,按照" ASC "码的顺序进行逐个比较,直到两个字符串的" ASC "顺序不相等或者遇到" 结束标识符\0 "时结束比较,并返回结果(比较字符串常量或字符数组有没有不同)

strcmp(字符数组标识符1,字符数组标识符2);

两个字符串进行比较时,若出现不同的字符,则以第一个不同字符的比较结果作为整个比较的结果(发现不同则返回比较结果)

#字符串大写函数(strupr) | stdio.h

strupr(字符串);

知识点总结

知识点总结 | strupr() 2021-5-8

#字符串小写函数(strlwr) | stdio.h

strlwr(字符串);

#字符串长度函数(strlen) | stdio.h

" strlen "函数用来计算字符串的实际长度(不包含字符串结束标志" \0 ")

strlen(字符数组标识符);
posted @ 2021-05-11 16:31  biboli  阅读(104)  评论(0编辑  收藏  举报