Tôi đang cố gắng sử dụng freopen() để in ra tệp văn bản và màn hình, nhưng tôi chỉ đạt được việc in một tệp.Sử dụng freopen() để in ra tệp và màn hình
Tôi đã tự hỏi liệu có dễ dàng lưu đầu ra chương trình vào một tệp và in nó ra màn hình không? Bởi vì tôi đã làm việc này theo một cách khác, nhưng cuối cùng tôi phải in ra mọi tuyên bố hai lần. Một là cho các tập tin khác chỉ cho đầu ra.
Lưu ý: Tôi mới tham gia C++ và tôi đang cố gắng học nó cho một lớp học tiếp theo để câu trả lời trực tiếp là cần thiết vì tôi đã xem trực tuyến và không thể tìm thấy bất kỳ câu trả lời đơn giản nào cho giải pháp này bên cạnh.
Dưới đây là những gì tôi có cho đến nay:
#include<iostream>
#include<time.h>
#include<stdlib.h>
#include<fstream>
using namespace std;
void menu(){
cout << "\t********************************************************\n"
<< "\t* Welcome to slot machine. *\n"
<< "\t* Would you like to play? (1 to play, 2 not to play) *\n"
<< "\t********************************************************\n\n";
return;
}
void update(int arr[], int &token) {
if (arr[0]==arr[1] && arr[1]==arr[2]) {
token+=4;
cout << "You win\n\n";
} else if (arr[0]==arr[1] || arr[1]==arr[2] || arr[0]==arr[2]) {
token+=1;
cout << "You got two out of three\n\n";
} else {
token-=1;
cout << "You lose\n\n";
}
}
int main() {
freopen("file.txt", "w", stdout);
int x, arr[3], token=4;
srand(time(0));
menu();
cin >> x;
while(token!=0) {
cout << "You have " << token << " tokens\n\n"
<< "Pull? (1 to pull, 2 not to pull)\n\n";
cin>>x;
if(x==1) {
for(int i=0; i<3; i++) {
arr[i]=1+rand()%10;
}
cout << "\t\t";
for(int j=0; j<3; j++) {
cout << arr[j] << " ";
}
cout << "\n\n";
update(arr,token);
}
else{
cout << "OK\n";
}
}
cin.get();
return 0;
}
+1 cho câu hỏi được đặt đúng. –
Bạn sẽ vẫn phải viết mọi thứ hai lần. freopen (..., stdout) sẽ thay thế đích hiện tại của stdout bằng tập tin (handle) của đối số đầu tiên của freopen().Một tệp (hoặc luồng) trong C/C++ chỉ có thể đi đến một nơi. Là người mới bắt đầu, tôi không chắc chắn có cách DỄ DÀNG để viết mã xuất ra hai địa điểm. Cách tôi sẽ làm điều đó là bằng cách thực hiện biến thể của riêng tôi của ostream mà viết đến hai nơi cùng một lúc. Nhưng đó là hầu như không bắt đầu mã hóa. –