1、需要记住的常见ASCII码
'0':48 'A':65 'a':97
2、需要多组输入时的方法,EOF的本质
EOF的本质就是-1
3、define不是关键字,而是预处理命令
4、防止头文件重复引用
5、转义字符/b表示退格
转义字符总结
理论上如果在写字符的话会将最后一个字符覆盖掉。vs2022使用\b会直接删掉最后一个字符,可能是编译器的原因,而vs2013就不会删除。
6、占位符相关注意点
printf函数常用占位符
scanf函数相关占位符注意点
上⾯所有占位符之中,除了 %c 以外,都会自动忽略起首的空白字符。 %c 不忽略空白字符,总是返回当前第⼀个字符,无论该字符是否为空格。 如果要强制跳过字符前的空白字符,可以写成 scanf(" %c", &ch) ,即 %c 前加上⼀个空格,表示跳过零个或多个空白字符。
下面要特别说⼀下占位符 %s ,它其实不能简单地等同于字符串。它的规则是,从当前第⼀个非空白字符开始读起,直到遇到空白字符(即空格、换行符、制表符等)为止。 因为 %s 不会包含空白字符,所以⽆法⽤来读取多个单词,除非多个 %s ⼀起使⽤。这也意味着, scanf() 不适合读取可能包含空格的字符串,比如书名或歌曲名。另外, scanf() 遇到 %s 占位符,会在字符串变量末尾存储⼀个空字符 \0 。
scanf() 将字符串读⼊字符数组时,不会检测字符串是否超过了数组⻓度。所以,储存字符串时, 很可能会超过数组的边界,导致预想不到的结果。为了防⽌这种情况,使⽤ %s 占位符时,应该指定读⼊字符串的最⻓⻓度,即写成 %[m]s ,其中的 [m] 是⼀个整数,表⽰读取字符串的最⼤⻓度,后⾯的字符将被丢弃。
#include <stdio.h>
int main()
{
char name[11];
scanf("%10s", name);
return 0;
}
上⾯⽰例中, name 是⼀个⻓度为11的字符数组, scanf() 的占位符 %10s 表⽰最多读取⽤⼾输⼊ 的10个字符,后⾯的字符将被丢弃,这样就不会有数组溢出的⻛险了。