C - Language | Function
- 函数类型
- 主函数(main)
- 字符输入函数(getchar) | stdio.h
- 字符输出函数(putchar) | stdio.h
- 格式化输入函数(scanf) | stdio.h
- 格式化输出函数(printf) | stdio.h
- #字符串输出函数(puts) | stdio.h
- #字符串输入函数(gets) | stdio.h
- #字符串复制函数(strcpy) | stdio.h
- #字符串连接函数(strcat) | stdio.h
- #字符串比较函数(strcmp) | stdio.h
- #字符串大写函数(strupr) | stdio.h
- #字符串小写函数(strlwr) | stdio.h
- #字符串长度函数(strlen) | stdio.h
函数类型
空类型:函数执行后不产生函数值
主函数(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(字符数组标识符);