1.初识scanf
1.1scanf的基本用法:输入数据用的(scanf-是,vs上特有的,不通用)
必须保持数据类型和占位符一致
%f默认保留6位小数,可通过%.nf实现保留位数
可多个占位符使用,先缓存再解读,会⾃动过滤空⽩字符,包括空格、制表符、换⾏符等
每次按下回⻋键以后,
scanf() 就会开始解读,如果第⼀⾏匹配第⼀个占位符,那么下次按下回⻋键时,就会从第⼆个占
位符开始解读(-6.0e5为科学计数法)
1.2scanf的返回值
scanf的返回值是int类型,为成功读取的返回值个数如果没有读取任何项,或者匹配失败,则返回 0 。
如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量EOF(-1)。如果没有读取任何项,或者匹配失败,则返回 0
1.3scanf的字符类型注意事项
%c 不忽略空⽩字符,总是返回当前第一个读取的字符,无论是否是空白字符%s ,它其实不能简单地等同于字符串。它的规则是,从当前第⼀个⾮空⽩字符开始读起,直到遇到空⽩字符(即空格、换⾏符、制表符等)为⽌
因为 %s 不会包含空⽩字符,所以⽆法⽤来读取多个单词,除⾮多个 %s ⼀起使⽤。这也意味着,
scanf() 不适合读取可能包含空格的字符串,⽐如书名或歌曲名。另外, scanf() 遇到 %s 占位
符,会在字符串变量末尾存储⼀个空字符 \0 。
scanf() 将字符串读⼊字符数组时,不会检测字符串是否超过了数组⻓度。所以,储存字符串时,很可能会超过数组的边界,导致预想不到的结果。为了防⽌这种情况,使⽤ %s 占位符时,应该指定读⼊字符串的最⻓⻓度,即写成 %[m]s ,其中的 [m] 是⼀个整数,表⽰读取字符串的最⼤⻓度,后⾯的字符将被丢弃。1.4赋值忽略符(代码出问题了,明天加if一块补上)
%*c 的作用是读取并丢弃一个字符。在我的代码中,它的使用意味着 scanf 会读取一个字符(通常是 -),但它只在输入中存在且存在于预期位置时才会有效。如果输入中没有 - 或者它的位置不符合 %*c 的位置,那么它将不会产生任何影响