无法从 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 处于不良状态并导致您的提取失败而没有采取任何措施。

不清楚你在这里试图完成什么——目前你只从文件中读取一个单词(你显示然后丢弃的用户名),并且你写入不同格式的数据,希望覆盖旧数据。但如果这确实是您想要做的,您应该使 finfout 的生命周期不重叠,以便文件在重新打开之前关闭:

   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 打开,它同时支持输入和输出,但我感觉您已经没有做您想做的事情,所以我认为保持输入和最好分开输出。