Чтение файла и использование toupper - PullRequest
0 голосов
/ 01 апреля 2020

Я хотел бы создать программу, которая читает указанный файл c, показывает его пользователю, а затем делает каждую букву в этом файле большой (например, k-> K), используя to_upper, и снова показывает ее пользователю. Я не знаю, что не так с моим кодом, но он показывает некоторые ошибки.

    using namespace std;
    void to save(){
        fstream plik;
        string napis;
        char z;
        plik.open("name_of_the_file.txt", ios::out | ios::in);
            if(plik.good()){
            cout << "File before using to upper: " << endl;
                while(!plik.eof()) {
                plik >> napis;
                cout << napis << endl;
                }
            cout << "File after using to upper: " << endl;
                while(!plik.eof(z)) {
                    plik.put(toupper(z));
                }
                }
                plik.close();
                }

int main(){

    save();

return (0);
}

Я знаю, какие библиотеки мне следует использовать, я просто не знаю, как разместить их здесь.

1 Ответ

0 голосов
/ 01 апреля 2020

Попробуйте,

#include<iostream>
#include<fstream>
#include<stdlib.h>

using std::cout;
using std::ios;
using std::endl;

void save()
{
    std::fstream plik,temp;
    char z;

    plik.open("my.txt");
    temp.open("temp",std::fstream::trunc|std::fstream::out);

    if(!temp)
    {
        cout<<"File Error";
        exit(1);
    }
    else
    {
        temp.close();
        temp.open("temp");
        if(!temp)
        {
            cout<<"File Error";
            exit(1);
        }
    }

    if(plik.is_open())
    {
    cout << "File before using to upper: " << endl;

    while(plik.get(z))
    {
       cout<<z;
       temp.put(toupper(z));
    }

    cout<<endl;

    plik.clear();
    plik.seekg(0,ios::beg);
    plik.seekp(0,ios::beg);

    temp.clear();
    temp.seekg(0,ios::beg);
    temp.seekp(0,ios::beg);

    while(temp.get(z))
    {
        plik.put(z);
    }

    temp.close();
    remove("temp");

    plik.clear();
    plik.seekg(0,ios::beg);
    plik.seekp(0,ios::beg);

    cout << "File after using to upper: " << endl;

    while(plik.get(z))
    {
       cout<<z;
    }
    }
    else
    {
        cout<<"File Error";
        exit(1);
    }
    plik.close();
}

int main()
{
save();
return (0);
}
...