scanf会修改不匹配的对应参数吗?

时间:2019-06-07 01:24:40

标签: scanf

给出以下代码,并假设唯一的输入是字母A,后跟换行符,由于匹配失败,scanf应该返回0:

int x;
scanf("%d", &x);

我的问题是,即使输入中没有任何内容匹配%d格式,只要它仍然返回0,是否合法允许scanf更改x的值。语言标准似乎无法解决此问题,因此我的第一个印象是答案是否定的。

1 个答案:

答案 0 :(得分:1)

通过仔细阅读标准定义,该函数仅在扫描成功时修改指向的值。如果返回值小于2,则scanf("%d %d %d", &a, &b, &c)不应修改b