7月23日学习笔记

scanf和printf函数介绍

printf

基本用法

printf()的作用是将参数文本输出到屏幕,可以定制输出文本的格式。printf函数执行结束时不会在结尾自动添加换行符,运行结束后光标会停留在输出结束的地方,不会换行。在文本的后面加上\n即可换行。该函数在标准库中,在代码开头要引用头文件<stdio.h>

占位符

所谓占位符,表示该位置可以被其他值代入。printf()中的占位符与参数是一一对应的关系,如果有n个占位符,参数就应该有n+1个。如果参数少于对应的占位符数量,结果可能输出内存中的任意值。
printf可以定制占位符的输出格式

占位符列举

%a:十六进制浮点数,字母输出为小写
%A:十六进制浮点数,字母输出为大写
%c:字符
%d:十进制整数
%e:使用科学计数法的浮点数,指数部分的e为小写
%E:使用科学计数法的浮点数,指数部分的E为大写
%i:整数,基本等同于%d
%f:小数(包含float类型和double类型)
%g:6个有效数字的浮点数,整数部分一旦超过6位,就会自动转为科学计数法,指数部分的e是小写。 //在%G中,指数部分的E为大写
%p:指针
%o:八进制整数
%s:字符串
%u(unsigned int):无符号整数
%x:十六进制整数
%zd:size_t类型
%%:输出一个百分号
%[]:在方括号中指定一组匹配的数据,比如%[0-9],遇到不在集合中的字符,匹配将会停止。

限定宽度
#include <stdio.h>
int main()
{
   printf("%5d\n",123);     //输出为  123(前面有两个空格)
   printf("%-5d\n",123);    //输出为123  (后面有两个空格)
   printf("%+d\n",12);      //输出为+12
   printf("%+d\n",-12);     //输出为-12
   return 0;
}

%5d表示该占位符的宽度至少是五位,若没有五位则用空格补齐,输出的值默认是右对齐,即前面有空格,若要改成左对齐则需在数字前加负号
对于小数,由于小数的默认显示精度是小数点后六位,所以限制宽度时要注意字符实际宽度
对于显示正负号,就在%后面加一个+

限定小数位数
#include <stdio.h>
int main()
{
 printf("This is %.2f\n", 0.5);    //输出结果为This is 0.50
 printf("this is %5.2f\n",0.5);    //输出结果为this is  0.50(前面有一个空格)
 printf("%*.*f\n",5.2,0.5);        //输出结果为 0.50(前面有一个空格)
 return 0;
}

%+小数点+数字可以限制小数位数,可以与限定宽度占位符一起连用
此外,最小宽度和小数位数的限制值都可以用 * 代替,会被后面的替换

输出部分字符串

%s,是字符串的占位符,默认是全输出。如果只想输出部分,就需要在%后面+小数点+限制的字符个数

#include <stdio.h>
int main()
{
 printf("%.5s\n", "hello world");   //输出hello
 return 0;
}

scanf

scanf是用来读取用户的键盘输入的,等待用户输入数据程序才会继续运行,语法和printf类似,头文件是<stdio.h>

scanf("%d%d%f%f", &a, &b, &c, &d)      //格式

前两个占位符是整数,后两个是浮点数,输入的值依次存入a,b,c,d中
scanf处理数值占位符时会自动过滤空白字符,包括空格,制表符,换行符等。所以用户的输入数据之间,中间有空格不影响解读

scanf的返回值

scanf的返回值是一个整数,表示成功读取变量个数
如果没有读取任何项,或者匹配失败,则返回0。如果在成功读取任何数据之前,发生了读取错误或者遇到读取到文件结尾,则返回常量EOF (-1)

scanf的占位符使用

在占位符中,除了%c,scanf都会忽略起首的空白字符。原因是空格也算一个字符。如果要强制跳过字符前的空白字符可以写成scanf(" %c", &ch),即在%c前面加一个空格,表示跳过0个或多个空白字符
对于%s,它从第一个非空白字符读起,直到遇到空白字符(空格,换行符,制表符)为止,所以%s无法用来读取多个单词,除非多个%s一起使用,这也意味着%s不适合用于含空格的字符串。此外在字符的末尾会自动储存一个\0

注意事项

在scanf输入字符串的时候,并不会检测字符串的长度是否超过数组长度,一旦超过程序将崩溃,为了防止这种情况的发生,使用%s占位符时,应该指定读入字符串的最大长度,即写成%[m]s,其中m是一个整数,表示读取字符串的最大长度,超过的数据会被丢弃

数值忽略符

有时候,用户会输入不符合规定的格式,为了避免这种情况,scanf提供了数值忽略符,即在%后面+一个*,也就是%*,这样该占位符就不会返回值,解析后将会被丢弃

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值