我试图一次读两行(例如:这是一行)但由于某种原因,我无法同时读取这两行...... :(请帮忙...... < / p>
int main() {
freopen("input.txt", "r", stdin);
char c, one[100], two[100];
int i = 0, t;
cin>>t;
while(t--) {
while((c = getchar()) != '\n') {
one[i++] = c;
}
one[i] = '\0';
i = 0;
while((c = getchar()) != '\n') {
two[i++] = c;
}
two[i] = '\0';
cout<<one<<endl;
cout<<two<<endl;
}
}
输入:这是第一行 这是第二行 输出:这是第一行(每次迭代)..请帮助..:|
答案 0 :(得分:1)
您可以使用std :: getline:
int main(){
char one[100], two[100];
std::ifstream ifs;
ifs.open("input.txt", std::ifstream::in);
ifs.getline(one, 100);
ifs.getline(two, 100);
std::cout << one << std::endl;
std::cout << two << std::endl;
return 0;
}
答案 1 :(得分:0)
我与输入无关,但在阅读每一行之前,您需要重置i
。从它的外观来看,你只是在第一行中间的某个地方附加。下面是读取一行的样子(显然,如果你读取的行数多于执行相同操作所需的行数,即调用函数执行相同的逻辑):
{
size_t i(0);
for (int tc; i < sizeof(one) && (tc = getchar()) != EOF && tc != '\n'; ++i) {
one[i] = tc;
}
one[i] = 0;
}
我还用两个额外的必要条件来增强条件,一个用于避免缓冲区溢出,另一个用于处理已到达末尾的流。当然,我不会做这样的事情,而是会使用
std::string one;
if (std::getline(std::cin, one) && std::getline(std::cin, two)) {
std::cout << "one='" << one << "' two='" << two << "'\n";
}