C语言scanf输入异常求助:输入值与输出结果不符
输入输出不一致的原因及修复方案
你的代码中scanf的格式串"%d, %d"明确要求两个整数输入之间必须是逗号加空格(, ),但你实际输入的是5 9(仅用空格分隔),这会导致:
scanf成功读取第一个整数5到变量a中;- 后续的输入内容(空格和9)无法匹配格式串里的
,,因此变量b没有被正确赋值,它的值是内存中的随机垃圾数据(你看到的16就是这类随机值)。
两种修复方式:
- 调整输入格式:按照代码要求输入,比如输入
5, 9(逗号后必须加空格); - 修改代码格式串:适配空格分隔的输入习惯,将
scanf的格式串改为"%d %d"(%d会自动忽略任意空白字符,包括空格、换行等),修改后的代码如下:
#include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> int main() { int a,b; scanf("%d %d", &a, &b); printf("%d, %d", a, b); return 0; }
内容的提问来源于stack exchange,提问作者Damika
相关产品推荐
相关产品推荐

