scanf 空白字符最全知识点总结(考试/刷题必背)
一、核心规则格式串中空白字符的统一作用空格、\n、\t 效果完全一样作用自动读取并丢弃缓冲区中所有连续空白字符一直清空直到遇到第一个非空白字符停止。二、各格式符对「空白」的区别高频考点1、自动跳过空白常规%d、%lf、%s自带机制自动忽略前面所有空格、回车、Tab不需要手动加空格。2、不跳过空白唯一特例%c不会自动跳过任何空白缓冲区剩什么就读什么回车 \n、普通空格都会被当作有效字符读入。三、% c 两种标准写法必考写法 1scanf( %c, ch); %c 前面加空格刷题首选功能先清空缓冲区所有残留空白再读取有效字符。解决痛点上一次输入遗留回车导致 % c 直接读空、无法输入。适用场景输入单个字符、选项、开关字符等绝大多数场景。写法 2scanf(%c, ch);不加空格功能原样读取缓冲区下一个字符可以读到空格、换行、Tab。适用场景需要逐字符解析文本、统计空格 / 换行的特殊场景。四、致命避坑❌ 错误写法scanf(%c , ch); 空格写在 % c 后面含义读完字符后强制继续吞噬后续空白极易导致程序卡死、等待多余输入几乎不用考试、刷题一律禁止。五、经典报错案例错误代码int a; char ch; scanf(%d, a); scanf(%c, ch);错误原因输入数字按下回车后缓冲区残留 \n第二个 %c 直接读取残留的换行符跳过用户输入步骤。✅ 正确修复scanf( %c, ch);