scanf函数(详细)C语言基础
下⾯要特别说⼀下占位符
%s
,它其实不能简单地等同于字符串。它的规则是,从当前第⼀个⾮空⽩字符开始读起,直到遇到空⽩字符(即空格、换⾏符、制表符等)为⽌。因为 %s
不会包含空⽩字符,所以⽆法⽤来读取多个单词,除⾮多个
%s
⼀起使⽤。(但上面提到的方法可以,比较小众)这也意味着,scanf() 不适合读取可能包含空格的字符串,⽐如书名或歌曲名。另外,
scanf()
遇到
%s
占位符,会在字符串变量末尾存储⼀个空字符 \0
。scanf() 将字符串读⼊字符数组时,不会检测字符串是否超过了数组⻓度。所以,储存字符串时,很可能会超过数组的边界,导致预想不到的结果。为了防⽌这种情况,使⽤ %s
占位符时,应该指定读⼊字符串的最⻓⻓度,即写成 %[m]s
,其中的
[m]
是⼀个整数,表⽰读取字符串的最⼤⻓度,后⾯的字符将被丢弃。