Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 输入过程中两个整数之间的逗号_C_Input_Scanf_Format String - Fatal编程技术网

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()
函数族的返回值,以确保函数调用成功。

您的输入是什么?看起来像是:您尝试过什么吗?您是否不了解函数的行为?