举报

scanf函数的格式参数与赋值列表格式不匹配,出现错误输出,想了解scanf的赋值过程,求教!!!

0

小白提问,烦请大老指教!!!操作系统:win7家庭版64位、编译环境:code::blocks17.12

当为scanf输入"12345,xyz"后:        a内存值为:7b 00 00 00,对应10进制的123,这个没问题;        c内存值为:00,这是为什么呢?缓存中的"45,xyz"是怎么处理的呢?

#include<stdio.h>
void main()
{	int a;	char c;
	printf("a=%d,c=%c\n",a,c);//输出变量原始值
	printf("a:%x,c:%x\n",&a,&c);//输出变量地址
	scanf("%3d,%3c",&a,&c);//格式不匹配的输入
	printf("%d,%c",a,c);//输出变量终值
}
C
ava
王帅

2022-10-27

举报
0

就好比说:你给张三下达指令,让张三去树上给你抓条鱼,结果张三给你带回来了松果,你问为什么带回来了松果而不是鱼?或者为什么没有带回来松鼠?

换成李四,也许带回来的就是松鼠了。

这类问题纠结下去毫无意义。

scanf 并不是一个考虑用户体验的函数,使用 scanf 需要明确的知道大概的输入范围,以便编写对应的代码。如果你想处理所有异常情况,你需要获取整行输入,然后逐字符分析出你要的内容。

ava
慢羊羊

2022-10-29

技术讨论社区