首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算C++中的行数并添加当前编号的新行

如何计算C++中的行数并添加当前编号的新行
EN

Stack Overflow用户
提问于 2022-02-09 12:40:38
回答 1查看 129关注 0票数 -3

我知道有很多关于它的话题,但我有一个问题。

我有这样的密码。

代码语言:javascript
复制
    void ADDAso()
    {
    fstream file;
    int n, number=0;
    file.open("Asortymenty.txt", ios::in| ios::out| ios::app);
    string line;
    while(getline(file, line)) number++;
    cout<<"Ile Asortymentow chcesz wprowadzic do bazy: ";
    cin>>n;
    DaneAso tab_aso[n];
    if(file.good())
    {
        int i=0;
        do
        {
            cout<<"\nWporwadz Kod Asortymentu "<<i+1<<": ";
            cin>>tab_aso[i].kod;
            cout<<"Wprowadz Nazwe Asortymentu "<<i+1<<": ";
            cin>>tab_aso[i].nazwa;
            cout<<"Wprowadz Jednostke miary "<<i+1<<":";
            cin>>tab_aso[i].jm;
            file <<number++<<";";
            file <<tab_aso[i].kod<<";";
            file <<tab_aso[i].nazwa<<";";
            file <<tab_aso[i].jm<<";"<<endl;
            i++;
        }
        while(i<n);
    }
    else cout<<"\tFILE IS BROKEN!!\n";
    plik.close();
    system("pause");
    }

结束后,我尝试使用它,它说文件是坏的。主要是读取现有文件,计算其行数,并添加当前编号的新行。

@molbdnilo

这是我的全部密码。请给我看看我该换什么。

代码语言:javascript
复制
#include <iostream>
#include <fstream>
#include <windows.h>
#include <conio.h>
#include <vector>

using namespace std;


struct DaneAso
{
    char kod[10];
    char nazwa[50];
    char jm[3];
};
struct Stany
{
    char ilosc[10];
};
void menu()
{
    cout<<"\t\t\tMENU GLOWNE\n\n\n";
    cout<<"\t\t1. Wprowadz Asortyment do systemu\n";
    cout<<"\t\t2. Wyswietl baze Asortymentow\n";
    cout<<"\t\t3. Wstaw Towar na magazyn\n";
    cout<<"\t\t4. Wydaj Towar z magazynu\n";
    cout<<"\t\t5. Obecne stany magazynowe\n";
    cout<<"\t\t6. Wyjdz\n";
}

void DodajAso()
{
    fstream plik;
    int n, numer=0;
    plik.open("Asortymenty.txt", ios::in| ios::out| ios::app);
    cout<<"Ile Asortymentow chcesz wprowadzic do bazy: ";
    cin>>n;
    DaneAso tab_aso[n];
    if(plik.good())
    {
        string linia;
        while(getline(plik, linia)) numer++;
        int i=0;
        do
        {
            cout<<"\nWporwadz Kod Asortymentu "<<i+1<<": ";
            cin>>tab_aso[i].kod;
            cout<<"Wprowadz Nazwe Asortymentu "<<i+1<<": ";
            cin>>tab_aso[i].nazwa;
            cout<<"Wprowadz Jednostke miary "<<i+1<<":";
            cin>>tab_aso[i].jm;
            plik <<numer++<<";";
            plik <<tab_aso[i].kod<<";";
            plik <<tab_aso[i].nazwa<<";";
            plik <<tab_aso[i].jm<<";"<<endl;
            i++;
        }
        while(i<n);
    }
    else cout<<"\tPLIK ZOSTAL USZKODZONY!!\n";
    plik.close();
    system("pause");
}
void WyswietlAso(string Asortymenty)
{
    char linia[50],slowo,litera;
    bool znak=0;
    ifstream otworz;
    cout<<"Numer           Kod             Nazwa           Jednostka Miary"<<endl;
    otworz.open(Asortymenty);
    while(!otworz.eof())
    {
        for(int i=0;i<4;i++)
        {
            for(int j=0;j<23;j++)
            {
                otworz >> litera;
                if(litera!=';')
                    cout << litera;
                else
                    for (int k=j;k<16;k++)
                    {
                        cout << " ";
                        j=24;
                    }
            }
        }
        cout << endl;
    }
    otworz.close();
    cout << endl<<endl;
    system("pause");
}

void DodajStan(string Asortymenty, string stany)
{
    bool znak=0;
    char linia[50],slowo,litera;
    ifstream otworz;
    cout<<"Numer           Kod             Nazwa           Jednostka Miary"<<endl;
    otworz.open(Asortymenty);
    while(!otworz.eof())
    {
        for(int i=0;i<4;i++)
        {
            for(int j=0;j<23;j++)
            {
                otworz >> litera;
                if(litera!=';')
                    cout << litera;
                else
                    for (int k=j;k<16;k++)
                    {
                        cout << " ";
                        j=24;
                    }
            }
        }
        cout << endl;
    }
    otworz.close();
    cout << endl<<endl;
    cout<<"\nWybierz z listy ktory asortyment chcesz wprowadzic na magazyn\n\n";
    fstream plik;
    plik.open("stany.txt", ios::in| ios::out| ios::app);
    if(plik.good())
    {

    }
    plik.close();
    system("pause");
}
void ZdejmijStan()
{

}
void WyswietlStan(string stany)
{
    char linia[50],slowo,litera;
    bool znak=0;
    int index=0;
    ifstream otworz;
    otworz.open("stany.txt");
    while(!otworz.eof())
    {
        for(int i=0;i<4;i++)
        {
            for(int j=0;j<23;j++)
            {
                otworz >> litera;
                if(litera!=';')
                    cout << litera;
                else
                    for (int k=j;k<22;k++)
                    {
                        cout << " ";
                        j=24;
                    }
            }
        }
        cout << endl;
    }
    otworz.close();
    cout << endl<<endl;
    system("pause");
}

int main()
{
    SetConsoleTitleA("Ksiega Inwentarzowa");
    string wybor;
    bool running = true;
    while(running)
    {
        cout<<"Program wspomagajacy zarzadzanie ksiega inwentarzowa\n\n\n";
        menu();
        cout<<"\n\n\tWybierz co chcesz zrobic: ";
        cin>>wybor;
        if(wybor == "6")
        {
            cout<<"\n\n\tDziekuje za korzystanie z programu\n\n";
            system("pause");
            return 0;
        }
        else if(wybor == "1")
        {
            DodajAso();
        }
        else if(wybor == "2")
        {
            WyswietlAso("Asortymenty.txt");
        }
        else if(wybor == "3")
        {
            DodajStan("Asortymenty.txt", "stany.txt");
        }
        else if(wybor == "4")
        {
            ZdejmijStan();
        }
        else if(wybor == "5")
        {
            WyswietlStan("stany.txt");
        }
        else
        {
            cout<<"\tWybrales zla opcje, wcisnij poprawny przycisk\n\n";
            system("pause");
        }
    system("cls");
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-02-09 13:14:38

我成功做到了。

我所要做的就是使用file.clear();after while函数。

谢谢你的帮忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71049813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档