【发布时间】:2013-08-04 21:01:48
【问题描述】:
我正在用 c/c++ 做一些基本的输入解析。
格式:值的数量,后跟空格分隔的值:
3
5 2 4
这里的问题是第一行后面没有空格。这会导致 cin 和 scanf 将 35 读入第一个变量,而不是 3。
int num;
scanf("%d", &num);
int array[num];
for (int i = 1; i <= num; i++) {
scanf("%d", &array[i]);
}
如何让 cin 或 scanf 在换行符处停止解析?
编辑:
即使稍后在读取之前写入变量,也不初始化变量是不是很糟糕? (int num)
如果我输入输入,它会起作用,但如果我粘贴它就不会。有什么线索吗?
【问题讨论】:
-
它们都停在第一个空格处。新行是一个空白,因此它们都停在那里。
-
发布一个小而完整的程序来显示问题。
scanf和流提取器不忽略行尾。 -
真正的问题是,您使用的是 C 还是 C++?
-
@FilipHaglund:一些 C 代码应该在 C++ 中工作,但不是所有 C 代码。例如,您发布的代码是有效的 C99 代码,但不是有效的 C++ 代码。
-
@PeteBecker 问题是关于
scanf和std::cin。 例子是关于scanf.