Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C++ - Komunikaty C++ nie wyświetlają się

Werpet 29 Sie 2016 15:11 1296 12
  • #1 29 Sie 2016 15:11
    Werpet
    Poziom 4  

    Witam wszystkich, zrobiłem program, który zapisuje w pliku tekstowym pobrane przez nas dane. Mam jeden problem. Potrzebuję aby program wyświetlał komunikat kiedy taki plik tekstowy już istnieje np. "Plik tekstowy o tej nazwie już istnieje". Próbowałem na wiele sposobów, ale bez skutku :(. Jest w stanie ktoś pomóc lub jakoś nakierować? Z góry dziękuję za pomoc.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 12
  • #2 29 Sie 2016 15:51
    Dilril
    Poziom 6  

    A w jaki sposób działa ta fukcja "zapis"? Nadaje nazwę pliku, czy zapisuje te zmienne do pliku "dane.txt"?

    0
  • #3 29 Sie 2016 18:11
    Werpet
    Poziom 4  

    ofstream zapis("dane.txt"); - nadaje nazwę pliku
    zapis<<a<<" "<<b<<" "<<c; - treść zapisywana w w/w pliku
    zapis.close(); - zamknięcie

    0
  • #4 29 Sie 2016 18:45
    mi14chal
    Poziom 28  

    Jak chcesz sprawdzić czy plik istnieje spróbuj go otworzyć do czytania. Skoro korzystasz z C++ to nie używaj tablicy char'ów tylko klasy string.

    0
  • #5 29 Sie 2016 19:04
    Werpet
    Poziom 4  

    Ja potrzebuję komunikat o tym czy plik już istnieje, jeżeli go nie ma to go tworzy. Nie potrzebuję czytać pliku.

    0
  • #6 29 Sie 2016 20:15
    mi14chal
    Poziom 28  

    Nikt ci nie każe czytać nic z pliku. Jeżeli uda się otworzyć plik do czytania to znaczy, że istnieje, w przeciwnym razie nie istnieje. Skoro tego nie chcesz robić a aplikacja ma działać na windows to możesz użyć tej funkcji https://msdn.microsoft.com/en-us/library/ms960701.aspx jak zwróci 0xFFFFFFFF to znaczy że nie istnieje.

    0
  • #7 29 Sie 2016 20:21
    Werpet
    Poziom 4  

    Plik się tworzy i zapisują się w nim informacje i go widzę. Po prostu kiedy plik już istnieje w danej ścieżce potrzebuje komunikatu "Plik już istnieje".

    0
  • #8 29 Sie 2016 20:28
    mi14chal
    Poziom 28  

    To sprawdź czy plik istnieje już w tym wątku podałem dwa sposoby. A o if else pewnie słyszałeś więc w czym problem?

    0
  • #9 30 Sie 2016 08:20
    Dilril
    Poziom 6  

    A jeśli to nie wchodzi w grę, to użyć jakiejś tablicy, w której zapisane będą nazwy już powstałych plików. Nazwy można zapisać w pliku np. txt właśnie, a program po uruchomieniu będzie z niego korzystał, jak z bazy danych.
    Tylko że to dość zawiły sposób.

    0
  • #10 30 Sie 2016 08:44
    yarel79
    Poziom 6  

    Możesz stworzyć sobie funkcję, która sprawdza czy plik o danej nazwie istnieje, np.:

    Code:

    #include <fstream>

    bool czyPlikIstnieje (const std::string& nazwa) {
        std::ifstream f(nazwa.c_str());   // C++98
        return f.good();
    }

    0
  • #11 07 Wrz 2016 01:46
    EmbeddedProgramming
    Poziom 8  

    Kolega, skoro piszesz w C++ to przy nim staraj się pozostać, teraz używasz jakiejś mieszanki C i C++, gdy tak zaczniesz naukę to w przyszłości będzie tylko gorzej, przy nauce C++ zacznij już od C++11/14, w kodzie poniżej używam starego standardu, żebyś wszystko zrozumiał.

    Jeżeli nie doszedłeś do programowania obiektowego to zapakuj sobie te dane chociaż w strukturę.

    Staraj się też zadbać o to, aby kod był czytelny. Popatrz na mój kod - robi to samo, ale nawet ktoś kto nie ogarnia programowania zrozumie o co chodzi. Radzę też nie wyrabiać sobie nawyku nadawania zmiennym nazw w innym języku niż angielski.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    A tutaj masz funkcję którą sprawdzisz czy plik istnieje.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #12 07 Wrz 2016 10:40
    mi14chal
    Poziom 28  

    EmbeddedProgramming napisał:
    przy nauce C++ zacznij już od C++11/14

    To czemu nie użyłeś smart pointerów? Tylko zwykłych wskaźników?

    0
  • #13 07 Wrz 2016 13:57
    EmbeddedProgramming
    Poziom 8  

    mi14chal napisał:
    EmbeddedProgramming napisał:
    przy nauce C++ zacznij już od C++11/14

    To czemu nie użyłeś smart pointerów? Tylko zwykłych wskaźników?

    Jak napisałem w poście - użytkownik może tego nie zrozumieć, więc tego nie zrobiłem tylko, żeby zaczynał się uczyć od początku. Przed odpowiedzią na czyjś post radzę go po prostu przeczytać dokładnie. Wyraźnie zaznaczyłem, że użyłem starego standardu.

    0