putchar
功能:输出一个字符
函数声明:
cpp
int putchar(int c);
返回值:参数c的ASCLL码值
c:要输出的字符,可以为字符常量、字符变量或表达式
注意点:输出的结果不带'\n'
getchar
功能:从键盘读一字符
函数声明:
cpp
int getchar(void);
返回值:获取数据的ASCLL码值,当输入ctrl+d时会退出获取,此时返回值为-1
返回值为int型而不是char,unsigned char型是因为要返回-1和0~255范围,int型的范围才足够。
注意点:当获取多个字符时,回车也会被getchar获取,示例代码如下:
printf
功能:按指定格式向显示器输出数据
函数声明:
cpp
printf("格式控制串",输出表);
格式控制串:
- 格式说明:%[修饰符]格式字符,用于指定输出格式
- 普通字符:原样输出
格式字符汇总
整型输出有:%i、%d、%ld、%u、%lu、%o、%lo、%x、%lx
其中:l代表long或者double;l可以换成h,代表short型
字符型输出有:%c、%s
浮点型输出有:%f、%lf、%e、%le、%E、%lE、%g、%lg
其中:l代表long或者double
地址输出:%p
修饰符汇总
1、设置域宽(m):
设置输出数据的域宽,显示m个长度。
- 如果原数据<m个长度,则会补其m个长度;
- 如果原数据>m个长度,则会显示全部内容,不会截取。
2、限制输出位数(.n):
可以限制字符串、实数的输出位数。
- 若原数据为字符串,则指定输出n个字符串,多余的会被截取。
- 若原数据为实数,则指定输出小数点后n位,具有四舍五入原则。
3、设置左右对齐(-):
默认对齐方式为右对齐,加上" - "之后变成左对齐
4、显示有符号数正数符号(+)
有符号正数前会加上" + ",负数还是自动加上" - "
5、空位补0(0):
默认空位补的是空格,0会让空位补0
6、自动显示十六进制、八进制的前缀(#)
十六进制前缀是0x,八进制前缀是0
scanf
功能:按指定格式从键盘读入数据,存入地址表指定
函数声明:
cpp
int scanf("格式控制串",&地址表);
返回值:输入的有效数据的个数
输入停止规则
对于数值型数据,空格、Tab、回车、非法字符会让输入停止。
对于字符型数据,只有非法字符会让输入停止。
非法字符就是不符合要求的字符,比如要输入%d,却输入了36.1,那么" . "就是非法字符
格式控制串汇总
格式控制串与printf完全一致。
修饰符汇总
指定获取多个位(m):
输入的数据最多获取m个,多于m个的会被放到下一个格式控制串去输入,少于m个字符无影响。
抑制符(*):
配合m可以指定跳过m个字节不赋值
注意点
1、地址表需要有&取地址符号;
2、格式控制串中如果出现普通字符,如" , " 那么在输入时也要输入" , "
当普通字符位空格时,输入空格和回车都可以被获取到
3、当先获取数值型数据,再获取字符型数据时,回车会被获取(类似getchar的问题)
下面提供了三种解决方法:
4、当前面有m修饰时,但输入数据大于m时,数据会被下一个scanf接收
scanf获取字符串注意点
使用scanf("%s",arr);获取字符串时,会出现空格不能被获取,情况如下:
解决方法:使用scanf("%[^\n]",arr);来获取以换行为结束符的字符串,效果如下:
gets(不建议使用)
功能:从键盘输入一以回车结束的字符串放入字符数组,并自动加'\0'
函数声明:
cpp
char * gets(char *s);
s:字符串存入的地方
特点:
- 输入的字符串中有空格也可以输入
- 输入串长度要注意,保证数组内存空间够用
puts
功能:向显示器输出字符串,并追加换行
函数声明:
cpp
int puts(const char *s);
s:要打印的字符串
特点:
- s必须为字符串,即:以' \0 '结尾
- 自动输出\n,即:puts("hello") 就是 printf("hello\n")