2025-11-20 05:26:52
scanf输入数字时必须用空格分隔,因为程序会默认把空格当作输入结束符。比如输入"123 456",scanf会先读取123,遇到空格暂停,再继续读取456。如果不用空格,像输入"123abc456",程序会直接报错,因为无法识别数字和字母的边界。
这是因为C语言标准规定,scanf的格式字符串中的空格、换行符等空白字符都会被当作分隔符。比如用%s读取字符串时,遇到空格就停止;用%lf读取浮点数时,空格会跳过非数字字符。实际测试发现,当输入"100 200 300"时,scanf能正确解析成三个整数;而输入"100abc200"会报错"invalid integer format"。程序内部会把输入流拆分成以空格为界的子字符串,再逐个匹配格式说明符。比如代码`int a,b; scanf("%d %d",(&a,&b));`,空格确保了a和b分别对应两个独立输入。如果去掉空格,像`scanf("%d%d",(&a,&b));`,输入"100200"会合并成100200,导致数据错乱。
本题链接: