文件流输入和输出
方案一:使用freopen进行输入输出
#include<iostream> #include<string> #include<cstdlib> #include<ctime> using namespace std; #define MIN 0 #define MAX 9 class Winning_information{ private: string first_price,second_price[2],third_price[5]; public: void get_information(); void put_information(); }; void Winning_information::get_information() { int n=0; string number="1871"; string num[10],numb[10]; freopen("D:\\1program\\CPP\\data.txt","w",stdout); for(int i=0;i<10;i++){ srand(n); num[i]=number; for(int j=0;j<7;j++){ num[i].push_back(MIN+rand()%(MAX-MIN+1)+'0'); n++; } num[i].push_back('\n'); } for(int i=0;i<10;i++){ cout<<num[i]; } freopen("D:\\1program\\CPP\\data.txt","r",stdin); for(int i=0;i<10;i++){ cin>>numb[i]; numb[i].pop_back(); } //fclose(stdout); //fclose(stdin); freopen("CON", "r", stdin); freopen("CON", "w", stdout); int winner[8],x; srand((unsigned)time(NULL)); for (int i = 0; i < 8; i++) { x = MIN+rand()%(MAX-MIN+1); for (int j = 0; j < i; j++) while (x == winner[j]) { x = MIN+rand()%(MAX-MIN+1); j = 0; } winner[i] = x; } first_price=numb[winner[0]]; for(int i=0;i<2;i++){ second_price[i]=numb[winner[i+1]]; } for(int i=0;i<5;i++){ third_price[i]=numb[winner[i+3]]; } } void Winning_information::put_information() { cout<<"The first price is "<<endl; cout<<first_price<<endl; cout<<"The second price is "<<endl; for(int i=0;i<2;i++) cout<<second_price[i]<<endl; cout<<"The third price is "<<endl; for(int i=0;i<5;i++) cout<<third_price[i]<<endl; } int main() { Winning_information one; one.get_information(); cout<<"请输入任意键"<<endl; getchar(); one.put_information(); return 0; }
用fclose显示句柄无效,并报错An invalid parameter was passed to a function that considers invalid parameters fatal
尝试将cin与cout重定向到键盘可行
方案二:利用FILE指针与fwrite和fread
#include<iostream> #include<string> #include<cstdlib> #include<ctime> #include<fstream> using namespace std; #define MIN 0 #define MAX 9 class Winning_information{ private: string first_price,second_price[2],third_price[5]; public: void get_information(); void put_information(); }; void Winning_information::get_information() { char b[110]={'0'},a[120]={'\0'}; srand((unsigned)time(NULL)); FILE *f=fopen("D:\\1program\\CPP\\data.txt","w"); for(int i=0;i<10;i++){ b[11*i]='1';b[11*i+1]='8';b[11*i+2]='7';b[11*i+3]='1'; } for(int i=1;i<=110;i++){ if((i%11!=4)&&(i%11!=1)&&(i%11!=2)&&(i%11!=3)){ b[i-1]=(rand()%10+'0'); } } for(int i=0;i<10;i++){ fwrite((b+i*11),sizeof(char),11,f); fwrite("\n",1,1,f); } fclose(f); FILE *fp=fopen("D:\\1program\\CPP\\data.txt","r"); for(int i=0;i<120;i++){ fread(a,sizeof(char),120,fp); } fclose(f); int winner[8],x; srand((unsigned)time(NULL)); for (int i = 0; i < 8; i++) { x = MIN+rand()%(MAX-MIN+1); for (int j = 0; j < i; j++) while (x == winner[j]) { x = MIN+rand()%(MAX-MIN+1); j = 0; } winner[i] = x; } for(int j=0;j<11;j++){ first_price.push_back(a[winner[0]*12+j]); } for(int i=0;i<2;i++){ for(int j=0;j<11;j++) second_price[i].push_back(a[winner[i+1]*12+j]); } for(int i=0;i<5;i++){ for(int j=0;j<11;j++) third_price[i].push_back(a[winner[i+3]*12+j]); } } void Winning_information::put_information() { cout<<"The first price is "<<endl; cout<<first_price<<endl; cout<<"The second price is "<<endl; for(int i=0;i<2;i++) cout<<second_price[i]<<endl; cout<<"The third price is "<<endl; for(int i=0;i<5;i++) cout<<third_price[i]<<endl; } int main() { Winning_information one; one.get_information(); cout<<"请输入任意键"<<endl; getchar(); one.put_information(); return 0; }
方案三:使用fstream库中的ofstream与ifstream
#include<iostream> #include<string> #include<cstdlib> #include<ctime> #include<fstream> using namespace std; #define MIN 0 #define MAX 9 class Winning_information{ private: string first_price,second_price[2],third_price[5]; public: void get_information(); void put_information(); }; void Winning_information::get_information() { ofstream out("D:\\1program\\CPP\\data.txt"); ifstream in("D:\\1program\\CPP\\data.txt"); int n=0; string number="1871"; string num[10]; Winning_information one; for(int i=0;i<10;i++){ srand(n); out<<number; for(int j=0;j<7;j++){ out<<MIN+rand()%(MAX-MIN+1); } out<<endl; n++; } for(int i=0;i<10;i++){ in>>num[i]; } out.close(); in.close(); int winner[8],x; srand((unsigned)time(NULL)); for (int i = 0; i < 8; i++) { x = MIN+rand()%(MAX-MIN+1); for (int j = 0; j < i; j++) while (x == winner[j]) { x = MIN+rand()%(MAX-MIN+1); j = 0; } winner[i] = x; } first_price=num[winner[0]]; for(int i=0;i<2;i++){ second_price[i]=num[winner[i+1]]; } for(int i=0;i<5;i++){ third_price[i]=num[winner[i+3]]; } } void Winning_information::put_information() { cout<<"The first price is "<<endl; cout<<first_price<<endl; cout<<"The second price is "<<endl; for(int i=0;i<2;i++) cout<<second_price[i]<<endl; cout<<"The third price is "<<endl; for(int i=0;i<5;i++) cout<<third_price[i]<<endl; } int main() { Winning_information one; one.get_information(); system("pause"); one.put_information(); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下