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

zwraca wartość 0 po uruchomieniu

Cloud VPS
+1 głos
205 wizyt
pytanie zadane 20 kwietnia 2016 w C i C++ przez hhubert Początkujący (250 p.)
Witam, bardzo przepraszam jak jest to jakiś banalny błąd ale zaczynam dopiero programować. Bardzo dziękuje za pomoc. Napisałem program razem z kursem Pana Mirosława ale po uruchomieniu program zwraca mi wartość 0, czy ktoś by mógł zobaczyć gdzie leży błąd?

 

#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

string imie, nazwisko;
int nr_tel;

int main()
{

    fstream plik;
    plik.open("wizytowka.txt",ios::in);

    if(plik.good()==false)
    {
        cout<<"Podany plik nie istnieje!";
        exit(0);
    }

    string linia;
    int nr_lini=1;
    while(getline(plik,linia))
    {
        switch(nr_lini)
        {
            case1: imie=linia; break;
            case2: nazwisko=linia; break;
            case3: nr_tel= atoi(linia.c_str()); break;
        }
        nr_lini++;

    }

    plik.close();
    plik.clear();

    cout<<imie<<endl;
    cout<<nazwisko<<endl;
    cout<<nr_tel<<endl;

    return 0;
}

1 odpowiedź

+1 głos
odpowiedź 20 kwietnia 2016 przez Sebastian Fojcik Nałogowiec (43,040 p.)
wybrane 20 kwietnia 2016 przez hhubert
 
Najlepsza
Program napisany poprawnie. Najprawdopodobniej w katalogu z programem nie istnieje plik "wizytowka.txt" I wtedy program się kończy. Upewnij się, że tam gdzie znajduje się plik .EXE Twojego programu jest również wizytowka.txt.
komentarz 20 kwietnia 2016 przez hhubert Początkujący (250 p.)
Jest sprawdzałem kilka razy, to nie tu tkwi błąd.
komentarz 20 kwietnia 2016 przez Sebastian Fojcik Nałogowiec (43,040 p.)

Przed końcem programu, czyli przed return 0; dodaj linijkę system("pause"); i sprawdź czy program się zatrzyma. Jeśli się nie zatrzyma i zakończy z wynikiem 0, to znaczy, że plik się nie otwiera poprawnie, bo jedyne miejsce gdzie program mógłby sie wcześniej skończyć, to właśnie ten warunek:

if(plik.good()==false)

 

komentarz 20 kwietnia 2016 przez hhubert Początkujący (250 p.)
Zatrzymuje się i jest napisane naciśnij dowolny klawisz i zaraz program się kończy i znów wyskakuje wartość 0, zmieniłem nazwę pliku z txt. na exe i zmieniło się o tyle że wyskakuje polecenie że podany plik nie istnieje. Nie wiem czy dobrze myślę ale czy może to być wina kompilatora?
komentarz 20 kwietnia 2016 przez Sebastian Fojcik Nałogowiec (43,040 p.)

Na Twój komputer zajrzeć nie mogę, więc nie stwierdzę, że to wina kompilatora. Niestety nie jestem jasnowidzącą wróżką zębuszką :-(

Mogę natomiast skomentować to co widzę. Czyli kod, które przesłałeś. Jest on napisany poprawnie i u mnie po skompilowaniu działa jak należy. Jeśli w katalogu z projektem znajduje się plik
wizytowka.txt
a w tym pliku: w pierwszej linijce imię, w drugiej nazwisko, a w trzeciej numer, to podany wyżej program powinien działać.

Napisz dla testu jakiś prostszy program. Stwórz plik "test.txt" i zapisz w nim "Ala ma kota". Następnie uruchom taki programik:

#include <fstream>
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
    fstream plik;
    plik.open( "test.txt", ios::in );
    string linia;
    
    getline( plik, linia );
    cout << linia << endl;

    system( "pause" );
    return 0;
}

Powyższy program jest tak prosty, że nie ma prawa nie zadziałać. Powinien wypisać zawartość pierwszej linijki pliku "test.txt"

komentarz 20 kwietnia 2016 przez hhubert Początkujący (250 p.)
Działa, super teraz trochę popracuje nad programem i powinienem sobie jakoś poradzić. Dziękuję za odpowiedz :)

Podobne pytania

+1 głos
1 odpowiedź 1,107 wizyt
pytanie zadane 23 maja 2020 w Offtop przez SiekamCebule Początkujący (370 p.)
0 głosów
0 odpowiedzi 168 wizyt
0 głosów
2 odpowiedzi 2,401 wizyt
pytanie zadane 22 października 2017 w Grafika i multimedia przez KamQiX Dyskutant (9,090 p.)

93,457 zapytań

142,452 odpowiedzi

322,722 komentarzy

62,837 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

Kursy INF.02 i INF.03
...