标签: scanf
给出以下代码,并假设唯一的输入是字母A,后跟换行符,由于匹配失败,scanf应该返回0:
int x; scanf("%d", &x);
我的问题是,即使输入中没有任何内容匹配%d格式,只要它仍然返回0,是否合法允许scanf更改x的值。语言标准似乎无法解决此问题,因此我的第一个印象是答案是否定的。
答案 0 :(得分:1)
通过仔细阅读标准定义,该函数仅在扫描成功时修改指向的值。如果返回值小于2,则scanf("%d %d %d", &a, &b, &c)不应修改b。
scanf("%d %d %d", &a, &b, &c)
b