Argument argv w funkcji

0

witam wszystkich piszę program który na starcie ma klika argumentów. 2 pliki i 2 jakieś tam inne. argumenty mogą być podawane w różnej kolejności. gdy podaje jakiś argument do funkcji po sprawdzeniu czy to plik wyskakuje mi błąd
could not convert '(argv + ((sizetype)(((unsigned int)argument) * 4u)))' from 'char' to 'std::fstream {aka std::basic_fstream<char>}'|


i mam problem jak zrobić żeby w funkcja która rozpoznaje po spacjach do której tablicy struktur wpierdzielić te dane. Z góry dziękuję za pomoc #include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
#define EXIT_INVALID_ARG 2

using namespace std;

int funkcja(fstream plik){
    int spacje=0;
    string dane;
    getline(plik,dane);

        for(int i=0;i<dane.length();i++){
            if(dane[i]==' ') spacje++;

        }
        if(spacje==4){
                for(int i=0;i<dane.length();i++){
            if(dane[i]==' ') spacje++;}

}
return spacje;}

int main(int argc,char *argv[]){
fstream plik;

struct dane {

    string imie;
    string nazwisko[30];
    char NrKarty[20];
    float zadluzenie;
    string oznaczenie;};

    dane ludzie[100];

struct waluty{

    string oznaczenie;
    string nazwa;
    float KDE;//kurs do Euro
    float KDD;};// kurs do dolara };
    waluty pieniadze[100];

if(argc==4){

for(int argument=1;argument<=argc;argument++){
        plik.open(argv[argument],ios::in);

        if(plik.good()==true){
            cout<<funkcja(argv[argument]);}


        else break;
        plik.close();
                                            }
            }
else cout<<"Program nalezy uruchomic podajac trzy argumenty"<<endl;

}

0
    struct waluty{
 
        string oznaczenie;
        string nazwa;
        float KDE;//kurs do Euro
        float KDD;};// kurs do dolara };
        waluty pieniadze[100];

brak mi słów.

struct waluty
{
    string oznaczenie;
    string nazwa;
    float KDE; //kurs do Euro
    float KDD; // kurs do dolara
};

waluty pieniadze[100];

albo w tym przypadku nawet tak:

struct waluty
{
    string oznaczenie;
    string nazwa;
    float KDE; //kurs do Euro
    float KDD; // kurs do dolara
} pieniadze[100];
0

a czy mógłbym poprosić o pomoc bardziej rzeczową, nie wszyscy mają taki sam charakter pisma jak i kodowania

2
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
#define EXIT_INVALID_ARG 2

using namespace std;

struct dane
{
    string imie;
    string nazwisko[30];
    char NrKarty[20];
    float zadluzenie;
    string oznaczenie;
};

struct waluty
{

    string oznaczenie;
    string nazwa;
    float KDE;
    float KDD;
};


int funkcja(fstream& plik);

int main(int argc,char *argv[])
{
    fstream plik;
    dane ludzie[100];
    waluty pieniadze[100];
    if(argc==4)
    {
        for(int argument=1; argument<=argc; argument++)
        {
            plik.open(argv[argument],ios::in);
            if(plik.good()==true)
            {
                cout<<funkcja(plik);
            }
            else
            {
                break;
            }
            plik.close();
        }
    }
    else cout<<"Program nalezy uruchomic podajac trzy argumenty"<<endl;
}

int funkcja(fstream& plik)
{
    int spacje=0;
    string dane;
    getline(plik,dane);
    for(int i=0; i<dane.length(); i++)
    {
        if(dane[i]==' ') spacje++;
    }
    if(spacje==4)
    {
        for(int i=0; i<dane.length(); i++)
        {
            if(dane[i]==' ') spacje++;
        }
    }
    return spacje;
}

Główne błędy były 3:

  1. Piszesz kod niechlujnie.
  2. Masz funkcje która chce przyjmować fstream a pchałeś tam argv[argument] czyli const char* co też ci napisal wyraźnie kompilator...
  3. Chciałeś wepchnąć do funkcji KOPIĘ fstreama a powineneś referencje do niego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1