C 输入过程中两个整数之间的逗号
如果我执行以下操作,会发生什么C 输入过程中两个整数之间的逗号,c,input,scanf,format-string,C,Input,Scanf,Format String,如果我执行以下操作,会发生什么 scanf("%d,%d", &i, &j); 并提供导致匹配失败的输入?它会将垃圾存储到j中吗?输入必须与提供的格式完全匹配,才能成功使用scanf() 引用C11,第§7.21.6.2章,fsacnf(),(重点) 除了%说明符之外,输入项(或者,在%n指令的情况下 输入字符计数)转换为适合转换说明符的类型如果 输入项不是匹配序列,指令执行失败:此 条件是匹配失败。除非分配抑制由*指示,否则 转换的结果被放置在下面的第一个参数所指向的对象中
scanf("%d,%d", &i, &j);
并提供导致匹配失败的输入?它会将垃圾存储到j
中吗?输入必须与提供的格式完全匹配,才能成功使用scanf()
引用C11
,第§7.21.6.2章,fsacnf()
,(重点)
除了%
说明符之外,输入项(或者,在%n
指令的情况下
输入字符计数)转换为适合转换说明符的类型如果
输入项不是匹配序列,指令执行失败:此
条件是匹配失败。除非分配抑制由*
指示,否则
转换的结果被放置在下面的第一个参数所指向的对象中
尚未收到转换结果的格式参数。如果此对象
没有适当的类型,或者无法表示转换的结果
在对象中,行为是未定义的
以及
当所有指令
如果指令失败(如下所述),函数返回。
那么综合上述案例,
- 对于像
这样的输入,扫描将成功。100200
和i
将分别保存给定值j
和100
200
- 对于像
这样的输入,扫描将失败(匹配失败),并且100-200
的内容将保持不变,即j
未通过j
操作分配任何值scanf()
建议:始终检查
scanf()
函数族的返回值,以确保函数调用成功。您的输入是什么?看起来像是:您尝试过什么吗?您是否不了解函数的行为?