2015-07-18 3 views
0
  • Я сделал программу с помощью которой можно добавлять записи в файл является заказ, но отображение файла после добавления записи в не работает.
  • Если я добавлю «| ios :: app» в «instream fo», чтобы открыть файл в append , отображение «fin» работает.Отображение содержимого файла в C++

  • Почему это так? Я с помощью mingw4.8.1


#include<fstream> 
#include<iostream> 
#include<stdio.h> 
class c{ 
    public: 
    int r; 
    char nm[20]; 
}; 

using namespace std; 

int main() 

{ 

    c a,b; 
    ifstream fi("old.txt",ios::binary); 
    ofstream fo("new.txt",ios::binary); // if |ios::app is added here, the 
            // display by fin below is working fine 

    cout<<"Enter roll\t"; 
    cin>>b.r; 
    cout<<"Enter name\t"; 
    fflush(stdin); 
    gets(b.nm); 
    int w=0; 
    while(true) 
    { 
     fi.read((char *)&a,sizeof(a)); 
     if(fi.eof()) break; 
     if(b.r<a.r&&w==0) 
     { 
      fo.write((char *)&b,sizeof(b)); 
      w++; 
     } 
     else 
      fo.write((char *)&a,sizeof(a)); 
    } 

    ifstream fin("new.txt",ios::binary); // this is not working of the //ios:: is not added in the ofstream fo 
    while(true) 
    { 
     fin.read((char *)&a,sizeof(a)); 
     if(fin.eof()) break; 
     cout<<a.r<<endl; 
     puts(a.nm); 
    } 
    return 0; 
} 
+0

Если вы не дают нам [минимальный полный пример] (http://stackoverflow.com/help/mcve), мы должны сделать дополнительные прежде чем мы сможем даже попытаться помочь вам. – Beta

ответ

0

Это мое понимание того, что если вы используете IOS :: приложение, которое вы должны также указать Ios :: ПРИМЕРЬТЕ ИОС :: приложение | ios :: out | ios :: binary и посмотреть, поможет ли это.

+0

Да, это работает, но я действительно не хочу добавлять какие-либо данные, вместо этого я добавляю запись между ними (в порядке увеличения числа ордеров) и код для отображения записей не работает, спасибо:) –

1

Это правильный код ближе всего к тому, что вы хотите

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

struct c { 
    int roll; 
    string name; 
}; 

int main() { 
    c a, b; 
    ifstream fi("old.txt"); 
    ofstream fo("new.txt"); 
    cout << "Enter roll no. and name" << endl; 
    cin >> b.roll >> b.name; 
    while (fi >> a.roll >> a.name) { 
     if (b.roll < a.roll) 
      fo << b.roll << " " << b.name << endl; 
     else 
      fo << a.roll << " " << a.name << endl; 
    } 
    fi.close(); 
    fo.close(); 
    ifstream fin("new.txt"); 
    while (fin >> a.roll >> a.name) 
     cout << a.roll << " " << a.name << endl; 
    fin.close(); 
    return 0; 
} 
+0

спасибо, :), но что делать, если мы должны это сделать, открыв файл в двоичном режиме. –

+0

@PriyalKumar. Читайте ответы здесь http://stackoverflow.com/q/6262189/2425366. – Shreevardhan

Смежные вопросы