%d第一次遇到空格或回车时会跳过所有空格。
以键入 100 为例
scanf("%d "):%d首次遇到空格会跳过,直到遇到数值100提取,再遇到空格结束提取。此后轮到%d后的空格进行匹配,会匹配100后的空格包括回车(所以如果后面都是回车或者空格的话,那么就会一直匹配,就是所谓的“吃空白”),直到用户输入非空格字符,匹配结束。例如 100 1
scanf(" %d"):首先空格匹配100前的空格,遇到数值100,结束匹配。轮到%d提取数值100,遇到回车结束提取。
而当我们输入100时,同理,空格遇到数值匹配失败,轮到%d匹配数值,提取成功,再遇到回车结束提取。