Я не могу скопировать содержимое файла в другой, используя fstream в c ++ (кодовые блоки).Как я могу запустить файл? - PullRequest
1 голос
/ 19 марта 2019

Я пытался скопировать из одного файла в другой, но я не получаю вывод в конце программы, которая работает без каких-либо ошибок. Сначала в следующей программе я попытался создать файл (details.txt) с именем содержимого, rollno, age и т. Д. Эта часть кода, кажется, работает. Кажется, что остальная часть программы не работает вообще, а именно: создать второй файл и скопировать содержимое файла в текстовый файл с указателем на символ. Позже переместите файл во второй файл (detailscpy.txt). Я попробовал некоторые решения по указанию моего учителя, но, похоже, это не сработало.

  #include<iostream>
#include<fstream>

using namespace std;
int main()
{
    char name[25];
    char rollno[25];
    int age;
    char nation[20];
    char course[30];
    char* textfile;
    fstream file;
    fstream filecpy;


    cout<<"Enter your name: ";
    cin.getline(name,25);
    cout<<"Enter the course you have enrolled: ";
    cin.getline(course,30);
    cout<<"Enter your rollno: ";
    cin.getline(rollno,20);
    cout<<"Enter your age: ";
    cin>>age;
    cout<<"Enter your nationality: ";
    cin>>nation;


    file.open("details.txt",ios::out);
    if(!file)
    {
      cout<<"Error in creating file.."<<endl;
      return 0;
    }
    cout<<"File created successfully"<<endl;
    file<<name<<endl<<rollno<<endl<<age<<endl<<nation<<endl<<course;

file.close();

    filecpy.open("detailscpy.txt",ios::out);
    if(!filecpy)
    {
        cout<<"error is creating a copy file"<<endl;
        return 0;
    }
    cout<<"Copy file created successfully"<<endl;

   file.open("details.txt", ios::in );

    while(file)
    {


        file>>textfile;
        cout<<textfile;

        filecpy<<textfile<<endl;
    }

        file.close();

    filecpy.close();

    return 0;


}



enter code here

1 Ответ

1 голос
/ 19 марта 2019

Вы не выделили памяти для вашего указателя char* textfile;.Не думайте, что это произойдет автоматически.Поэтому, поскольку вы используете неинициализированный указатель, ваш код имеет неопределенное поведение, я удивлен, что он не аварийно завершился.

Один простой и простой способ скопировать файл - это делать его по одному символу за раз.

char ch;
while (file.get(ch)) // read one character
{
    filecpy.put(ch); // and write it out
}
...