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

zwraca wartość 0 po uruchomieniu

Object Storage Arubacloud
+1 głos
126 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ź 949 wizyt
pytanie zadane 23 maja 2020 w Offtop przez SiekamCebule Początkujący (370 p.)
0 głosów
0 odpowiedzi 135 wizyt
0 głosów
2 odpowiedzi 1,982 wizyt
pytanie zadane 22 października 2017 w Grafika i multimedia przez KamQiX Dyskutant (9,090 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...