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

question-closed Problem z odczytem pliku lekcja 7

VPS Starter Arubacloud
+1 głos
387 wizyt
pytanie zadane 15 kwietnia 2015 w C i C++ przez falauthy Stary wyjadacz (11,550 p.)
zamknięte 16 kwietnia 2015 przez falauthy

Cześć,

Postawnowiłem dalej męczyć programowanie po kilku dniach przerwy (kolokwia na uczelni) i zabrałem się za odcinek nr 7. Chodzi o odczyt pliku. Gdy chcę wczytać plik, to wyskakuje mi opcja "Plik nie istnieje", a problem w tym, że istnieje. Jest on w folderze z projektem, są zapisane 3 linijki, kod podobny jak u Pana Mirosława, ale nie chcę działac. Jakieś pomysły?

#include <iostream>
#include <fstream> //do plikow
#include <cstdlib>

using namespace std;

string imie, nazwisko, linia;
int nrTelefonu, nrLinii=1;
fstream plik;

int main()
{
    plik.open("wizytkowka.txt", ios::in);

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

    while(getline(plik, linia))
    {
        switch(nrLinii)
        {
            case 1: imie = linia; break;
            case 2: nazwisko = linia; break;
            case 3: nrTelefonu = atoi(linia.c_str()); break;
        }
        nrLinii++;
    }
    cout<< imie << endl;
    cout << nazwisko << endl;
    cout << nrTelefonu << endl;

    plik.close();
    return 0;
}

 

komentarz zamknięcia: Problem rozwiązany.

10 odpowiedzi

+1 głos
odpowiedź 15 kwietnia 2015 przez Kelmac Gaduła (3,970 p.)
wybrane 15 kwietnia 2015 przez falauthy
 
Najlepsza
Plik musi się znajdować albo w katalogu skąd odpalasz EXE albo w projekcie gdzie go kompilujes zi odpalasz
komentarz 15 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
Dałem go najpierw tam gdzie exe, to nie działa, później wrzuciłem tam gdzie plik cpp i też nie działa.
komentarz 16 kwietnia 2015 przez Kelmac Gaduła (3,970 p.)
Sprawdź czy w Windowsie nie masz ukrytego rozszerzenia plików, bo jak stworzyśz plik wizytkowka.txt to faktycznie amsz wizytkowka.txt.txt . (Wielkośc liter ma znaczenie  - ale chybaa wiesz)
komentarz 16 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
Problem rozwiązany. :)
+1 głos
odpowiedź 15 kwietnia 2015 przez Kelmac Gaduła (3,970 p.)
Nie masz  tego pliku   otwartego w innym programie (np notatnik)??. Możesz nie mieć uprawnień do otwaracia tego pliku
0 głosów
odpowiedź 15 kwietnia 2015 przez Ehlert Ekspert (212,630 p.)
edycja 15 kwietnia 2015 przez Ehlert

1. Czy plik jest w folderze z plikiem main.cpp?
2. Czy nie nazwałeś pliku plik.txt.txt?

 

int main()
{
	fstream plik("wizytkowka.txt", ios::in);

	if (plik.good())
	{
		cout << "Plik istnieje!";

		while (std::getline(plik, linia))
		{
			switch (nrLinii)
			{
			case 1: imie = linia; break;
			case 2: nazwisko = linia; break;
			case 3: nrTelefonu = atoi(linia.c_str()); break;
			}
			nrLinii++;
		}
		cout << imie << endl;
		cout << nazwisko << endl;
		cout << nrTelefonu << endl;
	}
	else
	{
		cout << "error!";
	}

	plik.close();
	return 0;
}


 

komentarz 15 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
1. Tak

2. Nie.
komentarz 15 kwietnia 2015 przez Ehlert Ekspert (212,630 p.)

napisałeś/łaś wizytkowka, sprawdź  czy nie ma literówki.

komentarz 15 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
W folderze jest tak samo nazwany.
komentarz 15 kwietnia 2015 przez Ehlert Ekspert (212,630 p.)

Dziwna sprawa mi też nie działa frown

