无法从 turbo c 程序中的文件中检索文件数据
Unable to retrieve file data from file in turbo c program
好的,现在我正在使用文件流在 turbo c / DOSBOX 中尝试一个非常基本的程序。我注意到我的 ofstream 变量在将数据写入文件时工作正常,但问题在于检索数据。由于某种原因,ifstream 变量无法正常工作,或者此处用于检索文件数据的方法可能不正确。如果你能帮我解决这个问题,请与我联系。
这是我的代码:-
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<fstream.h>
void main()
{
char user[20],pin[10];
ofstream fout("TEMP");
ifstream fin("TEMP");
clrscr();
fin>>user;
cout<<"Username : "<<user;
cout<<"\nEnter username.\n";
gets(user);
cout<<"Enter pin.\n";
cin>>pin;
fout<<"Username : "<<user<<endl<<"Pin : "<<pin;
cout<<"\nUsername : "<<user;
getch();
}
我输入的数据是:
用户名=dragonis。
引脚 = 123.
一切都完美地存储在文件中。但是在检索的时候,在程序开头给cout的时候,并没有username的输出。它是空白的。
这里的问题可能是您同时打开同一个文件两次。这几乎肯定会失败,使 fin
处于不良状态并导致您的提取失败而没有采取任何措施。
不清楚你在这里试图完成什么——目前你只从文件中读取一个单词(你显示然后丢弃的用户名),并且你写入不同格式的数据,希望覆盖旧数据。但如果这确实是您想要做的,您应该使 fin
和 fout
的生命周期不重叠,以便文件在重新打开之前关闭:
char user[20],pin[10];
{
ifstream fin("TEMP");
clrscr();
fin>>user;
cout<<"Username : "<<user;
cout<<"\nEnter username.\n";
gets(user);
cout<<"Enter pin.\n";
cin>>pin;
}
{
ofstream fout("TEMP");
fout<<"Username : "<<user<<endl<<"Pin : "<<pin;
cout<<"\nUsername : "<<user;
}
由于局部变量在超出范围时会被销毁,这保证了文件在重新打开写入之前关闭以供读取。
您也可以将其作为 fstream
打开,它同时支持输入和输出,但我感觉您已经没有做您想做的事情,所以我认为保持输入和最好分开输出。
好的,现在我正在使用文件流在 turbo c / DOSBOX 中尝试一个非常基本的程序。我注意到我的 ofstream 变量在将数据写入文件时工作正常,但问题在于检索数据。由于某种原因,ifstream 变量无法正常工作,或者此处用于检索文件数据的方法可能不正确。如果你能帮我解决这个问题,请与我联系。
这是我的代码:-
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<fstream.h>
void main()
{
char user[20],pin[10];
ofstream fout("TEMP");
ifstream fin("TEMP");
clrscr();
fin>>user;
cout<<"Username : "<<user;
cout<<"\nEnter username.\n";
gets(user);
cout<<"Enter pin.\n";
cin>>pin;
fout<<"Username : "<<user<<endl<<"Pin : "<<pin;
cout<<"\nUsername : "<<user;
getch();
}
我输入的数据是: 用户名=dragonis。 引脚 = 123.
一切都完美地存储在文件中。但是在检索的时候,在程序开头给cout的时候,并没有username的输出。它是空白的。
这里的问题可能是您同时打开同一个文件两次。这几乎肯定会失败,使 fin
处于不良状态并导致您的提取失败而没有采取任何措施。
不清楚你在这里试图完成什么——目前你只从文件中读取一个单词(你显示然后丢弃的用户名),并且你写入不同格式的数据,希望覆盖旧数据。但如果这确实是您想要做的,您应该使 fin
和 fout
的生命周期不重叠,以便文件在重新打开之前关闭:
char user[20],pin[10];
{
ifstream fin("TEMP");
clrscr();
fin>>user;
cout<<"Username : "<<user;
cout<<"\nEnter username.\n";
gets(user);
cout<<"Enter pin.\n";
cin>>pin;
}
{
ofstream fout("TEMP");
fout<<"Username : "<<user<<endl<<"Pin : "<<pin;
cout<<"\nUsername : "<<user;
}
由于局部变量在超出范围时会被销毁,这保证了文件在重新打开写入之前关闭以供读取。
您也可以将其作为 fstream
打开,它同时支持输入和输出,但我感觉您已经没有做您想做的事情,所以我认为保持输入和最好分开输出。