如何用C存储标准输入中的连续读取输入?类似于while (cin >> x)在C++?
假设我想将一组整数存储到没有预定义大小的数组/向量中。在C++中,我可以这样做:
vector<int> vec;
while (cin >> x) {
vec.push_back(x);
}我在网上没有发现任何类似于while (cin >> x)的东西。
对于类似于while (cin >> x)的东西,我发现最接近的是:
int x;
while(scanf("%d", &x) == 1) {
// do stuffs
}但是它所做的就是不断地读取每个输入,包括在终端中使用Enter键。所以它不会停止从终端读取输入。
发布于 2022-10-06 17:07:30
如果问题是如何在C和C++中实现自由形式的C++输入,那么scanf确实是一个不错的选择。这个简单的C程序:
#include <stdio.h>
int main()
{
int x;
int i = 0;
while(scanf("%d", &x) == 1) {
printf("%d: %d\n", ++i, x);
}
}正好对应于这个简单的C++程序:
#include <iostream>
using namespace std;
int main()
{
int x;
int i = 0;
while (cin >> x) {
cout << ++i << ": " << x << endl;
}
}对于这两个程序,输入
11
22
33
44 55 66
x产生输出
1: 11
2: 22
3: 33
4: 44
5: 55
6: 66请注意,在这两种情况下,空行都会被忽略,一行上的多个数字将被单独读取。非数字输入(此处为x)终止输入。
在Unix和Linux上,control也可以用来终止输入,在Windows上也可以使用control。
如果问题是如何将整数存储到自动增长的向量中,请参见How to replicate vector in c?或C Vector/ArrayList/LinkedList。
https://stackoverflow.com/questions/73966803
复制相似问题