为什么这个scanf()的两个不同的输入会给出两个不同的输出?
Why does two different input to this scanf() gives two diffrent outputs?
#include <iostream>
using namespace std;
int main()
{
int n,m;
scanf("%d : %d",&n,&m);
cout<<n<<m;
}
为什么给定 1 2 的输入给出输出10,而输入 1:2 给出输出 12。
根据您的描述运行不同的代码示例后。我发现,scanf("%d :%d")
将侦听用户的输入,并且当提供(value1:value2)
类型的输入时:
将用作分隔符。而如果您不提供带有:
的输入,它将仅选择初始值并将GARBAGE
值分配给后面的值。
您可以使用不同的字符(例如/
(代替:
,它将以相同的方式工作。
scanf
仅在输入与提供的格式匹配的情况下读取(并分配(。所有其他参数(即不匹配的参数(保持不变。scanf
的返回值是匹配(并已分配(的项目数。
若要说明这一点,请参阅以下程序。我正在使用sscanf
并以字符串而不是用户输入的形式传递参数;但结果与您使用scanf
并在控制台中输入值时相同:
int main()
{
int n=0,m=0;
int itemsScanned = 0;
itemsScanned = sscanf("1:2","%d : %d",&n,&m);
std::cout << "items scanned: " << itemsScanned << "; n: " << n << "; m: " << m << std::endl;
n=0;m=0; // reset...
itemsScanned = sscanf("1 2","%d : %d",&n,&m);
std::cout << "items scanned: " << itemsScanned << "; n: " << n << "; m: " << m << std::endl;
}
输出:
items scanned: 2; n: 1; m: 2
items scanned: 1; n: 1; m: 0
相关文章:
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- 为什么这个scanf()的两个不同的输入会给出两个不同的输出?
- 为什么这两个版本的代码给出不同的输出
- 我需要帮助在一个类中输入两个字符串并获取其输出
- 有没有办法我可以在 C++ 中使用 if 语句来说明如果一个字符串不是两个名称的 eqal,它会给出一个输出,ATM i
- 如何在 main 函数中输出两个新字符串C++?
- 在函数中连接两个字符,并在 C++ 中返回输出
- 为什么两个模板函数的输出不同?
- 当直接渲染到WASAPI时,两个流中的一个流没有音频输出
- 当被一个输入分开时,有两个控制台输出同时显示
- 为什么要更改这两个代码的输出"&"字符?
- C++问题,我的两个源代码应该具有相同的输出,但它们是不同的
- STL:在没有输出的情况下处理两个集合
- 为什么这两个代码给出不同的输出?// bits.c float_i2f
- 无法在同一行上获取输出,在 C++ 中两个输出之间有空格
- 将两个使用C++流的共享库导入 python 会导致输出损坏
- 如果两个输入流相等,我如何构造主()到输出是
- 输出错误:两个不同编译器上的不同输出:Prime Cryptarithm USACO
- 这是循环击中两个输出,而不仅仅是我期望的输出
- C++ If/else 打印出两个输出