komentarz 15 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
Właśnie mnie to też dziwi. :/
0 głosów
odpowiedź 15 kwietnia 2015 przez daan Pasjonat (17,640 p.)
a czy nie powinno byc wizytowka.txt ? bo cos mi literówką pachnie :D
komentarz 15 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
To chyba nie ma znaczenia. :p Znaczy no plik w folderze mam też nazwany jak w kodzie.
komentarz 15 kwietnia 2015 przez daan Pasjonat (17,640 p.)
dodaj biblioteke <string> :) (po dodaniu u mnie w visual studio dziala plik znajduje się razem z plikiem main.cpp)
komentarz 15 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
Też nie to. Program ogólnie działa, ale w konsoli wywala mi, że plik nie istnieje.
komentarz 15 kwietnia 2015 przez daan Pasjonat (17,640 p.)
no to musisz mieć w takim razie literówke, bo skopiowałem twój kod, skompilowałem u siebie, błędy powodał na początku brak <string> dodałem i otworzył mi plik o takiej nazwie i wypisał to co tam wpisałem :)
komentarz 15 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
Zmieniłem literówkę, dodałem string i dalej to samo. U Pana Mirosława nie ma nawet tej biblioteki.
komentarz 15 kwietnia 2015 przez daan Pasjonat (17,640 p.)
Prawdopodobnie MinGW gdzieś ją sam dodał albo coś :) kompilator visual studio nie pozwoli nawet wypisać string na cout bez biblioteki :D w każdym razie kod jest poprawny, nie wiem narazie co może być przyczyną
0 głosów
odpowiedź 15 kwietnia 2015 przez Aress Mądrala (6,410 p.)
a jak wejdziesz we wlasciwosci tego pliku tekstowego tam jest rozszerzenie napisz jakie masz
komentarz 15 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
We własciwościach mam .txt
komentarz 15 kwietnia 2015 przez Aress Mądrala (6,410 p.)
popraw nazwe pliku i ajki typ bo to ze w nazwie jest wizytowka.txt to znaczy ze twoj plik nazywa sie wizytowka.txt.txt.

 

a zeby normalnie bylo to musisz w nazwie miec "wizytowka" a w typie

Dokument tekstowy (.txt)
komentarz 15 kwietnia 2015 przez daan Pasjonat (17,640 p.)
to zależy czy ma włączone pokazywanie rozszerzeń plików w nazwie :)
komentarz 15 kwietnia 2015 przez Aress Mądrala (6,410 p.)
no masz racje ale skoro nie dziala to stwierdzilem ze moze w druga strone :P

warto sprobowac, dlatego ladnie to opisalem

Po za tym plik powinien byc tam gdzie plik main.cpp
0 głosów
odpowiedź 15 kwietnia 2015 przez Aress Mądrala (6,410 p.)

masz problem z tym plikiem nie z kodem bo u mne dziala normalnie i dobrze otwiera

 

#include <iostream>
#include <fstream> //do plikow
#include <cstdlib>

using namespace std;

string imie, nazwisko, linia;
int nrTelefonu, nrLinii=1;
fstream plik;

int main()
{
    plik.open("Wizytowka.txt", ios::in);

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

    while(getline(plik, linia))
    {
        switch(nrLinii)
        {
            case 1: imie = linia; break;
            case 2: nazwisko = linia; break;
            case 3: nrTelefonu = atoi(linia.c_str()); break;
        }
        nrLinii++;
    }
    cout<< imie << endl;
    cout << nazwisko << endl;
    cout << nrTelefonu << endl;

    plik.close();
    return 0;
}

 

0 głosów
odpowiedź 15 kwietnia 2015 przez Kelmac Gaduła (3,970 p.)
Skopiuj plik tam gdzie masz program wykonywalny, i ten program odpal normlanie, nie przez IDE
0 głosów
odpowiedź 15 kwietnia 2015 przez bossik21 Mądrala (5,750 p.)

U mnie ten twoj program działa...


wizytkowka.txt :

 

Konsola:

 

 

Ewntualnei wrzuć plik do katalogu w którym masz plik (wizytkowka.txt)   do katalogu gdzie masz skompilowaną wersję programu.

 

Jeżeli nie zadziałą to podaj pęłną ściężkę  do pliku wizytkoka.txt .

0 głosów
odpowiedź 15 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
Dooobra Panowie mój błąd. Jednak problem z katalogiem - powinienem iść do okulisty. :D Dzięki wszystkim za pomoc. ^^
–1 głos
odpowiedź 15 kwietnia 2015 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Hehe, masz plik "wizytKowka.txt" w programie, zamiast "wizytowka.txt" :D
komentarz 15 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
To nie o to chodzi. :)

Podobne pytania

0 głosów
1 odpowiedź 118 wizyt
0 głosów
0 odpowiedzi 162 wizyt
pytanie zadane 5 października 2020 w C i C++ przez user4132 Nowicjusz (170 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...