• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

program nie może otworzyć plików

Object Storage Arubacloud
0 głosów
426 wizyt
pytanie zadane 29 listopada 2020 w C i C++ przez kiuyama Nowicjusz (190 p.)

Muszę napisać program analizujący czy podany graf nieskierowany jest dwudzielny czy nie. Problem polega na tym, że program nie jest w stanie otworzyć podanych plików. Próbowałem zapisywać je w folderze projektu jak i w folderze z plikiem exe, ale nic to nie daje. Projekt jest podzielony na pliki Header, funkcje i main. Próbowałem również utworzyć projekt w jednym pliku, na nic sie to zdało. Przypuszczam, że jest to jakiś banalny błąd, aczkolwiek nie jestem w stanie go wychwycić... Program uruchamia się w konsoli w następujący sposób: graf_dwudzielny.exe -i Graf.txt -o Wynik.txt

 Oto kod:

#include <iostream>
#include <list>
#include <vector>
#include <sstream>
#include <fstream>
#include <string>
#include <locale.h>;

using namespace std;

struct Parametry {
    string Graf, Wynik;
};

bool Parsuj(Parametry& p, const vector<string>& params) {
    if (!params.size())
        return false;
    for (int i = 0; i < params.size() - 1; ++i)
        if (params[i] == "-i")
            p.Graf = params[++i];
        else if (params[i] == "-o")
            p.Wynik = params[++i];

    return p.Graf != "" && p.Wynik != "";
}

int przepisz(const string& Graf, const string& Wynik, vector<list<int>>& graf) {
    ifstream in(Graf);
    if (!in)
    {
        cerr << "Nie mozna otworzyc pliku " << Graf << "\n";
        return 1;
    }

    ofstream out(Wynik);
    if (!out)
    {
        cerr << "Nie mozna otworzyc pliku " << Wynik << "\n";
        return 1;
    }
}

int main(int argc, char* argv[]) {
    setlocale(LC_ALL, "polish");

    vector<list<int>> graf;
    vector<int> połączone;

    vector<string> parametry;
    for (int i = 1; i < argc; ++i)
    {
        parametry.push_back(argv[i]);
    }

    Parametry p;
    if (!Parsuj(p, parametry))
    {
        cerr << "Bledne parametry\n";
        cerr << "Uzyj: " << argv[0] << " -i <plik wejściowy> -o <plik wyjściowy>\n";
        return 1;
    }

    przepisz(p.Graf, p.Wynik, graf);

}
komentarz 29 listopada 2020 przez kiuyama Nowicjusz (190 p.)

Pozmieniałem już nazwy plików na takie z małymi literami, w samym programie również.

komentarz 29 listopada 2020 przez tkz Nałogowiec (42,000 p.)

Co? Dlaczego zmieniałeś cokolwiek w kodzie? 

Po wykonaniu polecenia tworzy się "Wynik.txt"

komentarz 30 listopada 2020 przez kiuyama Nowicjusz (190 p.)
ehh... nie mam pojęcia. Jeżeli u ciebie wszystko działa, a posiadasz dokładnie ten sam kod, to nie wiem co może być przyczyną. Spróbuję zainstalować visual studio od nowa.
komentarz 30 listopada 2020 przez tkz Nałogowiec (42,000 p.)
Czekaj, czekaj. graf_dwudzielny.exe -i Graf.txt -o Wynik.txt. Pierwszy argument jest wielką literą, w folderze jest małą.
komentarz 30 listopada 2020 przez kiuyama Nowicjusz (190 p.)
Wcześniej było wszystko z dużej i nie działało, więc zmieniłem tam gdzie trzeba litery z dużych na małe i postarałem się, żeby inne nazwy się bardziej różniły. Nic to nie dało. Wykonywałem kod linijka po linijce, a i tak przy próbie otworzenia pliku tekstowego wywala ten błąd.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 164 wizyt
pytanie zadane 10 stycznia 2018 w C i C++ przez Artur313 Użytkownik (790 p.)
0 głosów
0 odpowiedzi 173 wizyt
pytanie zadane 22 czerwca 2020 w C i C++ przez Nabuchadonozor Gaduła (3,120 p.)
0 głosów
1 odpowiedź 186 wizyt
pytanie zadane 11 marca 2017 w C i C++ przez Meltern Początkujący (440 p.)

92,572 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...