【无标题】

文章详细介绍了C语言中的printf和scanf函数的使用,包括格式化输出和输入的规则,如占位符%d,%s,%c,%f等的含义和用法,以及如何处理空格、制表符和换行符。还提到了安全问题,如在VS中使用scanf_s替代scanf,并讨论了输入输出可能出现的问题,如类型匹配和边界越界。
摘要由CSDN通过智能技术生成

2023_07_23课堂笔记及学习总结

课堂笔记

  1. printf()函数,意思是按照指定的格式打印,’f’的意思是“format”//格式化;
  2. printf()函数中的占位符和参数是一一对应的,如果有n个占位符,就应该有n+1个占位符;
  3. 常见占位符:%d(整型),%s(字符串),%c(字符),%e(十六进制的浮点数,字母输出是小写),%A(十六进制的浮点数,字母输出是大写),… …;
  4. printf()函数输出格式:例:printf(“%5d”,xx),输出整型最少占5位,不足5位左边补空格;printf(“%-5d”,xx),输出整型最少占5位,不足5位右边补空格,printf(“%12f”,xx),输出浮点数最少占12位(含小数位),不足12位左边补空格//单精度浮点数小数位默认6位小数,printf(“%.5f”,xx),输出浮点数小数位5位,printf(“%*.*fl”,m,n,f),m,n分别代替*,… …;
  5. 在VS里面用scanf()函数不安全,需要改成scanf_s(),或者在第一行加入 #define _CRL_SECURE_NO_WARNINGS,最好用后者的方法,因为scanf_s()不是库函数,只支持VS,其他IDE不支持,在新建模版newc++file.cpp中加入这句话,以后新建的.c文件开头自动包含次短代码;
  6. scanf()函数会自动过滤空格,制表符,换行符,但是%c不会忽略空格,只要scanf(“ %c”,xxx)//%前加‘ ’,就可以忽略空格;
  7. scanf()函数如果是%s,遇到空格会停止;
  8. scanf()读取字符串并赋值给数组的时候可能会越界,scanf不会管数组的长度,所以在用scanf()给字符串数组赋值时,要这样写:scanf(“%ms”,xxx),m代表读取的字符个数;
  9. scanf(“%d%*c%d%*c%d”,xx,xx,xx),给输入设定格式,例:输入1988-02-18,输出1988 02 18;
  10. scanf()的返回值是在键盘上读取的数据个数,如果没读取任何值,即EOF,返回值是-1;
  11. C语言支持的三种结构语句形式:顺序结构,选择结构,循环结构;
  12. 选择语句中,else默认只会和最近的if语句匹配;
  13. 关系操作符表达式不能连续写,否则表达式从第一个式子开始判断,如果为真,就会变成1,否则会变成0;

学习总结

  1. scanf()函数中的参数对应的占位符必须与对应的变量类型保持一致,实际输入时,若输入的类型与预设的变量类型格式不一致,每个参数读取时,读到不属于自己变量类型的字符时才停止;printf()函数的占位符可不参数对应的变量类型一致,但是输出的结果也会与预想的不一致,例:
 #include<stdio.h>
 int main()
 {
     int a=0;
     char b=0;
     float c=0.0f;
     scanf("%d%c%f",&a,&b,&c);
     printf("%c,%d,%d\n",a,b,c);
     return 0;
 }

上述代码若输入10,3.14,3.14,输出则为10 ,51 ,536870912,b读取的是3(以字符3接收),因为字符也属于整型,根据ASCII码表,直接转换为51输出整数,c读取的是0.14,以二进制存储后,再以整型输出就是个很大的数字;

  1. 常用占位符:

%d:整型类型,对应int;
%c:字符类型,对应char;
%s:字符串类型,对应char;
%f:单精度浮点数,对应float;
%lf:双精度浮点数,对应double,输出是%f;
%u:无符号整型,对应unsigned int;
%o/%x:八进制/十六进制整型,占位符的字母大小写决定输入输出的字母大小写,若"%#o"/“%#x”,则在数字前带o/ox;
%p:指针;
%ld:长整型,对应long;
%lu:无符号长整型,对应unsigned long;
%lld:加长整型,对应long long;
%hd:短整型,对应short;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值